2026 年 6 月初,微软官方 GitHub 账号下 73 个开源包被 GitHub 自动系统拦截并禁用。研究人员称,这些包里出现了 Miasma 凭据窃取蠕虫。微软的公开说法更克制:已临时移除部分仓库,正在调查“潜在恶意内容”。
这件事反常的地方在于,攻击不是从一个陌生包名开始,而是从可信账号、合法发布流程和 AI 编程代理的工作路径里钻出来。
如果开发者只是手动下载一个可疑包,很多团队还有机会停一下。可当 Claude Code、Gemini CLI、Cursor、VS Code 这类 AI 编程代理打开、读取、索引甚至执行项目文件时,触发点就变了。
主线很清楚:供应链风险正在从“你装了什么包”,扩展到“谁替你打开和运行了这个包”。
为什么 73 个微软包会被判定恶意
GitHub 对外使用的是平台处置语言,比如违反服务条款。它没有公开把这 73 个包定性为恶意包。
研究人员的判断更具体:相关包中包含可自我复制的 Miasma 载荷。包被打开后,载荷可尝试窃取云账号、本地开发配置和各类凭据,并向其他项目或环境传播。
这不是一个普通用户“点错链接”的问题。它直接打到开发者和企业 DevSecOps 团队的工作台上。
| 关键信息 | 已知情况 | 对开发者和企业的影响 |
|---|---|---|
| 时间 | 2026 年 6 月初 | 相关仓库和依赖需要回溯排查 |
| 范围 | 微软官方 GitHub 账号下 73 个包 | 可信账号会降低人工警惕 |
| 平台处置 | GitHub 自动系统拦截并禁用 | 不能只等平台通知,内部也要查 |
| 研究人员判断 | 包内含 Miasma 凭据窃取蠕虫 | 应按凭据可能外泄处理 |
| 可窃取对象 | AWS、Azure、GCP、Kubernetes、密码管理器,以及 90 多类开发工具配置 | 云权限、发布权限、CI/CD 权限都要纳入排查 |
| 触发场景 | Claude Code、Gemini CLI、Cursor、VS Code 等 AI 编程代理打开包 | AI 工具的读取和执行边界要重新设定 |
还有一个背景不能忽略。
数周前,同一微软 GitHub 账号已卷入过一次供应链事件。5 月,微软 durabletask Python SDK 在 PyPI 上曾被攻陷。该包用于构建容错工作流和编排任务,月下载量约 40 万次。安全公司 StepSecurity 当时称,攻击者通过微软发布凭据污染了包版本。
这里不能直接下结论说微软完整入侵路径已经查明。原文也没有给出确定答案。
但连续两次指向同一类问题,至少说明一件事:开发者不能再把“大厂官方账号”当成最后一道安全边界。门牌是真的,不代表货物就一定干净。
这次风险为什么比普通恶意包更难拦
OIDC 和 SLSA 不是漏洞。
OIDC 的价值,是让 CI/CD 流程少用长期密钥。SLSA provenance 的价值,是证明构建过程和来源。它们本来是供应链安全的基础设施。
真正的问题是信任模型被滥用了。一旦攻击者拿到合法维护者身份,系统看到的可能就是一次合规发布:可信账号、可信流程、可信来源证明。
这和早年的恶意包套路不太一样。
| 攻击类型 | 常见做法 | 防护重点 | 这次的麻烦 |
|---|---|---|---|
| 拼写相似包 | 用近似包名骗安装 | 包名审核、下载源控制 | 较容易通过命名和来源发现异常 |
| 依赖混淆 | 让构建系统拉到攻击者包 | 私有源优先级、版本锁定 | 重点在依赖解析规则 |
| 可信账号被滥用 | 用合法凭据发布污染包 | 账号、发布权限、CI/CD 身份治理 | 包来源本身看起来可信 |
| AI 代理触发 | 代理打开、读取、索引或执行项目文件 | 代理权限边界、终端监控、凭据隔离 | 人未必手动运行,代理可能替人跨过一步 |
Miasma 还会生成每次感染不同的加密载荷。这会削弱基于哈希的 IOC 检测。
换句话说,安全团队如果只拿固定文件哈希去扫,可能会漏。更现实的做法,是看行为:异常访问云凭据、读取密码管理器配置、触碰 Kubernetes 配置、调用包发布权限、在多个项目目录间复制自身。
AI 编程代理让这个问题更棘手。
过去,很多团队的默认假设是:代码被执行前,总有人按下回车。现在代理可能会读项目、总结代码、安装依赖、运行测试、调用命令。效率提高是真的,安全边界变模糊也是真的。
我更在意的是,这类攻击不需要说服开发者“信一个陌生人”。它只需要让开发者继续相信自己平时已经相信的东西:官方仓库、自动构建、来源证明、AI 助手。
使用过相关包的团队该怎么处理
目前看不清完整入侵路径。可能是 5 月事件后的凭据没有彻底轮换,也可能是新的开发者环境被窃取了凭据。现有信息不足以把原因钉死。
但处置不能等到原因完全查明。对使用过这 73 个包的开发者和企业,更稳妥的判断是:按已失陷处理。
最相关的两类人要立刻改动作。
一类是使用 GitHub、npm、PyPI,并让 AI 编程代理接触项目目录的开发者。短期内,应暂停让代理处理来源不明或刚被披露的问题包,检查本机是否暴露云凭据、包发布 token、Kubernetes 配置和密码管理器相关文件。
另一类是企业 DevSecOps 和云安全团队。不要只查“谁安装了包”。还要查 AI 代理、IDE、终端、CI runner 有没有读取或执行相关目录。
可以按这张表收口:
| 排查项 | 具体动作 | 现实限制 |
|---|---|---|
| 云凭据 | 轮换 AWS、Azure、GCP 访问密钥,审计近期异常调用 | 轮换会影响自动化任务,需要先标出关键服务 |
| GitHub 与包发布权限 | 检查 GitHub Actions、发布 token、npm/PyPI 权限和最近发布记录 | 不要只看主账号,机器人账号也要查 |
| Kubernetes | 检查 kubeconfig、服务账号 token、异常 API 调用 | 很多团队把 kubeconfig 放在开发机上,风险容易被低估 |
| 密码管理器与开发工具 | 查看相关配置是否被访问,检查 90 多类开发工具配置是否暴露 | 不一定有完整访问日志,只能结合终端和 EDR 行为判断 |
| AI 编程代理 | 限制代理可读目录、命令执行权限和凭据访问范围 | 会牺牲便利性,需要给不同项目分级 |
采购和平台团队也会受影响。
如果企业已经在评估 AI 编程代理,采购决策不一定要停,但安全验收要前移。过去问的是“模型好不好用、代码补全准不准”。现在还要问:代理能读哪些目录,能不能执行命令,日志能不能审计,是否默认接触云凭据。
这不是把 AI 编程代理妖魔化。现实约束是,很多团队已经离不开它。更可行的做法,是把代理当成一个能操作终端的开发者账号,而不是一个无害的文本工具。
接下来最该看的不是还会不会爆出更多包。那个数字当然重要,但不是根因。
更关键的变量有三个:微软和平台能否说明凭据滥用链路;GitHub、PyPI 等生态能否把“可信发布”和“可信行为”分开判断;企业能否把 AI 代理纳入终端、身份和 CI/CD 的统一审计。
回到开头那 73 个包,真正刺眼的不是数量。刺眼的是它们看起来本该被信任。
