文章总结: 本文构建了供应链漏洞深度挖掘体系,涵盖软件供应链、第三方服务及开发工具链三大层面。通过Notepad++更新劫持、SonicWall云备份漏洞等最新实战案例,详细剖析攻击链与挖掘方法。文章介绍了GuardDog等自动化检测工具与恶意包数据集,提供了针对开源包、云服务及IDE插件的具体防护策略。核心在于揭示供应链攻击的杠杆效应,强调从单点防御转向全网供应链安全监控的紧迫性。 综合评分: 88 文章分类: 供应链安全,漏洞分析,实战经验,渗透测试,安全工具
供应链漏洞挖掘:从“单点突破”到“全网沦陷”的深度狩猎指南
原创
逍遥 逍遥
逍遥子讲安全
2026年3月8日 00:00 广东
个Notepad++更新,让开发者机器成为黑客的跳板;一个SonicWall云备份漏洞,让74家银行集体沦陷——供应链攻击的本质是:你信任的,正在杀死你。
2025年,npm平台恶意包数量突破10,000个,同比增长超过100%。同年,Notepad++的更新分发服务被攻陷,攻击者在长达4个月的时间里,向特定目标投递了三种完全不同的恶意载荷。而在另一起事件中,攻击者通过SonicWall云备份服务的API漏洞,获取了防火墙配置数据,最终导致74家银行被勒索软件攻击。
这不是偶然,这是供应链攻击的常态化。本文将首次完整公开我的供应链漏洞深度挖掘体系——从软件供应链、第三方服务供应链到开发工具链,涵盖4大类核心攻击面、8个2025-2026年最新实战案例、全套挖掘方法与自动化武器库,全是干到拧不出水的干货。
第一章 重新认知供应链攻击:为什么它是“核武器级”漏洞
1.1 供应链攻击的三层穿透
| 攻击层次 | 攻击目标 | 典型案例 | 破坏半径 | | — | — | — | — | | 软件供应链 | 开源包、二进制组件、更新服务 | Notepad++更新劫持、npm恶意包 | 可达数百万开发者 | | 第三方服务供应链 | 云服务、SaaS、外包商 | SonicWall云备份漏洞、Oracle Cloud泄露 | 波及数千家企业 | | 开发工具链 | IDE插件、CI/CD系统、代码仓库 | VS Code Marketplace恶意扩展 | 直接影响开发环境 |
核心认知:供应链攻击的可怕之处在于杠杆效应——攻击者攻破一个上游,就能控制成百上千个下游。
1.2 为什么2025-2026年是供应链攻击的爆发年
ReversingLabs的《2026软件供应链安全报告》揭示了几大趋势:
- npm平台:2025年检测到超过10,000个恶意包,占各平台检测总量的近90%
- 开发工具链攻击:攻击者开始针对VS Code Marketplace,利用平台特性渗透开发者环境
- AI安全风险:攻击者利用Python的Pickle格式在Hugging Face上分发恶意模型
- 凭证窃取升级:Shai-hulud蠕虫通过npm传播,将窃取的私钥暴露在公开仓库中
一句话总结:攻击者已经从“碰运气”的域名仿冒,进化到“精准打击”的供应链深度渗透。
第二章 软件供应链漏洞挖掘
2.1 开源包恶意代码检测
GuardDog:开源恶意包检测利器
Datadog开源的GuardDog是一个专门用于检测开源包恶意行为的Python工具,支持PyPI、npm和Golang生态系统。
核心技术:
Python# GuardDog的核心检测架构- Metadata scanners:检查包的元数据,如typosquatting、包含二进制可执行文件- Semgrep rules:语言特异性语义分析,检测复杂行为模式(如窃取环境变量并外发)- YARA rules:复杂模式匹配(如base64编码字符串)
实战流程:
- 全量摄取:每天处理约20,000个新发布的开源包
- 基于发现过滤:选择同时触发多个告警的包(如访问敏感系统文件+外发数据)
- 人工研判:安全研究员确认是否为真正的恶意包
成果:Datadog已收集近5,000个恶意包样本,并公开数据集。
2.2 安装钩子滥用检测
最常用的TTP:攻击者利用包管理器提供的安装钩子(如npm的preinstall)实现代码执行。
实战案例:Stressed Pungsan的npm攻击
2024年,朝鲜背景的Stressed Pungsan团伙通过npm包分发恶意软件:
json// 恶意包的package.json{ "name": "legitimate-looking-package", "scripts": { "preinstall": "node download_and_execute.js" }}
用户在安装包的瞬间,恶意代码就已执行。
挖掘方法:
bash# 检查npm包的所有脚本钩子npm view <package-name> scripts# 自动检测可疑脚本grep -r "preinstall\|postinstall\|preuninstall" package.json
2.3 更新基础设施劫持
Notepad++更新劫持事件(2025年6月-12月)
2025年6月至9月,Notepad++的托管服务提供商被攻陷,攻击者获得了更新分发的控制权。令人震惊的是,即使在9月失去服务访问权限后,攻击者仍保留内部服务凭证直至12月。
三种攻击链:
链#1:ProShow漏洞利用(2025年7月底-8月初)
攻击者将恶意更新文件托管在http://45.76.155[.]202/update/update.exe。该文件执行时:
- 创建
%appdata%\ProShow目录 - 执行
cmd /c whoami&&tasklist > 1.txt收集系统信息 - 通过
temp.sh上传结果,将URL通过User-Agent发送回C2 - 释放ProShow.exe(合法软件)和包含漏洞利用的load文件
- 利用ProShow 2010年代的已知漏洞执行shellcode,下载Cobalt Strike Beacon
链#2:Lua脚本加载(2025年9月中旬-月底)
攻击者改用新的感染链:
- 工作目录改为
%APPDATA%\Adobe\Scripts - 收集更详细的信息:
whoami&&tasklist&&systeminfo&&netstat -ano - 释放alien.dll、lua5.1.dll、script.exe和alien.ini
- 执行
script.exe alien.ini,编译的Lua脚本将shellcode注入内存 - 下载Cobalt Strike Beacon
受影响目标:越南、萨尔瓦多、澳大利亚的个人用户,菲律宾政府机构,萨尔瓦多金融机构,越南IT服务提供商。
挖掘方法:
bash# 检测异常更新请求# 监控出站连接到非常见文件托管服务(如temp.sh)# 检查进程创建链:GUP.exe -> update.exe -> cmd.exe
2.4 恶意包数据集与实时防护
Datadog的Supply-Chain Firewall是一个pip和npm的封装器,利用每日更新的恶意包数据集和OSV.dev公告,阻止已知恶意包的安装。
bash# 使用供应链防火墙安装包scfw install <package-name>
第三章 第三方服务供应链漏洞挖掘
3.1 云服务提供商漏洞
SonicWall云备份漏洞(CVE-2025-XXXX)
2025年2月,SonicWall的一次API代码变更引入了安全缺口,使得未经授权的访问者能够获取存储在云中的防火墙配置备份文件。这些文件包含:
- AES-256加密的凭证
- 配置数据
- MFA备用码
攻击链:
- 攻击者通过该API漏洞获取Marquis公司的防火墙配置备份
- 利用泄露的MFA备用码绕过已启用的多因素认证
- 部署勒索软件,导致运营中断
- 后果:波及74家银行,Marquis面临超过36起消费者集体诉讼
挖掘方法:
bash# 检测云备份接口的未授权访问# 测试常见路径:/backup、/api/backup、/export/config# 检查备份文件是否包含敏感凭证
3.2 云平台SSO/LDAP泄露
Oracle Cloud大规模凭证泄露(2025年3月)
攻击者“rose87168”从Oracle Cloud的SSO/LDAP服务中窃取了约600万条记录,包括:
- JKS文件
- 加密的SSO密码
- 密钥文件
- 其他关键凭证材料
影响:超过140,000个租户可能受影响。由于Oracle Cloud支持无数企业,这不仅是孤立事件,更是可能波及整个行业的供应链级沦陷。
3.3 暗网情报与供应链风险监控
Bitsight推出的Dark Web Intelligence for Supply Chains服务,将暗网情报映射到组织的供应商生态系统。
核心功能:
- MITRE ATT&CK映射:将第三方暴露面与攻击者TTPs关联
- 动态漏洞可利用性评分:基于实际利用活动预测哪些漏洞将被攻击
- 实时告警:在供应商公开披露前发现被讨论、被针对或被攻陷的迹象
企业反馈:Wienerberger CISO表示,暗网情报让他们在供应商自己意识到问题之前就获得了威胁可见性。
第四章 开发工具链供应链漏洞挖掘
4.1 VS Code Marketplace攻击
ReversingLabs在2025年发现多个针对VS Code Marketplace的恶意活动:
攻击手法1:扩展名重用
- 攻击者利用平台漏洞,重用已下架但合法的扩展名,上传恶意版本
攻击手法2:GitHub PR滥用
- 攻击者利用GitHub的pull request功能,将合法扩展转为恶意扩展
挖掘方法:
bash# 检测已安装扩展的异常行为# 监控扩展的网络连接、文件访问# 定期验证扩展的发布者和签名
4.2 CI/CD基础设施攻击
攻击者开始瞄准CI/CD管道,通过入侵构建系统向最终产品注入恶意代码。
Shai-hulud蠕虫案例:
- 首次出现的注册表原生蠕虫,通过npm传播
- 两波攻击中感染了近1,000个npm包
- 受影响的包括
@ctrl/tinycolor(周下载220万)、@asyncapi/specs(周下载140万)等广泛使用的包 - 攻击者将窃取的私钥硬编码在代码中,通过“迁移”私有仓库使凭证公开
4.3 AI/ML供应链攻击
随着AI编程的普及,AI/ML供应链成为新战场。
nullifAI攻击:
- 攻击者利用Python的Pickle格式在Hugging Face上分发恶意ML模型
- 随后又在PyPI上针对阿里巴巴AI实验室的用户
- 证明恶意ML模型已进入威胁态势
MCP服务器攻击:
- 随着模型上下文协议(MCP)服务器的普及,研究人员发现了首个恶意MCP服务器
postmark-mcp,通过npm分发
第五章 实战案例库(完整攻击链)
【案例1】Notepad++更新劫持:4个月,3种链,多个目标
时间:2025年6月-12月 来源:托管服务提供商被攻陷 影响:越南、菲律宾、萨尔瓦多、澳大利亚的政府、金融、IT机构
攻击链复盘:
- 初始访问:攻击者入侵Notepad++的托管服务提供商
- 持久化:即使9月失去服务访问权限,仍保留内部服务凭证至12月
- 更新劫持:将notepad-plus-plus.org的更新流量重定向到攻击者控制的服务器
- 定向投递:根据目标地理位置和行业,投递三种不同的恶意载荷
- 执行链1(7-8月):GUP.exe → update.exe → ProShow.exe + load(漏洞利用)→ Metasploit下载器 → Cobalt Strike Beacon
- 执行链2(9月):GUP.exe → update.exe → script.exe + alien.ini(Lua脚本)→ 内存shellcode → Cobalt Strike Beacon
- 数据外传:通过temp.sh上传系统信息,C2地址在User-Agent中传输
挖掘要点:
- 监控
temp.sh等文件托管服务的异常上传 - 检测
cmd /c whoami等侦察命令的执行 - 分析进程链中出现的非标准文件路径(
%APPDATA%\ProShow、%APPDATA%\Adobe\Scripts)
【案例2】SonicWall云备份:一个API漏洞,74家银行沦陷
时间:2025年2月(漏洞引入)-8月(攻击发生) 来源:SonicWall API代码变更引入漏洞 影响:Marquis Software Solutions及其服务的74家银行
攻击链复盘:
- 漏洞引入:SonicWall在2025年2月的API代码变更中,使云备份服务暴露安全缺口
- 凭证获取:攻击者通过API获取Marquis防火墙的配置备份,内含AES-256加密凭证和MFA备用码
- 绕过MFA:利用泄露的MFA备用码,绕过已启用的多因素认证
- 勒索软件部署:在Marquis网络内部署勒索软件,导致运营中断
- 连锁反应:影响Marquis服务的74家银行,引发超过36起集体诉讼
挖掘要点:
- 审计第三方云备份服务的API权限配置
- 检查备份文件是否包含明文或可解密凭证
- 测试备份接口的未授权访问(IDOR)
【案例3】Shai-hulud蠕虫:注册表原生的自我复制
时间:2025年 来源:npm平台 影响:近1000个npm包,包括周下载220万的@ctrl/tinycolor
攻击链复盘:
- 初始包上传:攻击者上传包含恶意代码的npm包
- 自我复制:蠕虫在感染后,利用窃取的GitHub凭证访问其他仓库
- 代码注入:将恶意代码注入到广泛使用的开源包中
- 凭证收割:窃取硬编码的私钥、API密钥等
- 数据暴露:将私有代码仓库“迁移”到公开仓库,使凭证公开
挖掘要点:
- 监控npm新包的异常行为(如安装钩子、网络请求)
- 检查开源包是否包含可执行的二进制文件
- 使用GuardDog等工具进行自动化检测
【案例4】Jaguar Land Rover供应链瘫痪
时间:2025年8月-10月 来源:IT系统遭勒索软件攻击 影响:英国多家工厂停产六周,数千供应商受波及
攻击链复盘:
- 初始入侵:攻击者攻破JLR的IT系统,部署勒索软件
- 运营中断:JLR主动关闭系统以控制损害,生产停滞
- 连锁反应:欧洲供应商因JLR停产面临破产风险
- 政府干预:英国政府提供15亿英镑贷款担保以稳定供应链
财务损失:季度税前亏损约4.85亿英镑,其中1.96亿英镑为事件直接成本。
启示:供应链攻击不只影响数据,更直接影响物理生产和实体经济。
【案例5】VS Code Marketplace扩展劫持
时间:2025年 来源:VS Code Marketplace平台特性被滥用 影响:下载恶意扩展的开发者
攻击链复盘:
- 识别目标:寻找已下架但仍有大量用户的合法扩展
- 名称重用:利用平台漏洞,用相同名称上传恶意版本
- GitHub PR滥用:通过pull request将合法扩展转为恶意
- 感染开发环境:恶意扩展在开发者机器上执行任意代码
挖掘要点:
- 定期审计VS Code已安装扩展
- 验证扩展的发布者和签名
- 监控扩展的更新历史和权限申请
第六章 自动化武器库
6.1 GuardDog:开源恶意包检测
bash# 安装GuardDogpip install guarddog# 扫描本地npm包guarddog npm scan <package-name># 扫描本地PyPI包guarddog pypi scan <package-name># 生成SARIF报告guarddog npm scan <package-name> --format sarif
自定义检测规则:
python# 自定义Semgrep规则示例rules: - id: suspicious-env-exfil patterns: - pattern: | import requests requests.post($URL, data=os.environ) message: "Possible exfiltration of environment variables" languages: [python] severity: WARNING
6.2 恶意包数据集API
python# 查询Datadog恶意包数据集import requestsdef check_malicious_package(ecosystem, package_name): url = f"https://raw.githubusercontent.com/datadog/malicious-software-packages-dataset/main/{ecosystem}/{package_name}.json" response = requests.get(url) if response.status_code == 200: return response.json() # 存在恶意记录 return None
6.3 更新劫持检测脚本
python# update_hijack_detector.pyimport requestsimport hashlibimport jsonclass UpdateHijackDetector: def __init__(self, software_name, update_url, expected_hash=None): self.software = software_name self.url = update_url self.expected_hash = expected_hash
def check_update(self): """下载更新文件并验证""" response = requests.get(self.url, timeout=10) if response.status_code != 200: return {"status": "error", "msg": "无法下载更新"}
# 计算哈希 file_hash = hashlib.sha256(response.content).hexdigest()
# 与预期哈希对比 if self.expected_hash and file_hash != self.expected_hash: return { "status": "suspicious", "msg": f"哈希不匹配: 预期{self.expected_hash}, 实际{file_hash}", "hash": file_hash }
# 检查更新文件中的异常特征 suspicious_indicators = self.check_suspicious_patterns(response.content) if suspicious_indicators: return { "status": "suspicious", "msg": f"发现可疑特征: {suspicious_indicators}", "indicators": suspicious_indicators }
return {"status": "clean", "hash": file_hash}
def check_suspicious_patterns(self, content): """检查更新文件中的可疑模式""" indicators = []
# 检查临时文件托管服务 if b"temp.sh" in content or b"pastebin.com" in content: indicators.append("文件托管服务引用")
# 检查系统信息收集命令 if b"whoami" in content and b"tasklist" in content: indicators.append("系统信息收集")
# 检查APPDATA路径操作 if b"%APPDATA%" in content or b"AppData" in content: indicators.append("APPDATA目录操作")
return indicators if indicators else None
6.4 Nuclei供应链检测模板
yamlid: suspicious-npm-packageinfo: name: Suspicious npm Package Detection author: supply-chain-hunter severity: mediumrequests: - method: GET path: - "https://registry.npmjs.org/{{package}}"
extractors: - type: json name: scripts json: - ".scripts"
matchers: - type: word words: - "preinstall" - "postinstall" - "install" condition: or part: scripts
第七章 防御视角:构建供应链韧性
7.1 OSC&R框架:供应链的ATT&CK
OSC&R是第一个也是唯一一个专注于软件供应链的攻击矩阵。它将攻击者的战术、技术和过程系统化组织,覆盖:
- 第三方库和组件漏洞
- 构建和部署系统的供应链攻击
- 被感染的软件更新
应用方式:
- 评估现有防御措施
- 确定优先应对的威胁
- 跟踪攻击组织的行为
- 设定渗透测试和红队演习范围
7.2 企业自查清单
- 是否对所有第三方开源包进行恶意代码扫描?(如GuardDog)
- 是否监控npm/PyPI等平台的安装钩子滥用?
- 软件更新机制是否有签名验证和防回滚?
- 是否审计云备份接口的权限配置?
- 是否监控暗网/深网中关于供应商的讨论?(如Bitsight)
- VS Code等开发工具扩展是否经过验证?
- CI/CD系统是否受最小权限原则保护?
- 是否建立供应链事件响应预案?
第八章 结语:信任的终结
Notepad++事件告诉我们:即使你信任的软件本身是安全的,它的分发渠道也可能被攻陷。
SonicWall事件告诉我们:即使你启用了MFA,备份文件泄露也能让它形同虚设。
Shai-hulud蠕虫告诉我们:攻击者正在用自我复制的方式,让供应链攻击指数级扩散。
供应链安全的本质,不是信任,是验证。
下次评估一个系统时,别只盯着它自己的代码。
先问自己四个问题:
- 它依赖的每个开源包都安全吗?
- 它的更新机制能被劫持吗?
- 它的服务提供商够可靠吗?
- 它的开发工具链被污染过吗?
答案,往往决定你是在防守,还是在裸奔。
而你的挖掘能力,也在这四个问题的延长线上。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:逍遥子讲安全 逍遥 逍遥《供应链漏洞挖掘:从“单点突破”到“全网沦陷”的深度狩猎指南》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论