npm数学库竟藏加密后门
Why Does an NPM Math Library Need an Encrypted Loader?

我们在npm包mathmain中发现了一个远程访问植入物,其恶意代码经过加密,只有在程序用特定矩阵求解方程时才会被激活。这个方程的解就是解密密钥,一旦匹配成功,载荷就会运行并允许攻击者通过Slack和Base Sepolia区块链网络远程控制主机。该载荷不仅读取系统信息,还能执行任意Shell命令。我们进一步发现,mathsbase和math-universe两个包也使用了相同的加载器。尽管GitHub源码中并无此代码,但npm发布的构建版本却包含它,说明攻击者是在发布环节注入了恶意逻辑。
这个方程就是密钥,当密钥匹配时,包就会解密载荷并运行它。
HN 评论区
39- fn-mote
你得往下读挺远,才能发现是 JFrog 破解了密码,这才让后续的分析成为可能。
- j2kun
天哪,为什么偏偏是那个特定的 3x3 矩阵会成为攻击触发条件?他们是在找做某种特定数值分析的人吗?
- hiddenvulkcan
我确实遇到过有人破解了它(或者用 Claude/中国破解了它)。
看来第二阶段完全崩了,这甚至更奇怪..
https://research.veryserious.systems/lusolve-and-you-shall-r...
- WorldMaker
这大部分内容似乎都在提醒我们,CommonJS 模块格式早就该死了。不是说你不能在 ESM 里用 `await import()` 玩类似的把戏,但你没法像用 `grep import\s*\(` 查找动态 import 那样轻松地 grep 整个依赖项里的动态 `require()`。而且,针对静态 `import` 关键字的分析和工具很容易使用或构建,而 CommonJS 却没有任何这样的东西。
当我说我总是先查 JSR 再查 NPM 时,有人以为我在开玩笑,因为我对 ESM 的信任远超过 CommonJS。
- fshafique
FBI 或其他执法机构会跟进这些后门吗?这算犯罪,甚至是犯罪共谋,还是只有使用后门的行为才算犯罪?
我也看到它仍然挂在 NPM 上,没有任何警告:
- https://www.npmjs.com/package/mathmain
但该包的 Github 仓库和作者页面都挂了: