Tech

GitHub 在 2026 年 5 月被黑:18 分钟就足够了 —— 这对你意味着什么(以及本周末要养成的 7 个习惯)

2026 年 5 月 18 日,一个被植入后门的 VS Code 扩展上架不到 20 分钟,就足以窃取约 3800 个 GitHub 内部代码库。这里讲清楚到底发生了什么、为什么就算你不在 GitHub 工作也与你有关,以及本周末要养成的 7 个习惯。

免责声明。 这是一篇科普文,不是针对你个人的安全建议。涉及关键决策(大规模密钥轮换、事后复盘、向监管机构报告)时,请咨询专业人士。所有来源列在文末——GitHub 官方声明、安全公告 nrwl/nx-console GHSA-c9j4-9m59-847w、2026 年 5 月的专业媒体报道。


18 分钟。

仅此而已。

2026 年 5 月 18 日 12:30 UTC,一个被 220 万开发者使用的 VS Code 扩展,发布了一个被植入后门的更新。到 12:48,它被下架。

在这之间,成千上万台开发者的机器自动收到了恶意载荷(payload)——其中包括一名 GitHub 员工的机器。

48 小时后的结果:约 3800 个 GitHub 内部代码库被克隆并外泄。

不是客户的仓库。不是 Enterprise。不是你的数据。但它向每一个用 2026 年技术栈(VS Code 或 Cursor + GitHub + npm + 一点 AWS)打造事业的独立开发者传递的信息是:你的 IDE 已经成了你最薄弱的一环。

而没有人会替你把它守住。


到底发生了什么

罪魁祸首叫 TeamPCP(Google Threat Intelligence 以代号 UNC6780 追踪)。攻击载体是 Nx Console v18.95.0 的一个被植入后门的版本——这是 Angular/Nx 生态里很受欢迎的一个 Visual Studio Code 扩展。

让这件事真正值得玩味的,不是最终那次入侵,而是上游的整条链路。

TanStack 被攻陷(npm 包,2026 年 4–5 月)
        ↓ 窃取某位 Nx 开发者的 GitHub 凭据
向官方仓库 nrwl/nx-console 推送恶意提交
        ↓
在 Visual Studio Marketplace 发布 Nx Console 18.95.0
(由正规发布者签名 —— Nrwl)
        ↓
在成千上万台机器上静默自动更新
        ↓
窃取 GitHub、npm、AWS、HashiCorp Vault、Kubernetes、1Password 的令牌
        ↓
在其中 1 台机器上 = 一名 GitHub 员工:克隆约 3800 个内部仓库

要记住三点:

1. 发布者是正规的。 Nrwl 的签名什么都没拦住。被黑的不是应用市场,而是上游源代码通过被盗凭据遭到篡改。如果你以为「已验证发布者 = 安全」,那一页该翻过去了。

2. 这个载荷还盯上了 AI 工具。 被瞄准的文件之一是 ~/.claude/settings.json。据我所知,这是最早被记录在案、明确针对 AI 助手配置的载荷之一。同样适用于 Cursor(~/.cursor/)、Continue,以及任何装在你 home 目录、带有令牌的东西。

3. 同一周,同时发生。 另一场被称为 「Megalodon」 的攻击,在 5561 个公开仓库中注入了恶意的 GitHub Actions 工作流,全部发生在 5 月 18 日、6 个小时之内。官方说法不是同一伙人。但同一周、同一生态、同样的压力。

这已经不再是一起事件。这是一种气候。


为什么这与你有关(即使你没装 Nx Console)

你心里想:「我又不用 Nx,与我无关。」这正是盲区。

你装过的任何一个 VS Code 或 Cursor 扩展,明天都可能收到一个被植入后门的更新。 自动更新默认是静默的。你可能一觉醒来,IDE 里就多了一个载荷,而你哪儿都没点过。

如果你还在 IDE 之间犹豫,想搞清楚 Cursor 那边的取舍,我在《2026 年 Cursor 3 vs Windsurf》里详细写过。

还有那种更阴险的间接情形:你的 npm 传递依赖。如果你的技术栈用了 TanStack Query、React Query、Router、Form 或 Table,那么你最近几周的构建有可能拉取了被污染的版本。在你的 Vercel runner 上,你的 GitHub 令牌和 Vercel 令牌可能已经以明文形式发到了攻击者的服务器——而你还在淡定地 git push

这就是 2026 年的威胁模型:你不再需要点一个可疑链接。你只要存在于这个生态里就够了。


