如何快速识别软件供应链后门?试试Chainguard开源的malcontent
文章介绍了供应链攻击的演变及应对工具malcontent。Shai-hulud 2.0事件展示了供应链攻击的自动化威胁。malcontent是一个开源工具,用于检测恶意软件能力及供应链风险变化,支持多种文件格式,并提供版本差异分析功能。 2025-12-29 10:35:0 Author: www.freebuf.com(查看原文) 阅读量:0 收藏

freeBuf

主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

如果说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 规则,帮助在版本迭代、构建产物与容器镜像中快速识别可疑行为与风险变化。

 _ _    _.  .    _   _    _  .  ___   _.   _  .  ___  
( | )  (_|  |_  (_  (_)  ( \_)   |   (/_  ( \_)   |  
           
           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 格式

第一种:编译项目安装

准备依赖库,下载项目

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  
  1. 规则装载与编译:将内置规则与第三方规则合并到一个只读 FS 中,使用 yara-x 编译,并做磁盘缓存(避免每次运行都重新编译大量规则)
  2. 输入解析:支持文件/目录递归;遇到归档(zip/tar/deb/rpm 等)会解包后继续扫描;遇到 OCI 镜像会拉取并导出后扫描
  3. 文件类型识别:programkind 先判定是否像"程序/脚本/可执行内容",默认会跳过明显的数据文件(也可通过开关包含)
  4. 并发扫描:用并发池复用 scanner 与 buffer,提高吞吐;命中结果再交给报告生成逻辑做风险聚合与解释
  5. 报告与渲染:统一生成 Report/DiffReport,再通过 renderer 输出到终端/Markdown/JSON/YAML/TUI 等

这里拉取一个用于测试的恶意镜像

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模式:差异分析,通过对比两个程序版本发现高风险变化

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/464399.html
如有侵权请联系:admin#unsafe.sh