近日,一场利用开源生态与公共内容分发网络(CDN)的新型网络钓鱼攻击浮出水面。据网络安全公司Socket披露,攻击者在npm(Node Package Manager)官方注册表中发布了至少175个恶意软件包,累计被下载超过2.6万次。这些包本身并不包含传统意义上的“病毒”或“木马”,而是被巧妙地用作钓鱼基础设施的一部分——通过UNPKG CDN自动托管重定向脚本,将受害者引导至伪造的微软登录页面,窃取企业邮箱账号与密码。
这一手法之所以令人警惕,是因为它绕开了传统安全防线:既不依赖恶意域名注册,也不需要自建服务器,而是“寄生”于开发者日常使用的可信平台之上。
![]()
不装恶意代码,却能“远程钓鱼”?
乍一听,这似乎有些反直觉:如果一个npm包没有执行恶意代码,怎么还能实施攻击?
关键在于,攻击目标并非安装包的开发者,而是打开特定HTML文件的终端用户。
据研究人员还原,攻击者首先通过一个名为 redirect_generator.py 的自动化脚本,批量生成形如 redirect-xs13nr 的npm包。每个包内仅包含一个极简JavaScript文件(如 beamglea.js),其功能只有一个:读取URL中的参数,并立即跳转到指定的钓鱼页面。
随后,攻击者会为每位目标受害者定制一个HTML文件——伪装成采购订单、技术文档或项目协作邀请。这些文件看似普通,实则内嵌一行代码:
一旦受害者在浏览器中打开该HTML(例如通过邮件附件或网盘链接),浏览器就会自动从UNPKG CDN加载这个JS脚本。而由于UNPKG是npm官方合作的公共CDN,域名 unpkg.com 在多数企业防火墙和邮件网关中被视为“可信来源”,因此几乎不会被拦截。
更狡猾的是,脚本还会将受害者的邮箱地址作为URL片段(fragment)传递给钓鱼页面。于是,当用户看到登录框时,自己的邮箱已经“自动填好”——这种“个性化”体验极大降低了警惕性,显著提升钓鱼成功率。
“这不是传统意义上的供应链投毒,而是一种‘基础设施劫持’。”公共互联网反网络钓鱼工作组技术专家芦笛指出,“攻击者没有污染代码逻辑,而是把npm和UNPKG当作免费、高可用、全球加速的‘钓鱼网站托管服务’。”
为何难以防御?因为“合法”成了掩护
npm作为全球最大的JavaScript包仓库,每日处理数亿次请求。UNPKG则基于npm内容自动提供CDN服务,无需审核即可公开访问任意包内的静态资源。这种开放性极大便利了开发者,却也为攻击者提供了可乘之机。
此次事件中,175个恶意包分散在9个不同账户下发布,命名高度随机(如 redirect-a3k9mz),基本排除了开发者“误装”的可能。2.6万次下载量主要来自安全研究人员、自动化扫描器及CDN爬虫——这也说明,攻击者根本不在乎是否有人“安装”这些包,他们只需要包能成功发布,从而激活UNPKG上的对应URL。
“攻击成本几乎为零,但收益极高。”芦笛解释道,“你不需要买服务器、不用维护钓鱼站点、不怕IP被封,因为CDN节点遍布全球,且由知名服务商背书。即使某个包被下架,攻击者也能在几分钟内发布新包,更换URL继续作案。”
更值得警惕的是,此类手法具备高度可复制性。研究报告警告:“这套组合拳——自动化生成包 + CDN托管 + 定制化HTML钓鱼页——很可能成为未来钓鱼攻击的新范式。”
钓鱼只是开始,BEC才是终点
初步分析显示,此次代号为“Beamglea”的钓鱼行动已针对全球135家工业、科技与能源企业。一旦攻击者获取员工的企业邮箱凭证,下一步往往是商务邮件诈骗(BEC):冒充高管要求财务转账、伪造合同诱导付款,或进一步渗透内部系统进行横向移动。
“现代企业的数字资产高度依赖身份凭证,”芦笛强调,“一个邮箱账号往往等同于半张‘通行证’。尤其在启用单点登录(SSO)的环境中,攻破一个入口就可能撬动整个IT体系。”
如何应对?技术+意识双管齐下
面对这种“借壳钓鱼”的新威胁,专家建议从多个层面构建防御体系:
1. 开发环境加固
企业应限制开发人员直接使用公共npm源,转而部署私有镜像或代理缓存,并配合许可名单(allowlist)机制,只允许安装经过审核的包。
对CI/CD流水线加入依赖扫描,及时发现异常包名或可疑发布者。
2. 浏览器与终端防护升级
在企业安全网关或EDR系统中,引入对CDN二级路径的深度检测。例如,不仅要放行 unpkg.com,还需识别其加载的具体资源是否关联已知恶意包。
推广使用子资源完整性(SRI)校验:在引用第三方JS时附加哈希值,确保内容未被篡改。
配置严格的内容安全策略(CSP),限制页面只能加载来自预定义可信源的脚本。
3. 用户意识培训不可少
教育员工:不要轻易打开来源不明的HTML附件,哪怕它看起来像一份普通文档。现代钓鱼早已超越“.exe”时代,一个.html文件就足以触发攻击。
警惕“系统更新提醒”“协作邀请”等社交工程话术,尤其是要求立即登录验证的邮件。
4. 推动无密码认证落地
芦笛特别建议:“长期来看,减少对静态密码的依赖是根本解法。企业应尽快部署FIDO2安全密钥、Windows Hello for Business或基于通行密钥(Passkey)的无密码登录。即便凭证泄露,攻击者也无法绕过硬件级身份验证。”
平台责任与行业协作亟待加强
此次事件再次暴露了开源生态治理的短板。尽管npm团队在接到报告后迅速下架了相关包,但攻击窗口期已足够造成实质性危害。
“公共基础设施不能只讲开放,不谈责任。”芦笛呼吁,“CDN服务商、包管理平台和浏览器厂商需要建立更紧密的威胁情报共享机制。例如,UNPKG可考虑对新发布包的JS资源进行基础行为分析,或对高频重定向脚本实施速率限制。”
同时,他也肯定了安全社区的快速响应:“从Safety公司的Paul McCarty首次预警,到Socket的深度溯源,再到npm的处置,整个链条体现了多方协作的价值。但我们需要更快、更自动化的联动。”
结语:信任不能成为漏洞
这场钓鱼攻击的精妙之处,在于它没有突破任何技术防线,而是利用了我们对“合法平台”的天然信任。npm是开发者信赖的工具,UNPKG是高效的资源分发网络——正因如此,它们才成了攻击者的理想掩体。
网络安全的本质,从来不只是堵漏洞,更是管理信任。当“可信来源”也可能被滥用时,我们必须重新思考:如何在便利与安全之间找到新的平衡点。
正如芦笛所言:“未来的攻防,不在代码里,而在信任链上。”
编辑:芦笛(公共互联网反网络钓鱼工作组)
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.