潜伏14个月、下载超4万次!NPM恶意包投毒,安装即中招
- 2026-10-11 03:16:02
做前端、Node.js开发的团队,几乎每天都在和npm包打交道。
大家早已习惯通过npm install快速引入开源依赖、提升开发效率,但很多人默认了一个误区:官方仓库的包,一定是安全的。
本周安全厂商曝光的MALFEX供应链攻击事件,彻底打破了这份侥幸。一组潜伏在npm仓库长达14个月的恶意包,累计下载量突破4万次,大量开发者、企业项目在不知情中“一键装毒”,遭遇数据窃取、木马植入攻击。

01 事件复盘:悄悄潜伏两年多的投毒攻击
本次曝光的MALFEX攻击活动,并非短期突发攻击,而是一场长期、隐蔽、规模化的供应链投毒行动。
攻击者从2023年8月开始,持续在npm官方仓库上传伪装开源包,前后共计发布12个相关包,其中8个被安全机构证实为恶意程序。截至曝光前,这批恶意包总下载量超40700次,波及无数个人开发者与中小企业项目。
其中危害最大的当属function-flag恶意包,单包下载量高达37419次,占据整体攻击流量的绝大部分。更危险的是,该恶意包在官方仓库潜伏14个月之久,全程无安全告警、无风险提示,长期处于活跃可安装状态。
即便部分恶意包已被平台下架,仍有3个恶意包截至本月依旧可正常安装,持续对开发项目构成威胁。

02 攻击原理:无需运行代码,安装瞬间即沦陷
很多开发者认为,只要不主动调用依赖包函数,就不会有安全风险,但MALFEX攻击的核心陷阱,正是利用了npm的postinstall自动执行钩子。
这也是本次攻击最防不胜防的地方:你只需执行安装命令,恶意代码就会自动运行,无需后续编译、调用操作。
攻击完整链路非常清晰:
1. 开发者执行npm install安装伪装包;
2. 触发postinstall钩子,自动执行内嵌恶意JS脚本;
3. 脚本后台远程拉取Go语言编写的加载器,落地Windows可执行程序;
4. 最终植入Overlord远控木马(RAT),完成设备接管。
木马落地后会发起多维度窃取攻击,重点盗取浏览器缓存数据、Discord账号信息、Telegram数据以及加密货币钱包凭证,同时在设备中持久驻留,实现长期控制,后续可发起内网横向渗透、批量植入后门等次生攻击。
03 谁的风险最高?这些团队务必自查
不同于针对性的黑客入侵,供应链投毒攻击无差别覆盖所有使用者,以下几类场景风险优先级最高:
✅ 前端/Node.js开发团队:日常高频安装各类轻量工具包,极易误装仿冒恶意包;
✅ 内部管理系统、后台项目:多数内部系统安全审计薄弱,依赖管控松散;
✅ CI/CD自动化流水线环境:流水线自动拉取、安装依赖,无人工复核,批量中招风险极高;
✅ 个人开发机、测试服务器:一旦沦陷,攻击者可窃取本地配置、密钥、代码仓库凭证,进一步渗透生产环境。
很多企业的安全防护重点都放在了外网防火墙、业务漏洞上,却完全忽略了开发供应链入口,这也是近年来供应链攻击频发的核心原因。

04 依托 SCA 能力构建防护:开发团队可直接落地的实操方案
官方公共仓库不再等于绝对可信,那我们究竟该信任什么?信任不应该寄托于某一个第三方仓库平台,而是建立一套可审计、可校验、可管控的软件供应链安全体系。npm官方仓库只能做基础上架,无法穷尽所有恶意包,攻击者可以通过仿冒包名、接管开发者账号、发布恶意新版本完成投毒;真正的安全,是把信任掌握在企业自己的研发链路内部。
软件成分分析系统(SCA)正是对抗这类供应链投毒威胁的核心技术手段。是一种对软件组成成分进行识别、分析和追踪的自动化技术,主要用于识别和管理开源组件带来的安全、许可证合规与代码质量风险。该技术通过扫描应用程序的源代码、二进制文件或容器镜像,生成详细的软件物料清单(SBOM),并与漏洞数据库进行比对以发现已知风险面对 MALFEX 这类 npm 投毒攻击,SCA 可以实现:
✅恶意包情报匹配:对接开源威胁情报库,实时识别已经曝光的恶意包(例如function‑flag),在 CI 构建、制品入库环节直接阻断高危包进入项目,不等漏洞爆发再事后排查;
✅生命周期脚本风险检测:扫描postinstall/preinstall等安装钩子,识别脚本中远程下载、命令执行、凭证窃取、代码混淆等高风险行为,提前发现 “安装即执行” 的攻击特征,弥补npm audit对恶意脚本检出能力不足的短板npm;
⚠️注意:SCA 不是万能银弹。对于还未被外界曝光的 0day 恶意包,SCA 无法直接预知,需要配合流程、网关、权限策略形成纵深防护。
05 写在最后:开源从不等于绝对安全
MALFEX长达14个月的潜伏攻击,给所有开发、安全团队敲响了警钟:开源便利的背后,藏着持续且隐蔽的安全威胁。
开源给研发带来巨大效率,但信任不能无条件转移给上游公共仓库。MALFEX事件告诉我们:攻击者已经将供应链作为主要突破口。防护的核心思路不是拒绝开源,而是不盲信外部来源,用技术手段把信任边界收归企业内部:借助流程、SCA、网关、权限隔离组成纵深防御,将供应链投毒风险从 “事后救火” 转变为 “事前管控”,守住开发链路这个容易被忽视的安全缺口。