返回文章库

威胁情报深度解析:PostCSS伪装npm包三件套关联攻击链

查找币 漏洞披露 安全研究 Web3安全 区块链安全
威胁情报深度解析:PostCSS伪装npm包三件套关联攻击链

查找币安全研究院

链上取证分析 | Web3 风险核验 | Web3 事件响应
以合法授权、证据保全、隐私保护和可复核流程为前提,不要求用户在线提交敏感凭证或非公开材料。

查看研究院 研究报告中心
## 概述 近日,查找币安全监控系统在一次恶意npm包事件中成功捕获并关联了三个相互勾连的恶意样本:`postcss-minify-selector-0.1.9`、`postcss-minify-selector-parser-1.0.16` 和 `aes-decode-runner-pro-1.0.11`。这三个样本通过typosquatting手法——利用细微的拼写差异——冒充PostCSS生态中的高下载量合法包,构成了一条完整的供应链投毒攻击链。 **关键发现:** - 三个包的所有版本均为恶意,不存在任何安全版本 - 攻击者采用多阶段载荷投递机制,最终目标为Windows系统远程控制 - 包间存在代码同源关系,共享加密材料与执行框架 ## 攻击背景与伪装手法 ### 包名仿冒策略 攻击者精心选择了三个目标进行仿冒: 1. **postcss-minify-selector**(注意末尾无"s") - 仿冒对象:`postcss-minify-selectors`(末尾带"s") - 合法包周下载量:1836万次 - 伪装手段:仅去掉一个字母"s",使用相同的description、keywords和README 2. **postcss-minify-selector-parser** - 仿冒对象:`postcss-selector-parser`(周下载量超1.5亿) - 伪装为合法的姊妹包 3. **aes-decode-runner-pro** - 伪装为专业的AES加解密工具 ### 视觉欺骗技术 攻击者不仅复制了合法包的包名结构,还在README和源码组织方式上进行了深度模仿。开发者在使用时若稍有不慎,极易将恶意包当作合法包引入项目。 ## 攻击链深度拆解 整条攻击链由三个样本分工协作构成,以下按攻击流程逐步分析。 ### 第一步:导流包 postcss-minify-selector-0.1.9 该包的`package.json`声明`main`为`src/index.js`,并在`dependencies`中依赖`postcss-minify-selector-parser: ^1.0.16`。在npm语义化版本规则下,`^1.0.16`将解析到`1.0.16`,确保恶意版本被拉入`node_modules`。 **核心代码分析:** ```javascript // postcss-minify-selector-0.1.9/src/index.js const parser = require('postcss-minify-selector-parser'); // 立即调用,将控制流导向恶意依赖 parser.init(); ``` 该文件在被`require()`时立即将控制流导向`postcss-minify-selector-parser`的恶意子路径,无任何条件判断或延迟执行。 ### 第二步:载荷投递包 postcss-minify-selector-parser-1.0.16 该包在AES-GCM解密管线中隐藏了多阶段载荷,最终实现Windows远程控制。 **解密流程:** 1. 内置AES-GCM加密的载荷数据 2. 通过硬编码的密钥和IV进行解密 3. 解密后落地PowerShell脚本 4. PowerShell从伪装成NVIDIA驱动更新的域名下载二阶段文件 **关键IOC:** ``` 域名:nvidia-driver-update[.]com 下载路径:/win-driver-xd7d.zip ``` ### 第三步:试验型样本 aes-decode-runner-pro-1.0.11 该样本与执行器共享同一套代码骨架与加密材料,但默认密文仅为无害日志输出。分析认为,这可能是同家族攻击框架的前身或试验型样本,用于测试解密和执行链路。 ## 代码同源关系验证 通过项目内静态解包工具与逐文件源码比对,我们确认三个样本之间存在明确的同源关系: 1. **共享加密材料**:AES-GCM密钥和IV完全一致 2. **共享代码骨架**:解密执行流程的函数结构相同 3. **共享发布账号**:同一npm发布账号 ## 危害评估与威胁等级 **威胁等级:高危** - **攻击面**:npm供应链投毒,影响所有PostCSS生态开发者 - **影响范围**:Windows系统用户 - **最终载荷**:RAT(远程控制木马)+ 窃密模块 **文件哈希(SHA256):** ``` win-driver-xd7d.zip: b9a8ae1e6d2c875e21c77f3b9255ca0b3b0b3e0addbb2c3c865e5b95eb734d22 audiodriver.cp310-win_amd64.pyd: 164e322d6fbc62e254d73583acd7f39444c884d3f5e6a5d27db143fc25bc88b3 auto.cp310-win_amd64.pyd: 17832aa629524ef6e8d8d6e9b6b902a8d324b559e3c36dbd0e221ab1690be871 ``` ## 防护建议 ### 开发者防护措施 1. **严格验证包名**:安装前仔细核对包名,注意字母大小写和拼写差异 2. **使用锁文件**:启用`package-lock.json`或`yarn.lock`,锁定依赖版本 3. **定期审计依赖**:使用`npm audit`或`yarn audit`检查已知漏洞 4. **启用双因素认证**:保护npm账户安全 ### 项目级防护 1. **建立依赖白名单**:只允许使用经过审核的包 2. **实施代码审查**:对依赖包的更新进行代码审查 3. **部署安全监控**:集成查找币监控系统,实时检测恶意依赖 ### 应急响应 如已安装受影响包,请立即执行: ```bash npm uninstall postcss-minify-selector postcss-minify-selector-parser aes-decode-runner-pro # 清理缓存 npm cache clean --force # 重新安装依赖 npm install ``` ## 总结 这次PostCSS伪装npm包三件套攻击事件,展示了攻击者利用typosquatting手法进行供应链投毒的典型手法。三个恶意包通过精心设计的依赖链和执行链,实现了从代码引入到远程控制的全流程攻击。查找币安全团队已对攻击链完成完整还原,并提取了核心IOC。 开发者应提高警惕,在引入npm依赖时仔细核对包名,建立完善的依赖审计机制。查找币监控系统将持续监控此类威胁,为用户提供实时的风险预警。 --- *本文由查找币安全团队整理发布*
在文章库中查看和回复