导读:面对PyPI和npm上日益猖獗的恶意投毒,Datadog安全实验室其实早在2024年就开源了一款名为 Supply-Chain Firewall (SCFW) 的轻量级工具。它像防火墙一样驻守在开发者终端,能够实时拦截恶意包安装,并对已知漏洞发出预警,填补开发环境供应链安全的空白。

在现代软件开发中,开源软件供应链是不可或缺的基石。然而,这块基石正面临前所未有的侵蚀。

从植入挖矿脚本到窃取API密钥、用户凭证,针对开发者的开源供应链攻击正在不断增长。攻击者利用Typosquatting(近似域名抢注)或 Dependency Confusion(依赖混淆)将恶意代码植入开源包。

很明显,如果要求开发者在每次安装项目前手动审计数以千计的依赖包既不现实,也会极大拖慢开发效率。

SCFW 是什么?

简单说,SCFW 是一个包裹在包管理器的中间件。它通过拦截并检查pipnpmpoetry 的命令,分析即将安装的软件包是否安全。

1. 核心架构:双重数据源验证

SCFW 在执行安装前,会将目标包与两大“数据源”进行比对:

  • Datadog Security Research 数据集:包含已确认的恶意 PyPI 和 npm 包。

  • OSV.dev (Open Source Vulnerabilities):Google维护的开源漏洞数据库。

此外,SCFW也一定可扩展性,用户可以编写自定义验证器(Verifier)来接入企业内部的安全情报。

2. 零容忍阻断和风险提示

针对不同威胁等级,SCFW 采取不同的响应策略:

  • 恶意包:直接阻断

    如果目标包被判定为恶意软件(如包含后门),SCFW 会强制终止安装流程,不留任何余地。

    例:拦截已知的恶意包 passports-js

$ scfw run npm install passports-js

Package passports-js@0.0.1-security:

- Datadog Security Research has determined that package passports-js@0.0.1-security is malicious

- An OSV.dev malicious package advisory exists for package passports-js@0.0.1-security:

* https://osv.dev/vulnerability/MAL-2024-8868

The installation request was blocked. No changes have been made.

  • 漏洞包:交互式预警

    如果目标包存在已知漏洞(如CVE)但非恶意投毒,SCFW 会展示漏洞详情,并将决定权交给开发者。

    例:安装存在漏洞的 urllib3 版本时,二次提示确认

scfw run pip install urllib3==2.2.1

Package urllib3-2.2.1:

- An OSV.dev advisory exists for package urllib3-2.2.1:

* [High] https://osv.dev/vulnerability/GHSA-gm62-xv2j-4w53

- An OSV.dev advisory exists for package urllib3-2.2.1:

* [High] https://osv.dev/vulnerability/GHSA-2xpw-w6gg-jr37

- An OSV.dev advisory exists for package urllib3-2.2.1:

* [Medium] https://osv.dev/vulnerability/GHSA-48p4-8xcf-vxj5

- An OSV.dev advisory exists for package urllib3-2.2.1:

* [Medium] https://osv.dev/vulnerability/GHSA-34jh-p97f-mpxf

- An OSV.dev advisory exists for package urllib3-2.2.1:

* [Medium] https://osv.dev/vulnerability/GHSA-pq67-6m6q-mj2v

[?] Proceed with installation? (y/N):

包管理器

支持版本

检查子命令

npm

>= 7.0

install

(包括别名)

pip

>= 22.2

install

poetry

>= 1.7

add

installsyncupdate

进阶玩法:从单点防御到日志集成

SCFW 不仅仅是一个拦截工具,还具备极强的可观测性,对企业安全团队尤为重要。

1. 无感集成

通过配置向导 scfw configure,开发者可以设置 Shell Alias。当输入 npm install时,实际上是在运行 scfw run npm install。在不改变开发者习惯的前提下,提升安全性。这种无感安全也会降低落地的阻力。

2. 日志上云

SCFW 原生支持 Datadog Log Management。通过配置 API Key,本地的拦截记录、放行记录都可以实时推送到云端。

  • 对于开发者:无需关心繁杂的安全日志。

  • 对于管理员:可以获得一张全局视图,清晰看到团队机器上安装了哪些包、拦截了多少次攻击尝试。

快速上手

SCFW 目前已完全开源,并托管在 GitHub 上。虽然目前主要在 macOS 上提供完整支持(Linux 亦可用),不过不支持Windows。安装步骤:推荐使用 pipx 安装:

# 安装工具

pipx install scfw

# 运行配置向导(设置别名、日志集成等)

scfw configure

日常使用:如果没有设置Alias,只需在命令前加上 scfw run

scfw run pip install requests

scfw run npm install react

此外,SCFW 还提供了审计功能,可以扫描当前环境中已安装的包是否存在风险:

scfw audit --executable /usr/bin/python3 pip

小结与展望

在软件供应链攻击日益常态化的今天,Supply-Chain Firewall (SCFW) 提供了一种低成本的防御思路。它不再依赖开发者的人工判断,而是用自动化工具构建起一道防线。

对于关注开源供应链安全,不想在不知不觉中沦为“肉鸡”的开发人员来说,SCFW 绝对是一个值得尝试的工具。

不过可惜的是,在过去的一年,Python 开发圈子已经发生了一些变化。uv 凭借其安装速度和全能的各种功能,已经大面积取代了 pip 和 poetry 的生态位。12月GitHub上曾有用户提交 Issue 请求支持 uv,但 Datadog 至今尚未回应。

项目传送门:

  • GitHub: https://github.com/DataDog/supply-chain-firewall

  • 安装: pipx install scfw

参考资料

https://securitylabs.datadoghq.com/articles/introducing-supply-chain-firewall/

https://github.com/DataDog/supply-chain-firewall

声明:本文来自玄月调查小组,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。