文章总结: 本文介绍了Chainguard开源的工具malcontent,旨在应对Shai-hulud2.0等软件供应链攻击。该工具基于海量YARA规则与差分分析,能快速识别构建产物及容器镜像中的恶意能力与高风险变化,支持多格式扫描并接入CI/CD,有效帮助开发者发现供应链后门。 综合评分: 86 文章分类: 供应链安全,安全工具,恶意软件,漏洞分析
如何快速识别软件供应链后门?试试Chainguard开源的malcontent
原创
玄月调查小组
玄月调查小组
2025年12月29日 18:36 上海
背景
如果说2024年初的 XZ Utils 后门事件 展示了黑客长达数年的“潜伏”,那么刚刚席卷全球的 Shai-hulud 2.0(沙虫2.0) 则向我们展示了供应链攻击的另一种玩法。
2025年11月,代号为“Shai-hulud 2.0”的NPM蠕虫病毒以惊人的自动化程度重创了开源生态。与以往的点状投毒不同,这一次攻击者利用受害者的 GitHub Token 自动注册 Self-hosted Runner,瞬间将开发者的构建环境转化为新的感染源。短短数小时内,数万个仓库被污染,其传播之烈,正如《沙丘》中吞噬一切的沙虫。
但这仅仅是冰山一角。
从 SolarWinds 的上帝视角打击,再到如今具备“蠕虫化”特征的 Shai-hulud 2.0,软件供应链攻击已经完成了从偶发安全事件到常态化基础设施威胁的演变。在现代软件开发中,只要引用了一行第三方代码,就有可能将自家的城门钥匙交给了陌生人。面对代码深处错综复杂的依赖和防不胜防的投毒手段,我们需要一双能透视代码迷雾的“火眼金睛”。
今天,要介绍的Chainguard开源的malcontent,正是为了应对这种不对称战争而生。
它是一个面向供应链风险的恶意能力发现工具,通过上下文、差分分析与海量 YARA 规则,帮助在版本迭代、构建产物与容器镜像中快速识别可疑行为与风险变化。
malcontent简介
_ _ _. . _ _ _ . ___ _. _ . ___
( | ) (_| |_ (_ (_) ( \_) | (/_ ( \_) |
subtle malware discovery tool
malcontent 是一个用 Go 编写的静态扫描工具,依赖yara-x(YARA 的 Rust 实现),并内置/集成上万条规则(rules/ + 可选 third_party/)。它主要解决的问题是:
- 在构建产物、发布物、容器镜像、归档包里发现可疑能力(例如 C2 通信、凭据窃取、持久化、反分析等)
- 通过版本差分把“正常变化”与“异常高风险变化”区分开(供应链场景的关键)
- 输出结构化结果,方便接入 CI门禁、工单、审计与回归测试
malcontent 的核心定位很清晰:用大量 YARA 规则做“带上下文”的恶意能力发现,并把结果组织成适合 CI/CD 的报告与差分输出。它的独特之处在于不只做“命中/不命中”,而是强调能力(capability)与风险(risk),尤其擅长用 diff 发现供应链版本迭代中的异常高风险变化。
支持的文件格式:
-
二进制: ELF、Mach-O、PE、a.out
-
脚本: Shell、Python、JavaScript、PHP、Ruby、Perl
-
压缩包: tar、zip、apk、deb、rpm
-
容器镜像: OCI 格式
malcontent安装方式
第一种:编译项目安装
准备依赖库,下载项目
sudo apt-get install -y pkgconf libssl-dev
git clone https://github.com/chainguard-dev/malcontent.git
编译yara以及malcontent
cd malcontent
make install-yara-x
make out/mal
sudo install out/mal /usr/local/bin
第二种:使用镜像版本的malcontent
docker pull cgr.dev/chainguard/malcontent:latest
第三种:brew安装
brew install malcontent
malcontent工作原理
- 规则装载与编译:将内置规则与第三方规则合并到一个只读 FS 中,使用 yara-x 编译,并做磁盘缓存(避免每次运行都重新编译大量规则)
- 输入解析:支持文件/目录递归;遇到归档(zip/tar/deb/rpm 等)会解包后继续扫描;遇到 OCI 镜像会拉取并导出后扫描
- 文件类型识别:programkind 先判定是否像“程序/脚本/可执行内容”,默认会跳过明显的数据文件(也可通过开关包含)
- 并发扫描:用并发池复用 scanner 与 buffer,提高吞吐;命中结果再交给报告生成逻辑做风险聚合与解释
- 报告与渲染:统一生成 Report/DiffReport,再通过 renderer 输出到终端/Markdown/JSON/YAML/TUI 等
malcontent使用方法
这里拉取一个用于测试的恶意镜像
docker pull romanchikov/malware:cryptominer-container
scan模式:基础扫描,快速扫描目录,返回最高严重性的发现
docker run --rm cgr.dev/chainguard/malcontent scan -i romanchikov/malware:cryptominer-container
analyze模式:深度分析,按风险级别分类显示恶意软件常见行为
docker run --rm cgr.dev/chainguard/malcontent analyze -i romanchikov/malware:cryptominer-container
diff模式:差异分析,通过对比两个程序版本发现高风险变化
以下分别是bun_environment.js检测出的风险
关于Chainguard公司
Chainguard 是一家总部位于美国的网络安全公司,专注于软件供应链安全。自 2021 年成立以来,Chainguard 凭借其创新的“默认安全”理念崛起,成为网络安全独角兽企业。在 2025 年的融资中,其估值已达到 35 亿美元。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:玄月调查小组 玄月调查小组《如何快速识别软件供应链后门?试试Chainguard开源的malcontent》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论