随着软件供应链攻击日益猖獗,防御者往往处于被动“追赶”的状态。近日,WIZ发布了首个专为软件开发生命周期(SDLC)基础设施设计的威胁框架——SITF (SDLC Infrastructure Threat Framework)。不同于传统的MITRE ATT&CK框架,SITF不再局限于终端或云安全,而是聚焦于SDLC基础设施本身的安全性,提供了一套包含70多种特定攻击技术的可视化防御方案。

防御者的困境:当SDLC基础设施成为目标

回顾过去一年,针对SDLC基础设施的攻击呈现井喷之势。从Ultralytics劫持事件,到Shai-Hulud蠕虫的大规模传播,再到近期TrustWallet遭受的入侵,黑客们已经意识到:攻击SDLC基础设施具有极高的ROI

他们不再仅仅寻找代码中的漏洞,而是直接攻陷构建代码的“工厂”。长期以来,虽然我们在终端和云安全方面拥有成熟的框架(如ATT&CK),但在构建软件的基础设施保护上,业界却长期处于“各自为战”的状态。SITF正是在这种背景下应运而生。

什么是SITF?

SITF是一个专为软件“生产者”设计的开放框架。它将防御视野覆盖到了SDLC基础设施的五大支柱:Endpoint/IDE(终端/IDE)、VCS(版本控制系统)、CI/CD(持续集成/部署)、Registry(制品库)以及Production/云(生产环境/云)

项目地址:https://github.com/wiz-sec-public/SITF

与现有的安全模型相比,SITF通过三大核心概念确立了其独特价值:

1. 攻击流可视化

供应链攻击很少是孤立的。例如在Shai-Hulud 2.0攻击活动中,攻击者从CI/CD跳板到制品库,最终感染消费者终端。SITF引入了攻击流可视化工具(Attack Flow Visualizer),这是一个交互式的拖拽工具。防御者可以像画图一样,清晰地描绘出从入口点(如钓鱼邮件)到出口点(如二次供应链攻击)的完整路径。

2. 超过70种SDLC特有攻击技术

SITF建立了一个包含70多种特定攻击技术的库,涵盖了从VCS中的“冒名提交”到CI/CD流水线中的“Action缓存投毒”。每种技术都关联了相应的风险和控制措施。一旦你在模型中标记了某种威胁,系统就会生成一份详尽的控制清单。

3. 因果分解:风险 -> 技术 -> 控制

SITF不仅仅列出攻击手段,还将每个事件分解为因果链:

  • Technique(技术):“发生了什么?”(例如:T-C003: PWN Request)

  • Risk(风险):“为什么会发生?”(例如:允许来自Fork仓库的PR运行流水线)

  • Control(控制):“如何修复?”(例如:要求对来自Fork的PR进行显式批准)

通过这种映射,防御者可以从单纯的“检测技术”转变为“根除风险”。

实战演练:解析Shai-Hulud 2.0

为了证明该框架的实用性,研究团队使用SITF对复杂的Shai-Hulud 2.0攻击进行了完整建模。这并非单一事件,而是一个跨越VCS、CI/CD、制品库和终端的9步攻击。攻击复盘与SITF拆解:

攻击始于对开源代码仓库的恶意代码提交。SITF 框架将这一独立事件解构为因果链:

  • 攻击手法 (T-C003:PWN 请求):攻击者从代码仓库的分支提交了恶意的拉取请求(PR)。这一操作自动触发了 CI/CD 工作流的运行。

  • 风险成因 :为何攻击能够得逞?因为该代码仓库配置了"允许来自分支的 PR 触发流水线",且工作流本身具备"访问密钥的权限"。

  • 缺失的控制措施 :要阻止这种特定技术,该组织需要启用"分支保护规则"或"要求对来自复刻仓库的拉取请求进行明确批准"(两者都是版本控制系统组织层面的设置),或者"使用工作流配置错误扫描器"作为不良工作流的把关者——甚至更好的做法是,从一开始就教育开发者编写安全的工作流。框架本身并不限制安全控制措施的性质。