真正的教训:你的 IDE 不再是工具,而是一道边界

15 年来,我们在心里把「正经的代码」(仓库、GitHub、服务器)和「个人的舒适区」(IDE 及其插件)分开。IDE 是温馨的角落。

这个时代结束了。

你的 IDE:

  • 读你的 ~/.ssh/
  • 读你的 gh auth 令牌和 npm 令牌,
  • 在每次扩展更新时执行任意代码,
  • 带着你早已忘记的密钥执行 git pushterraform apply
  • 通常还接了一个 AI 智能体,它同样能读你的文件。

微软在 2026 年 5 月 22 日做出回应,在 VS Code 中启用了 Device Protection:默认情况下,任何在过去 48 小时内发布的包或扩展都会被禁止安装,并自动回退到上一个安全版本。同一天,GitHub 在 npm 上推出了 staged publishing(CLI 11.15.0 中的 npm stage publish):被盗的 CI 令牌再也无法独自发布,还需要一次人工的 2FA 批准。

两个有用的补丁。但如果你没更新、用的是 Cursor/Windsurf(它们还没有 Device Protection),或者攻击来自别处,它们都保护不了你。

结论:你必须把你的开发机当成一个风险区,而不是一台私人电脑。


本周末就能养成的 7 个习惯

这些不是企业级工程。它们是单人就能做的动作,这个周六就能完成。从最简单到最具结构性排列。

1. 列出你的扩展,砍掉一半

老实看一遍清单。那些你不是每周都用的?卸载,而不是禁用。被禁用的扩展,代码还留在你机器上;卸载掉的才真正消失。

剩下的,快速看一眼发布者(publisher)。如果名字你完全没印象,就去 GitHub 上查一查。一个只有 200 次安装、发布者匿名、却能访问你工作区的扩展,是为了一点点表面舒适而承担的巨大风险。

2. 关掉自动更新,给自己设一个隔离期

个人规则:扩展发布后的 48 小时内一律不更新。想自动化?设置里加一行 "extensions.autoUpdate": false,然后逐个决定。

这正是微软刚刚设为默认的做法。别等了,自己先用起来。Nx Console 18 分钟就够了。48 小时的隔离期能在 99% 的情况下保护你。

3. 整理你的 GitHub 令牌

如果你还有经典的 Personal Access Tokenghp_...),这个周末就删掉它们。改为创建 fine-grained PAT

  • 范围限定到一两个具体仓库,
  • 有效期最长 90 天,
  • 权限最小化。

对于你的 CI/CD(Vercel、GitHub Actions、AWS),改用 OIDC:你的 runner 在每次构建时用一个短期 JWT 换取 AWS 凭据。再也没有四处散落的长期令牌。

如果你向 npm 发布,本周就启用 staged publishing。免费、官方,正是 GitHub 针对这次入侵给出的回应。

如果「MFA + SSH 密钥 + 干净的令牌」这套基础你还没打好,先从保护你的开发账户开始——这是其他一切赖以成立的地基。

4. 把工作区与你的机器分开

你的私人机器里有你的 SSH、你的密码、你的照片、你的人生。为什么你那个用来折腾的 IDE 要跑在同一个地方?

按你的水平,有三种选择:

  • 最简单 —— VS Code Dev Containers。 你在一个 Docker 容器里写代码,它看不到你的 ~/.ssh,也看不到你的全局凭据。被植入后门的扩展即便发作,也被困在容器里。配置:30 分钟。
  • 进阶 —— 一台专用虚拟机。 Multipass、UTM(Mac)、WSL2 或 Hyper-V(Windows)、VirtualBox(全平台)。每周五打快照,出问题就回滚。
  • 最严格 —— 第二台物理机,只用于关键业务代码(部署、签名密钥、管理员账户)。一台 200€ 的翻新旧机器就够了。

5. 阻止你自己的密钥泄露

有几款免费工具会在每次提交前于本地扫描你的代码,拦下被遗忘的密钥(API 密钥、令牌、密码)。

2026 年最扎实的三款:gitleaks(最轻量,100% 开源)、GitGuardian 的 ggshield(覆盖 550+ 种密钥类型,需要免费账号,支持 Cursor + Claude Code 钩子)、TruffleHog(会检查检测到的密钥是否仍然有效)。

三者都能在 Windows、Mac 和 Linux 上运行。如果你是新手,从 ggshield 或 gitleaks 开始——5 分钟装好。

6. 把你的「传家宝」搬出 GitHub

