文章总结: 2026年3月至4月axios库遭遇双重安全危机:3月31日朝鲜UNC1069组织劫持维护者账号投放含WAVESHAPER.V2后门的恶意版本1.14.1/0.30.4;4月9日披露独立漏洞CVE-2026-40175(CVSS10.0),通过原型污染触发CRLF注入实现AWSIMDSv2旁路窃取云凭证。两事件目标高度重叠,当前运行axios<1.15.0的云服务面临直接风险,需立即升级至v1.15.0。 综合评分: 92 文章分类: 供应链安全,漏洞分析,威胁情报,WEB安全,云安全
Axios 双重危机:CVE-2026-40175 漏洞链与 UNC1069 供应链投毒
原创
🅼🅰🆈 🅼🅰🆈
独眼情报
2026年4月13日 15:44 湖北
在小说阅读器读本章
去阅读
长话短说
2026 年 3 月至 4 月,全球下载量最高的 JavaScript HTTP 客户端库 axios 在不到两周内连续遭遇两次独立但相互关联的安全事件。
第一波(2026-03-31):朝鲜国家级行为者 UNC1069(Google Threat Intelligence Group 归因,微软称为 Sapphire Sleet)劫持了项目首席维护者 jasonsaayman 的 npm 账号,向注册表投放了含 RAT 的恶意版本 1.14.1 和 0.30.4,持续约 3 小时,波及约 1 亿次每周下载的生态位。
第二波(2026-04-09):账号恢复后,项目组发布 GitHub Security Advisory GHSA-fvcv-3m26-pcqx,披露了一个独立的代码层漏洞:任何第三方依赖中的原型污染(Prototype Pollution)均可通过 axios 的 HTTP 头部拼接逻辑被武器化,实现 CRLF 注入 → HTTP 请求走私 → AWS IMDSv2 旁路 → 云凭证窃取的完整攻击链。CVE 编号 CVE-2026-40175,CVSS 满分 10.0。
核心结论:两个事件在机制上相互独立,但攻击效果高度重叠——都以获取云端凭证或代码执行为终极目标,且共用同一个被污染的信任锚(维护者账号)。当前运行 axios < 1.15.0 的 Node.js 服务,尤其是部署在 AWS/GCP/Azure 上的云原生应用,面临直接的、可被利用的风险。升级至 v1.15.0 是目前唯一完整的缓解措施。
一、背景:为何 Axios 是高价值目标
axios 是 Node.js 和浏览器端最主流的 HTTP 客户端库,npm 周下载量长期稳定在 9000 万至 1 亿次。根据 Snyk 的统计,该包被约 174,000 个 npm 包直接依赖,存在于大约 80% 的云原生开发环境中。
它的架构角色决定了它的威胁价值:axios 几乎默认出现在所有现代 JavaScript/TypeScript 服务端项目的依赖树中,且通常运行在拥有云 IAM 凭证、数据库密钥、API Token 的进程里。污染 axios,等同于在目标的 HTTP 通信层埋下钩子。
二、事件一:供应链投毒(2026-03-31)
2.1 攻击时间线
| 时间(UTC) | 事件 |
| — | — |
| 2026-03-30 05:57 | 攻击者账号 [email protected] 发布 [email protected]——无恶意代码的诱饵包,目的是建立发布历史、降低后续版本的扫描告警优先级 |
| 2026-03-30 23:59 | 同账号发布 [email protected]——注入恶意 postinstall 钩子与混淆后的 RAT 投放脚本 setup.js |
| 2026-03-31 00:21 | 被攻陷的 jasonsaayman 账号(邮箱已改为 [email protected])发布 [email protected],引入 [email protected] 作为运行时依赖 |
| 2026-03-31 01:00 | 同账号发布 [email protected],覆盖 legacy 分支,确保 1.x 和 0.x 双线用户均受影响 |
| 2026-03-31 ~03:15 | npm 下架两个恶意版本,latest 标签回退至 1.14.0 |
| 2026-03-31 03:25 | npm 启动安全保留程序,针对 plain-crypto-js |
| 2026-04-01 | Google GTIG 和微软威胁情报公开将此次攻击归因于 UNC1069(朝鲜国家级行为者) |
两个恶意版本在 npm 上存活的窗口:约 2 小时 54 分钟(1.14.1)和约 2 小时 15 分钟(0.30.4)。
2.2 账号劫持的技术特征
账号劫持的一个关键法证信号体现在 npm 注册表元数据上。所有合法的 axios 1.x 版本均通过 GitHub Actions OIDC 可信发布机制发布,npm 包元数据中会包含 trustedPublisher 字段,将发布动作密码学绑定到具体的 CI/CD 工作流。
恶意版本 1.14.1 的元数据完全缺失这一字段——它是通过被盗的长期有效 npm 访问令牌直接从命令行发布的,且 GitHub 仓库中不存在任何对应的 commit 或 tag。Elastic Security Labs 指出这是识别账号劫持的明确指标。
2.3 恶意载荷:WAVESHAPER.V2
Google GTIG 将投放的 RAT 识别为 WAVESHAPER.V2,是 UNC1069 在此前活动中使用的 WAVESHAPER 后门的更新版本。RAT 的投放流程:
npm install触发[email protected]的postinstall钩子setup.js(SILKBELL 投放器,SHA256:e10b1fa84f1d6481625f741b69892780140d4e0e7769e7491e5f4d894c2e0e09)检测目标操作系统- 向 C2 服务器
sfrclak[.]com:8000(IP:142.11.206.73)请求平台特定的第二阶段载荷(macOS / Windows / Linux 各一套) - 执行完毕后,恶意包用事先准备的干净
package.json(package.md文件中预存)替换自身,消除法证痕迹
StepSecurity 报告指出,整个投放过程在 npm install 启动后约 2 秒内完成,恶意进程在 npm 完成依赖解析之前已向 C2 发起连接。
待证实:Datadog Security Labs 报告提到 Windows 和 Linux 载荷存在一定程度的 bug,限制了其稳定性,Linux 载荷在容器化环境中会崩溃。但上述 bug 的具体范围和影响程度目前尚未由第三方完整复现验证,该信息来自单一技术来源(Datadog),尚待独立确认。
2.4 归因评估
研判(高置信度):此次供应链攻击由朝鲜国家级行为者实施,主要依据如下:
- Google GTIG 基于 WAVESHAPER.V2 的使用将其正式归因于 UNC1069
- 微软威胁情报独立归因于 Sapphire Sleet,并指出 C2 基础设施与已知 UNC1069 活动存在重叠
- AstrillVPN 节点被用于路由 C2 流量,这是 UNC1069 自 2020 年以来持续使用的操作安全模式
- 两个归因来自不同机构,形成独立的交叉验证
研判(中置信度):该攻击不是机会主义的,而是预谋已久的定点行动。理由是恶意依赖包提前 18 小时预置,三套操作系统载荷预先构建,两个发布分支在 39 分钟内双线投放,并预埋了反法证清理机制。这种操作精度超出典型的投机性供应链攻击范畴,更符合 UNC1069 此前针对加密货币和金融软件生态的定向行动模式。
三、事件二:GHSA-fvcv-3m26-pcqx / CVE-2026-40175(2026-04-09)
3.1 漏洞摘要
| 属性 | 值 |
| — | — |
| 漏洞编号 | CVE-2026-40175 / GHSA-fvcv-3m26-pcqx |
| 披露时间 | 2026-04-09(Advisory)/ 2026-04-10(CVE) |
| CVSS v3.1 评分 | 10.0(满分) |
| 受影响版本 | axios v0.x – v1.x(所有历史版本,< 1.15.0) |
| 修复版本 | >= 1.15.0 |
| 漏洞组件 | lib/adapters/http.js (HTTP 头部处理逻辑) |
| 相关 CWE | CWE-113(HTTP 头 CRLF 注入)/ CWE-444(HTTP 请求走私)/ CWE-918(SSRF) |
| 报告者 | raulvdv(通过 GitHub Security Advisory 流程提交) |
注:Advisory 原文中将 CVSS 评分描述为 9.9,但 GitHub Advisory 页面及 NVD / Tenable 等官方 CVE 数据库均记录为 10.0(CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H)。以 NVD 记录为准。
3.2 漏洞机制:「Gadget 链」攻击
这个漏洞的关键是——axios 的代码本身没有原型污染漏洞,但它会被作为「武器」被已经受污染的运行时环境利用。
攻击链分为三个阶段:
阶段一:初始污染(触发点在其他依赖)
攻击者通过已知的原型污染漏洞(如 qs、minimist、body-parser 等库中长期存在的 CVE),将恶意键值对注入 Object.prototype。例如:
// 模拟攻击者通过 qs 的漏洞触发的污染效果
Object.prototype['x-amz-target'] =
"dummy\r\n\r\nPUT /latest/api/token HTTP/1.1\r\n" +
"Host: 169.254.169.254\r\n" +
"X-aws-ec2-metadata-token-ttl-seconds: 21600\r\n\r\nGET /ignore";
阶段二:Gadget 触发(由 axios 正常业务代码触发) 应用发起任何看起来完全安全的 axios 请求时:
// 开发者视角:这是一个完全正常的内部监控请求
await axios.get('https://analytics.internal/pings');
axios 在 lib/adapters/http.js 中将配置进行 merge 时,会从 Object.prototype 上继承被污染的 x-amz-target 属性,并将该值(含 CRLF 字符)直接写入底层 socket 连接,没有任何过滤。
阶段三:AWS IMDSv2 旁路 实际发送的 HTTP 流量变成:
GET /pings HTTP/1.1
Host: analytics.internal
x-amz-target: dummy
PUT /latest/api/token HTTP/1.1
Host: 169.254.169.254
X-aws-ec2-metadata-token-ttl-seconds: 21600
GET /ignore HTTP/1.1
...
「走私」进去的第二个请求是一个合法的 AWS IMDS v2 令牌获取请求。AWS 实例元数据服务会返回一个短期会话令牌,攻击者随后使用该令牌获取 EC2 实例绑定的 IAM 角色凭证——通常拥有访问 S3、RDS、Secrets Manager 等资源的权限。
这一点至关重要:IMDSv2 最初设计为防止普通 SSRF 攻击(要求 PUT 请求,普通 SSRF 只能发 GET),但通过 HTTP 请求走私可以绕过这一设计假设。
3.3 攻击面评估
该漏洞的实际可利用性取决于两个前提:
- 目标依赖树中存在可被利用的原型污染漏洞:这在现实 Node.js 项目中普遍存在,
qs、minimist的历史版本在很多遗留项目中仍在使用 - axios 请求在执行前,污染已发生:这要求攻击者能控制某个输入路径,触发上游的原型污染
研判(中置信度):对于大量使用遗留 npm 依赖的企业内网服务来说,这两个前提同时满足的概率不可忽视。公开 PoC 已发布(随 Advisory 一同释出),实际武器化的门槛较低。
3.4 「Gadget 型」漏洞的分类意义
Advisory 将此漏洞描述为「Gadget 攻击链」,这是一个在学术安全研究中使用但在 CVE 披露中较少使用的概念。它的含义是:漏洞的利用需要「借助」目标软件作为中间件来放大另一个漏洞的影响。
这类漏洞的政策含义在于:axios 自身通过了所有单一依赖漏洞扫描,但在组合依赖的威胁模型下是高危的。传统的「只扫自己的依赖有没有 CVE」的安全实践对这类 Gadget 链完全失效。
四、两个事件的关联分析
4.1 时间关联
| 事件 | 时间节点 | | — | — | | 供应链攻击(UNC1069) | 2026-03-30 ~ 2026-03-31 | | 维护者账号恢复(推断) | 2026-03-31 ~ 2026-04-09(期间) | | CVE-2026-40175 披露 | 2026-04-09 | | 修复版本 v1.15.0 发布 | 2026-04-09(或临近日期,以 GitHub Releases 为准) |
值得注意的是,GHSA-fvcv-3m26-pcqx 是由被攻陷账号 jasonsaayman 在账号恢复后发布的。供应链攻击发生在 3 月 31 日,而漏洞披露发生在 4 月 9 日,中间约 9 天是账号恢复与内部审计期。
4.2 机制独立,目标重叠
两个事件在技术机制上是完全独立的:
- 事件一是账号劫持型供应链攻击,恶意代码在安装时执行,与 axios 自身代码逻辑无关
- 事件二是代码层 Gadget 漏洞,通过 axios 合法的头部处理逻辑被武器化,在运行时触发
但两者的终极攻击目标高度重合:获取云凭证(AWS IAM)或实现远程代码执行。这种目标一致性与 UNC1069 的已知 TTP(战术、技术、程序)吻合——该组织历来以金融资产和云访问权限为核心目标。
研判(低置信度):目前没有公开证据证明 CVE-2026-40175 是 UNC1069 发现并上报的漏洞,也没有证据表明两个事件出自同一策划。这两者很可能是时间上偶然重叠的独立事件——漏洞研究者 raulvdv 和北朝鲜攻击者在同一个时期都关注到了 axios,但出于不同动机。然而,不能排除攻击者在账号持有期间(可能长达数周)进行了代码层审计,并在撤退前「顺手」利用或记录了 CVE-2026-40175 描述的攻击面。此假设目前缺乏直接证据。
五、指标数据(IOC)
5.1 供应链攻击(事件一)IOC
| 类型 | 值 |
| — | — |
| C2 域名 | sfrclak[.]com |
| C2 IP | 142.11.206.73 |
| C2 端口 | 8000 |
| 恶意 npm 包 | [email protected] / [email protected] / [email protected] |
| 投放脚本哈希(SHA256) | e10b1fa84f1d6481625f741b69892780140d4e0e7769e7491e5f4d894c2e0e09 (SILKBELL/setup.js) |
| 攻击者控制邮箱 | [email protected] / [email protected] |
| 临时文件路径特征 | *\Temp\6202033* (Windows)/ */tmp/6202033*(Linux/macOS) |
5.2 CVE-2026-40175(事件二)技术指标
- 漏洞触发条件:header 值中存在
\r\n字符(CRLF) - 受攻击路径:
lib/adapters/http.js→ HTTP socket 写入逻辑 - 检测特征:出站请求中出现对
169.254.169.254(AWS IMDS 端点)的异常访问,尤其是 PUT 方法
六、防御建议
以下建议按优先级排序,针对不同角色提供。
6.1 立即行动(当前仍在使用受影响版本的团队)
对于 CVE-2026-40175(事件二):
升级 axios 至 v1.15.0 或更高版本,这是当前唯一完整的修复:
npm install axios@^1.15.0
# 确认依赖树中无遗留旧版本
npm ls axios
如无法立即升级,可在应用层添加临时头部过滤 Patch(Advisory 推荐的缓解代码):
// lib/adapters/http.js — 临时缓解,非最终修复
utils.forEach(requestHeaders, function setRequestHeader(val, key) {
if (/[\r\n]/.test(val)) {
throw new Error('Security: Header value contains invalid characters');
}
// ... 继续设置头部
});
对于供应链攻击(事件一):
检查 lockfile 中是否存在恶意版本:
grep -E "axios@(1\.14\.1|0\.30\.4)|plain-crypto-js" package-lock.json yarn.lock
如发现受影响版本,且系统在 2026-03-31 00:21–03:20 UTC 期间执行过 npm install,按完全失陷处理(隔离、重镜像、轮换所有凭证)。
6.2 中期加固(所有 Node.js 开发团队)
- 启用 npm 发布来源验证:在 CI/CD 流程中要求所有关键依赖具备 SLSA 来源证明(provenance),缺失 OIDC 绑定的新版本应触发自动告警
- 依赖冷却期设置:在依赖管理工具中配置新版本延迟采纳策略(部分包管理器支持),给社区时间标记恶意版本
npm audit+ Snyk 双跑:定期扫描直接和间接依赖中的原型污染 CVE;Gadget 型漏洞的前提是上游存在可利用的污染点- 云 IMDS 访问控制:在 AWS 环境中,通过实例元数据选项将
http-put-response-hop-limit设为 1,限制容器内进程通过跃点访问 IMDS;同时对169.254.169.254出站流量进行监控告警
6.3 长期供应链安全实践
- 对月下载量过亿的关键包(axios、lodash、express 等)实施发布元数据监控:发布方式从 OIDC 切换为直接 CLI 是高优先级告警信号
- 在 CI/CD 环境中部署网络出口监控(类似 StepSecurity Harden-Runner 的行为),任何
npm install期间的非预期出站连接都应被告警 - 定期审计 GitHub 组织内关键仓库的维护者权限,识别具备 npm 发布权限的账号并强制启用硬件密钥 MFA
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:独眼情报 🅼🅰🆈 🅼🅰🆈《Axios 双重危机:CVE-2026-40175 漏洞链与 UNC1069 供应链投毒》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论