🔴 严重 | CVE-2026-46412 — @beproduct/nestjs-auth is a NestJS authentication ...
🔴 【深度分析】严重安全漏洞:CVE-2026-46412
CVSS 评分: 严重(10.0)🔴 状态: Awaiting Analysis 发布时间: 2026-07-20
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-46412 |
| CVSS 评分 | 10.0 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| CWE 分类 | CWE-506 |
| 发布时间 | 2026-07-20 |
| 最后更新 | 2026-07-23 |
| 状态 | Awaiting Analysis |
| 数据来源 | security-advisories@github.com |
⚠️ CVSS 评分:10.0(严重)
CVSS 向量: AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
危害等级: 紧急,建议立即采取行动
漏洞概述
CVE-2026-46412 涉及 NestJS 认证模块 @beproduct/nestjs-auth 的供应链投毒事件。攻击者利用泄露的 npm 发布令牌,在 2026-05-11 短时间内连续发布了 18 个恶意版本(0.1.2 ~ 0.1.19)。这些版本在 postinstall 脚本中植入蠕虫型恶意负载,旨在窃取开发环境中的敏感凭证(包括 npm 令牌、GitHub 令牌、AWS 凭证、Vault 令牌等),并通过自动化 agent 向 PR 分支提交恶意配置文件,形成横向传播。该漏洞影响所有使用上述版本的开发环境,且 CVSS 达到满分 10.0,攻击复杂度低、无需权限、可完全控制受害者系统。
受影响组件与版本
| 组件 | 包名 | 受影响版本范围 | 修复版本 |
|---|---|---|---|
| NestJS 认证模块 | @beproduct/nestjs-auth |
>=0.1.2 <=0.1.19(18个版本) |
0.1.20(基于原 0.1.1 源码重新发布) |
注意:0.1.1 及更早版本不受影响,但所有安装过恶意版本的环境均视为受感染。
漏洞原理分析
攻击链
- 凭证泄露:攻击者获取了合法的 npm 发布令牌(可能通过钓鱼、密码泄露或 CI/CD 环境暴露)。
- 恶意版本发布:在 2026-05-11 20:19~22:56 UTC 期间,攻击者利用该令牌向 npm registry 推送了 18 个版本(0.1.2 至 0.1.19),每个版本均包含定制的
postinstall脚本。 - 自动执行:当用户执行
npm install @beproduct/nestjs-auth(或作为依赖被安装)时,npm 自动运行postinstall钩子,触发恶意负载。 - 数据窃取:脚本扫描以下敏感信息并外传:
- npm 发布令牌(
~/.npmrc) - GitHub 个人访问令牌(PAT)、OAuth 令牌(
gho_*模式)以及 Actions OIDC 令牌 - AWS 访问密钥(环境变量
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY及~/.aws/credentials) - HashiCorp Vault 令牌
- 其他所有环境变量中的秘密
- npm 发布令牌(
- 横向移动:蠕虫进一步侵入 CI/CD 管道或开发环境,通过自动化 agent 将
setup.mjs及钩子配置文件提交到 PR 分支,感染更多仓库。
技术细节
现有公开信息未披露恶意脚本的具体实现代码,但根据描述可知其利用了 postinstall 作为载体,并具备自我复制(worm)能力。OIDC 令牌的窃取表明攻击者可劫持 GitHub Actions 流水线,进一步扩大影响范围。
影响评估
攻击复杂度(AC:L)
无需特殊条件,攻击者只需在 npm 上发布恶意包,任何用户执行 install 即可触发。
权限要求(PR:N)
无需用户具有管理员身份,普通开发者的 npm install 操作即可触发。
攻击向量(AV:N)
完全通过网络远程触发,受害者仅需连接互联网并执行安装命令。
利用条件
- 受害环境必须安装
@beproduct/nestjs-auth的恶意版本(作为直接依赖或间接依赖)。 - 无需用户交互(UI:N)。
潜在后果
- 凭证泄露:npm、GitHub、AWS、Vault 等核心凭证外泄,导致攻击者能够冒充合法用户访问云服务、代码仓库、机密管理。
- 供应链污染:蠕虫自动向 PR 分支提交恶意代码,感染更多下游项目,形成连锁反应。
- 主机完全失陷:若检测到感染,建议重新镜像,因为攻击者可能已植入后门或持久化机制。
- 影响范围:所有使用
@beproduct/nestjs-auth的 NestJS 项目及其依赖链上的环境均受威胁。
修复建议
紧急措施(必须立即执行)
- 移除恶意包并清理缓存
npm uninstall @beproduct/nestjs-auth npm cache clean --force - 安装安全版本
npm install @beproduct/nestjs-auth@0.1.20 - 立即轮换所有受影响凭证
- 所有 npm 发布令牌(需在 npm 官网重新生成)
- 所有 GitHub PAT 和 OAuth 令牌(删除并新建)
- AWS 访问密钥(停用旧密钥,生成新密钥)
- HashiCorp Vault 令牌(撤销并重新签发)
- 所有在安装时存在于环境变量或配置文件中的秘密(数据库密码、API 密钥等)
深度排查
- 扫描主机感染指标(IoC)
- 检查是否有非预期的
setup.mjs文件 - 检查
.claude/和.vscode/目录中是否存在计划外的配置文件 - 使用安全工具(如 ClamAV、YARA)扫描可疑进程或网络连接
- 检查是否有非预期的
- 检查 Git 历史
- 查看仓库 PR 分支或提交历史是否存在未知的
setup.mjs或钩子配置
- 查看仓库 PR 分支或提交历史是否存在未知的
- 视为完全失陷
- 如果在主机发现任何 IoC,应立即重装系统或重建容器/虚拟机
长期防护
- 启用 npm 2FA 并限制发布令牌的权限
- 对 CI/CD 环境实施最小权限原则,避免使用永久凭证
- 监控 npm 软件包更新,使用锁文件(package-lock.json)并审计
postinstall脚本 - 部署供应链接入控制(如 npm audit、Socket.dev)
参考资料
| 类型 | 链接/编号 |
|---|---|
| CVE 详情 | https://nvd.nist.gov/vuln/detail/CVE-2026-46412 |
| CWE | CWE-506(植入恶意代码) |
| NVD 页面 | 同上 |
| GitHub Advisory | 待官方发布(security-advisories@github.com) |
| 安全公告 | 建议关注 @beproduct/nestjs-auth 仓库维护者后续公告 |
⚠️ 注意:本分析基于 NVD 和 GitHub 安全团队提供的有限公开信息。恶意代码的具体实现细节(如外传地址、加密方式)尚未披露,但以上措施已足以阻断已知攻击路径。若发现新的 IoC,请立即更新安全策略。