朝鲜黑客PolinRider行动狂撒108个恶意包,npm/Go/Chrome全面沦陷
朝鲜APT组织在PolinRider行动中发布108个恶意包和扩展(npm、Go、Composer、Chrome),通过招聘诱骗开发者感染BeaverTail和OmniStealer。已攻陷1951个GitHub仓库,利用VS Code任务执行和Git历史重写逃逸检测。本文提供完整攻击链分析和防御建议。
🎯 Critical APT组织
朝鲜APT组织在PolinRider行动中发布了108个恶意软件包和浏览器扩展,覆盖npm、Packagist、Go模块和Chrome扩展,通过伪造招聘诱骗开发者执行恶意代码。该活动已攻陷1951个GitHub仓库,利用VS Code任务文件、Git历史重写等技术隐蔽传播BeaverTail变种和OmniStealer窃密木马。
来源:The Hacker News | 2026-07-04 | 原文链接
🔍 关键发现
- 攻击者发布了162个恶意发布工件,对应108个唯一包/扩展,包括19个npm库、10个Composer包、61个Go模块和1个Chrome扩展。
- 已感染1951个公开GitHub仓库(涉及1047个唯一所有者),利用VS Code任务文件(runOn:folderOpen)实现文件夹打开即执行任意代码。
- 攻击者通过篡改维护者账户(利用过期域名接管或账户恢复路径)而非窃取凭证,并使用Windows批处理脚本静默修改最后一次提交,伪造Git历史。
⚔️ 攻击链分析
1. 攻击者在LinkedIn/GitHub等平台伪装招聘人员,引诱目标安装恶意npm包或VS Code扩展。 2. 植入的恶意载荷(含混淆JavaScript)搜索并修改postcss.config.mjs等配置文件,或在VS Code任务文件中注入代码。 3. 受害者打开包含恶意任务的文件夹时,触发执行从区块链基础设施(TRON/Aptos/BNB Smart Chain)获取加密的第二阶段Payload。 4. 最终加载DEV#POPPER RAT后门或OmniStealer窃密木马,实现远程控制和数据窃取。
🚩 失陷指标 (IOC)
npm包:@rollup/polyfill-* 系列(伪装成Rollup polyfill工具)Go模块:伪装成合法库的恶意模块(具体名称未披露)Chrome扩展:单一恶意扩展(未公开ID)C2通信:通过TRON/Aptos/BNB Smart Chain区块链基础设施获取加密Payload恶意文件:.vscode/tasks.json(含runOn:folderOpen指令),fake字体文件(.woff2伪装)
🛡️ 缓解建议
- ✅ 立即检查开发者工作站和GitHub仓库中是否存在非预期的.vscode/tasks.json、postcss.config.mjs、vite.config.js等文件修改。
- ✅ 轮换所有已暴露的密钥(API密钥、SSH密钥、云凭证),从干净机器重建环境。
- ✅ 审计Git历史,使用git log --format=fuller或仓库活动日志检查异常的时间戳和强制推送记录。
- ✅ 删除受影响包版本,从已知良好的lockfile重建依赖,并使用工具扫描npm/Go/Composer依赖中的恶意包。
涉及漏洞:[]
⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。
🤖 常见问题解答(FAQ)
❓ 攻击者如何绕过GitHub代码审查?
通过重写Git历史(force push、anti-dated commits)使恶意更改看似由原作者在更早时间提交,导致GitHub landing page和历史记录不可信。
❓ 开发者如何检测自己是否被感染?
检查仓库中是否存在.vscode/tasks.json(含runOn:folderOpen)、被篡改的配置文件(postcss.config.mjs等)、或伪装为.woff2的JavaScript载荷。
❓ 为什么攻击者选择区块链获取载荷?
利用TRON/Aptos/BNB Smart Chain等公共区块链基础设施存储加密Payload,使C2流量难以被传统网络监控阻断,且抗审查性强。