这是最激进的一步,也是真正改变威胁模型的一步。

你的数据并非都同等重要。你博客的仓库可以留在 GitHub。但你的专有代码(你正在做的 SaaS、你的 Terraform 配置、带凭据的 playbook、你拿去卖的模板)——为什么要放在一个刚刚证明自己可以被 IDE 扩展攻陷的第三方基础设施上?

正经的选择:在一台 5–10€/月的 VPS 上自托管 Forgejo(Gitea 的自由分支)或 Gitea,或者用 Codeberg(由一家德国非营利组织托管的免费实例,非常适合开源)。

注意:配置不当的自托管 = 只是把风险挪了个地方。读一读加固(hardening)文档,从一开始就启用 2FA + 仅 SSH 密钥。

7. 布置几个免费的哨兵

你没有 SOC。但 GitHub 免费给了你足以提前察觉的东西:

  • 在你所有私有仓库上开启 Secret Scanning Alerts(自 2023 年起免费)。在 Settings → Code security 里启用。
  • 在你所有活跃仓库上开启 Dependabot Security Updates
  • 对任何来自陌生设备的新登录开启邮件提醒
  • 一份扩展日志:一个带日期的简单文件 extensions-audit-YYYY-MM-DD.txt,每月 1 号归档一次。下次有扩展被攻陷时,你能把自己的暴露时间精确到分钟。

如果你只做一件事,至少做这些

你有 30 分钟。顺序如下:

  1. 列出你的扩展(code --list-extensions --show-versions)→ 把结果存档。
  2. settings.json 里设 "extensions.autoUpdate": false
  3. 把经典 PAT 换成 fine-grained,有效期最长 90 天。
  4. 在你的仓库上启用 Secret Scanning + Dependabot。
  5. 把关键密钥备份到 GitHub 之外(在外置硬盘上放一个 age 加密的文件就够了)。

为什么我要在这里讲这件事

因为 CodingQueen40 的方法——「在 40 岁后用 2026 年的工具打造你的科技事业」——如果我们还把网络安全当成专家话题,就不再成立了。它已经成了一项经营技能。

一个独立创业者一旦 GitHub 账户被掏空,就会失去她的代码,如果邮箱绑定了甚至失去她的域名,如果博客被篡改就失去她的受众,还有连续数周的收入。

第 20–21 周的这次入侵不是孤立事件。它是新的基准线。 TeamPCP 在 2026 年已经发动了 20 波有记录的攻击。还会有更多。

我们唯一能动的杠杆,就是在属于我们自己的边界上行动:我们的工作机、我们的令牌、我们的备份。

祝你有个安全的周末。开始吧。


主要来源

  • GitHub Blog — Strengthening supply chain security: Preparing for the next malware campaign(2026 年 5 月)
  • GitHub Advisory GHSA-c9j4-9m59-847wCompromised Nx Console version 18.95.0
  • Nx Devtools(官方 X/Twitter)— SECURITY ADVISORY: A malicious version of Nx Console v18.95.0 was published today at 2:36 PM CEST(2026 年 5 月 18 日)
  • The Hacker News — GitHub Internal Repositories Breached via Malicious Nx Console VS Code Extension(2026 年 5 月 20 日)
  • The Hacker News — npm Adds 2FA-Gated Publishing and Package Install Controls Against Supply Chain Attacks(2026 年 5 月)
  • Help Net Security — TeamPCP breached GitHub's internal codebase via poisoned VS Code extension(2026 年 5 月 20 日)
  • Help Net Security — GitHub, Grafana Labs breaches traced back to TanStack supply chain compromise(2026 年 5 月 21 日)
  • BleepingComputer — GitHub confirms breach of 3,800 repos via malicious VSCode extension
  • SecurityWeek — Over 5,500 GitHub Repositories Infected in 'Megalodon' Supply Chain Attack
  • TechCrunch — GitHub says hackers stole data from thousands of internal repositories(2026 年 5 月 20 日)
  • StepSecurity — Nx Console VS Code Extension Compromised
  • Palo Alto Unit 42 — The npm Threat Landscape: Attack Surface and Mitigations(2026 年 5 月 21 日更新)
  • VS Code Docs — Extension runtime security
  • Forgejo Documentation — forgejo.org/docs/
  • gitleaks — github.com/gitleaks/gitleaks

写于 2026 年 5 月 28 日。形势每周都在变——采取任何关键行动前,请核实 GitHub 官方来源和 Nx 安全公告。


更多实用指南,请见 Tech 板块