V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
0X00FFFF
V2EX  ›  信息安全

[email protected] 遭遇供应链投毒:针对开发者及 MCP 用户的高隐蔽性 0-day 攻击

  •  5
     
  •   0X00FFFF · 3 月 31 日 · 7871 次点击

    这是 2026 年 3 月 31 日(不到 24 小时前) 爆发的全新 0day 供应链攻击,目前 npm 官方和主流安全社区尚未公开披露。

    攻击核心

    通过 npx 安装 latest 版本时,[email protected].1 被恶意投毒,偷偷引入了伪装成 crypto-js 的恶意包 [email protected]

    不仅普通开发者受影响,大量使用 AI Coding CLI( Cursor 、Claude Code 、Windsurf 、Codex 等)调用 open-websearchexa-mcp-server 等 MCP 工具的用户也极易中招,因为它们的 npx 缓存同样被污染。

    攻击手法(三平台全覆盖)

    C2 服务器http://sfrclak.com:8000/6202033

    • Windows

      • 复制 powershell.exeC:\ProgramData\wt.exe(伪装成 Windows Terminal )
      • 生成 VBS 脚本下载 payload ,隐藏执行 PowerShell (-w hidden -ep bypass
      • 执行后自删除所有痕迹
    • macOS

      • 下载后门二进制到 /Library/Caches/com.apple.act.mond(伪装系统进程)
      • 赋予权限后后台运行 + 连回 C2
      • 通过 osascript 执行并擦除痕迹
    • Linux

      • 下载 Python 后门到 /tmp/ld.py
      • nohup 后台常驻

    最阴险的是毁尸灭迹

    • 删除自身的 setup.js
    • package.md 重命名为 package.json,彻底覆盖原始 postinstall 字段
    • 事后查看 package.jsonnpm list 几乎看不出任何异常

    快速自查命令(强烈建议立刻执行)

    # 检查可疑 axios 版本
    npm list axios 2>/dev/null | grep -E "1\.14\.1|0\.30\.4"
    
    # 检查 lock 文件
    grep -A1 '"axios"' package-lock.json | grep -E "1\.14\.1|0\.30\.4"
    
    # 检查恶意依赖
    ls node_modules/plain-crypto-js 2>/dev/null && echo "⚠️ 可能已中招!"
    
    # 检查 RAT 残留痕迹
    # macOS
    ls -la /Library/Caches/com.apple.act.mond 2>/dev/null && echo "⚠️ COMPROMISED"
    
    # Linux
    ls -la /tmp/ld.py 2>/dev/null && echo "⚠️ COMPROMISED"
    
    # Windows (cmd)
    dir "%PROGRAMDATA%\wt.exe" 2>nul && echo COMPROMISED
    66 条回复    2026-04-01 15:17:23 +08:00
    aikilan
        1
    aikilan  
       3 月 31 日
    上次 npm 改了发布机制,这次再来一波,npm 打算改啥
    crime1024
        2
    crime1024  
       3 月 31 日
    网络不安全,我要回家
    eviladan0s
        3
    eviladan0s  
       3 月 31 日 via iPhone   ❤️ 1
    和 0day 没有关系,是维护者的 npm 账户被入侵了
    wu67
        4
    wu67  
       3 月 31 日
    幸亏最近没有升级这工具库, 我本身也锁死了版本号
    shirakawatyu
        5
    shirakawatyu  
       3 月 31 日   ❤️ 1
    node_modules 散落在硬盘各处,想查都困难
    zeex
        6
    zeex  
       3 月 31 日
    这个有点无解 这一波一下都得中招
    lisxour
        7
    lisxour  
       3 月 31 日
    npm 就没有签名机制吗
    lujiaosama
        8
    lujiaosama  
       3 月 31 日
    AXIOS 基本上是前端请求库的基石了, 这影响面也太巨大了吧.
    irrigate2554
        9
    irrigate2554  
       3 月 31 日
    everything 打开,搜索 plain-crypto-js 看看有没有吧
    shirakawatyu
        10
    shirakawatyu  
       3 月 31 日
    @shirakawatyu 看起来是刚发不久就被发现了,npm 上已经没这版本了
    7gugu
        11
    7gugu  
       3 月 31 日
    被波及到了,只能赶紧锁版本了,以后这种基础库还是不能用最新的
    wzhcanon
        12
    wzhcanon  
       3 月 31 日
    这太扯了
    thrinity
        13
    thrinity  
       3 月 31 日
    open-websearch 这种还挺频繁用到
    laikicka
        14
    laikicka  
       3 月 31 日
    远离 axios 保平安
    crysislinux
        15
    crysislinux  
       3 月 31 日 via Android
    nodejs 这种小包生态供应链投毒无解了。
    Ketteiron
        16
    Ketteiron  
       3 月 31 日   ❤️ 3
    https://github.com/axios/axios/issues/10604
    开发者凭证被偷感觉是无解的难题。
    realJamespond
        17
    realJamespond  
       3 月 31 日
    pnpm 有影响不?
    apkapb
        18
    apkapb  
       3 月 31 日
    只有 1.14.1 中招吗
    Felldeadbird
        19
    Felldeadbird  
       3 月 31 日
    吓得我菊花一紧,"axios": "^1.13.6"。 我没中招吧。
    stinkytofux
        20
    stinkytofux  
       3 月 31 日
    网络太危险了, 我要拔网线
    liangdi
        21
    liangdi  
       3 月 31 日
    供应链安全 确实头疼
    FakerLeung
        22
    FakerLeung  
       3 月 31 日
    还好我司强制性要求版本固定,还在 1.13.5
    v21984
        23
    v21984  
       3 月 31 日
    以及 0.30.4
    Bronya
        24
    Bronya  
       3 月 31 日
    吓人,这种基础库,涉及范围太广了
    今天是 axios ,明天又会是哪个🤯
    liuxue
        25
    liuxue  
       3 月 31 日 via iPhone
    @realJamespond 这个用的一般也是 npm 的仓库吧
    loading
        26
    loading  
       3 月 31 日
    latest 这种不确定性,真的可怕噢。
    stinkytofux
        27
    stinkytofux  
       3 月 31 日
    @Bronya 已经开始人传人迹象了.
    Javin
        28
    Javin  
       3 月 31 日
    现在这种漏洞越来越多,和 AI 是不是有关系呢
    MIUIOS
        29
    MIUIOS  
       3 月 31 日
    我操 我中招了
    Ketteiron
        30
    Ketteiron  
       3 月 31 日   ❤️ 1
    @realJamespond #17 pnpm10+ 默认在安装期间阻止依赖项的生命周期脚本执行,因此主动安装的 axios 不会中招,但是 CLI/MCP 很可能使用 npx ,这样依然会中招。
    chen7897499
        31
    chen7897499  
       3 月 31 日
    ld.py payload https://pastebin.com/MtsK5QHx
    其他的弄不下来了
    xling
        32
    xling  
       3 月 31 日
    npm 这奇葩自动升级策略迟早要酿成大祸
    diudiuu
        33
    diudiuu  
       3 月 31 日
    无解,就固定版本吧,非必要不升级
    renmu
        34
    renmu  
       3 月 31 日 via Android
    我今天上午刚升级的 axios 依赖,中招了,火绒有拦截提醒,但被我允许了,还骂了一句火绒 sb,我错怪你了啊
    june4
        35
    june4  
       3 月 31 日
    nodejs 安全性确实不行,应该也搞成 deno 这样的
    lisongeee
        36
    lisongeee  
       3 月 31 日
    如果是上次的 apifox 事件导致的 npm token 泄露,是不是会频繁导致此类问题
    0X00FFFF
        37
    0X00FFFF  
    OP
       3 月 31 日
    @renmu 😂
    a33291
        38
    a33291  
       3 月 31 日
    @lisongeee 是,至少会持续一段时间,比如 https://github.com/hicccc77/WeFlow/issues/555
    C64NRD
        39
    C64NRD  
       3 月 31 日
    npm 官网好像刚刚撤掉顶部 banner ( 2F ) 没多久
    kasusa
        40
    kasusa  
       3 月 31 日
    好新啊。
    poly1911
        41
    poly1911  
       3 月 31 日
    自查完毕,没有中招

    I'm tired boss
    test9106
        42
    test9106  
       3 月 31 日
    中招了怎么清理机器啊
    tiaod
        43
    tiaod  
       3 月 31 日
    我就说为啥现在 npm 发个包那么复杂
    m9rco
        44
    m9rco  
       3 月 31 日
    @chen7897499 #31 这是什么东西大佬,观摩下
    meteora0tkvo
        45
    meteora0tkvo  
       3 月 31 日
    说实话,直接用浏览器原生 fetch 也挺方便的,搞不懂为啥还要特地装个 axios
    wkend
        46
    wkend  
       3 月 31 日
    老妈,互联网太危险了,我想回家😭
    FireKey
        47
    FireKey  
       3 月 31 日
    感觉是有基础设施中招了或者这类攻击模式开始传播,现在能不升级先不升级了
    renyixu
        48
    renyixu  
       3 月 31 日   ❤️ 1
    明天华为是不是就自研了
    test9106
        50
    test9106  
       3 月 31 日
    @realkaiway 多谢!
    Livid
        51
    Livid  
    MOD
    PRO
       3 月 31 日   ❤️ 2
    $ cat ~/.npmrc
    min-release-age=7
    AiBoy
        52
    AiBoy  
       3 月 31 日
    又来又来!
    Sezxy
        53
    Sezxy  
       3 月 31 日 via Android
    @renyixu ???!?
    cairnechen
        54
    cairnechen  
       3 月 31 日
    1.13.4 运气不错
    Lemonadeccc
        55
    Lemonadeccc  
       3 月 31 日
    1.14.0 差一步我去
    oIMOo
        56
    oIMOo  
       3 月 31 日
    分享一篇文章:[Axios npm Supply Chain Compromise — Full Analysis Package]( https://gist.github.com/N3mes1s/0c0fc7a0c23cdb5e1c8f66b208053ed6)

    另外求大家帮帮孩子:[求推荐代码审计软件/平台/插件]( https://v2ex.com/t/1202258#reply0)
    mrabit
        57
    mrabit  
       3 月 31 日
    @renyixu 你回复错了吧? 你是想说 Claude Code 源码?
    dcsuibian
        58
    dcsuibian  
       2 天前   ❤️ 2
    Java+Python+JavaScript/TypeScript 使用者表示
    在工程规范上,Java 真的吊打后面两者
    hafuhafu
        59
    hafuhafu  
       2 天前
    突然感觉近期供应链投毒等因为凭据泄露的事高发,和 AI 被滥用有一定关系...
    apkapb
        60
    apkapb  
       2 天前
    我前几天,刚把依赖升级成最新版本,"axios": "1.13.6",

    就差几天,就中招了
    Pipidamowang
        61
    Pipidamowang  
       2 天前
    @apkapb #18 0.30.4 也中招了
    apkapb
        62
    apkapb  
       2 天前
    @Pipidamowang 检查了,没有。。这种基建被攻击了可太难受了
    kloge
        63
    kloge  
       2 天前
    最近这么多供应链投毒, 会不会跟龙虾有关?
    xue777hua
        64
    xue777hua  
       2 天前
    @dcsuibian 没觉得多吊打,java 只是因为只负责后端而已,暴露面一下子就小很多了, 该不会忘了 log4j 的事情了?
    dcsuibian
        65
    dcsuibian  
       2 天前
    @xue777hua 说明你完全不懂后端

    1 、那个漏洞是 log4j2 ,而不是 log4j ,两者根本不是一个东西。log4j 作者的原作者的后续产品是 logback ,也有 slf4j 的日志门面。他不是第一个发明日志的人,但是却是打日志工程化的祖师爷,log4j2 根本不是他的项目。而且 Spring Boot 的默认也是 logback ,所以只有你手动替换了日志实现才会有这个问题

    2 、如果你要说 log4j2 的话,那么请问 Next.js 的 CVE-2025-29927 和 CVE-2025-55182/CVE-2025-66478 ,如果 Next.js 只做前端框架不会有这种问题,说白了,前端被浏览器和后端安全策略保护的太好了。因为规范的后端本来就不信任前端发来的数据,所以前端之前才出的少。当前端开始做后端,就有这种问题

    3 、既然这个主题是关于包管理器的,正好我也发过包,你可以先去跟 AI 了解下这三者的差距,Java 的 Maven 规范远远大于前两者。首先 Java 的 Maven Central 是由 Sonatype 托管的,你要发布一个包会有域名命名空间所有权验证、强制 GPG 签名,强制提供 Javasoc 和 Sources 等。这些 npm 和 pypi 有吗?
    pypi 和 npm 完全全局共享一个命名空间,抢注包名没有吗?

    4 、另外 Maven 不光是包管理器,更接近来说,应该是构建管理器,包管理器只是一部分,如果放到前端,可能更接近于 npm 和 vite 的合体。

    5 、另外 node_modules 的设计简直是屎中屎,全宇宙最重的东西。语义化版本控制听起来很好,实际就会引入这种供应链投毒,因为版本不锁定,要不然为啥又 package-lock.json 。而 Maven 这边的项目你可以去看看,基本都是完全锁死 gav 坐标的,不存在偷换的问题

    6 、如果不说 Node.js ,就再说下 Python ,Python 的管理就复杂,从 requirements.txt 、Anaconda ,好不容易有了 pyproject.toml ,但是仍然不够好,比如对 src/ Layout 的支持,要么变成没有 src/的非包项目,要用 src/ 就必须搞成包,非常混乱
    xue777hua
        66
    xue777hua  
       2 天前
    @dcsuibian
    对对对
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2589 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 15:12 · PVG 23:12 · LAX 08:12 · JFK 11:12
    ♥ Do have faith in what you're doing.