一旦获得初始访问权限,攻击便迅速升级。在 SITF 可视化工具中,WIZ还原了攻击链的后续步骤:

  • 步骤 2 (T-C005):从工作流中窃取密钥。 恶意构建脚本通过转储环境变量,窃取了 NPM 发布令牌。

  • 步骤 3 (T-R004):发布恶意软件包。 攻击者利用窃取的令牌,向公共注册表发布了被篡改的构件。

  • 步骤 4 (T-E001):在终端上执行恶意代码。 毫无戒心的开发者和 CI 运行器安装了这些软件包,导致恶意软件在其本地机器上执行。

  • 步骤 5 (T-E003):窃取本地密钥。 恶意软件使用 trufflehog 工具,从开发者终端上以明文形式存储的凭证中抓取信息。

  • 步骤 6 (T-C005):从工作流中窃取秘密数据。 作为一种额外的密钥收集技术,恶意软件创建了临时工作流来外泄 CI/CD 密钥。如果成功,这将允许对软件包进行二次投毒以及恶意软件的二次传播。

  • 步骤 7(T-E006):将本地机器注册为运行器。 攻击者将开发者的笔记本电脑注册为公司的自托管运行器,从而建立了持久化访问权限。

  • 步骤 8 (T-E010):终端基础设施破坏。 如果密钥数据外泄失败,恶意软件会尝试擦除本地文件系统。

  • 步骤 9 (V-004):通过个人代码仓库进行秘密数据外泄。 最后,恶意软件尝试创建一个包含提取到的秘密数据的代码仓库,并将其上传到与本地凭据关联的 GitHub 账户。如果本地未找到必要的 GitHub 凭据,则会使用其他现有的可用账户。

建议的工作流程如下:

  1. 访问项目的网站 https://wiz-sec-public.github.io/SITF/

  2. 打开可视化工具

  3. 查看攻击过程

  4. 探索相关技术:

通过SITF的可视化,防御者可以自动生成安全控制矩阵。该矩阵根据攻击阶段进行优先级排序,优先阻断“初始访问”,并在各个架构组件(如VCS、CI/CD)上落实具体的防御措施。

组件

类别

控制

状态

终端/集成开发环境

初始访问

终端上的 EDR

终端/集成开发环境

初始访问

强制要求扩展程序签名

....

终端/集成开发环境

发现与横向移动

本地DLP

终端/集成开发环境

入侵后阶段

终端上的 EDR

VCS

发现与横向移动

禁止使用个人仓库处理工作的策略

....

VCS

发现与横向移动

基于审计日志的检测基础设施

VCS

发现与横向移动

安全意识培训

CI/CD

初始访问

分支保护规则(VCS)

CI/CD

发现与横向移动

工作流中的 OIDC 设置

....

Registry

发现与横向移动

可信发布

....

为什么 ATT&CK和OWASP还不够?

你可能会问,我们已经有了MITRE ATT&CK和OWASP CI/CD Top 10,还需要新框架吗?

  • MITRE ATT&CK:是企业环境的行业标准,但缺乏针对SDLC基础设施的专用矩阵。它更侧重于“检测”,而在CI/CD环境中,构建“预防”程序更为关键。

  • OWASP CI/CD Top 10:非常适合列出风险清单,但缺乏架构上下文和时间流,无法展示一个组件(如IDE)的风险如何导致另一个组件(如生产环境)的妥协。

  • 其他方法论: 诸如 SLSA(完整性)、NIST SSDF(流程)和 SAP 的供应链分类法等资源提供了拼图的重要部分,但它们都缺少现代威胁建模所需的、以基础设施为中心的全面视角。

SITF填补了这一空白,它不仅回答“风险是什么”,更回答了“攻击者如何在系统中移动”以及“如何阻断下一次攻击”。

甚至还给AI准备了skills…

建议

SITF作为一个开源的工具,为安全团队提供了一个极佳的SDLC基础设施威胁建模起点。针对SDLC安全,小编建议大家关注以下几点:

  1. 立即排查PR策略:这是最常见的攻击入口。检查GitHub/GitLab设置,严禁来自Fork的PR自动触发包含Secrets访问权限的流水线。建议开启“Require approval for all outside collaborators”选项。

  2. 试用SITF进行桌面推演:直接访问SITF的GitHub Pages(无须安装),利用其“Technique Explorer”对自己当前的CI/CD环境进行一次桌面推演。

  3. 关注“本地开发环境”安全:正如文中所述,攻击者正越来越多地将目标对准开发者的IDE和本地机器。确保本地终端部署了EDR,并定期扫描本地存储的明文凭证。

参考资料:Introducing SITF: The First Threat Framework Dedicated to SDLC Infrastructure https://www.wiz.io/blog/sitf-sdlc-threat-framework

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