供应链安全工具成熟度:从 SAST 到 SLSA
软件供应链安全专题 · EP.03 · 2026-08-22
上海见形信息科技有限公司 · 灵御(Aegis)安全实验室
编译阶段的依赖风险
Rust 过程宏、包管理器安装脚本与构建插件可以在生成制品之前执行代码。arrayref 与恶意依赖 proc-macro1 的供应链事件,涉及维护者身份、依赖变化、构建行为和制品分发之间的关系。
当依赖来自已经被接管的合法发布账号时,包名、版本和签名都可能符合常规检查。安全判断需要同时检查依赖来源、代码变化、执行行为与发布授权。
六类工具分别检查什么
| 工具类别 | 主要产出或检查对象 | 需要配合的措施 |
|---|---|---|
| SAST | 源代码中的漏洞、危险调用与凭证 | 审查构建插件、动态加载和未覆盖代码 |
| SCA | 已知漏洞、许可证、依赖版本与关系 | 异常依赖检测、来源审核和恶意代码分析 |
| SBOM | 组件清单、版本、依赖关系与生成信息 | 与发布制品对应,检查完整性与准确性 |
| 制品签名 | 制品摘要、签名者与分发完整性 | 签名者授权、身份检查和部署验签 |
| Provenance | 制品来源、构建服务与构建输入 | 验证声明、构建服务身份和允许的源代码版本 |
| 构建隔离与远程证明 | 任务隔离、执行环境与证明材料 | 网络限制、凭证隔离、运行行为检查与证明校验 |
SBOM 支持回答组件清单问题,签名支持检查完整性与身份,Provenance 支持追踪构建来源。每一项都需要消费方执行验证,才能对部署决策产生作用。
SLSA Build 等级与工程要求
SLSA v1.0 的 Build track 定义 L1、L2 与 L3,等级描述围绕构建来源和构建平台保证逐步增加。
| 等级 | 核心保证 | 企业需要建立的能力 |
|---|---|---|
| Build L1 | 存在描述构建过程的 Provenance | 记录制品、构建输入和过程,向下游提供来源声明 |
| Build L2 | 在托管构建平台生成带认证的 Provenance | 由可信构建服务出具声明,验证制品摘要与构建者身份 |
| Build L3 | 构建平台提供更强的隔离与来源防伪保证 | 任务隔离、保护证明生成机制,检查构建平台是否满足要求 |
企业可结合业务需要采用 TEE 与远程证明。是否达到 SLSA 等级,应逐条检查对应规范要求;工具名称和部署清单需要连接到可验证的保证。
从维护者账号到生产部署
| 攻击阶段 | 可观察信号 | 对应检查 |
|---|---|---|
| 发布账号被接管 | 异常登录、授权变化和发布节奏 | 防钓鱼 MFA、发布权限管理和异常告警 |
| 新版本增加依赖 | lockfile、依赖图和包内容变化 | 依赖差异审核、SCA 与来源允许清单 |
| 安装或编译执行 | 新进程、异常文件访问和出站连接 | 一次性 runner、执行隔离和行为监控 |
| 构建结果被污染 | 制品内容与预期变化 | 制品分析、SBOM、测试与来源验证 |
| 合法身份发布恶意制品 | 身份有效但内容异常 | 发布审批、行为检测和独立内容检查 |
| 消费方部署 | 镜像、签名、来源与策略记录 | 部署前验证、允许的来源和运行时监控 |
签名后的恶意制品仍可能通过完整性校验。来源验证需要检查构建输入、构建服务与发布授权,并与制品内容分析共同使用。
六项建设工作及验证证据
SBOM 自动生成与制品关联
在 CI 中使用 Syft、cdxgen 等工具生成 CycloneDX 或 SPDX 格式清单。记录生成阶段、工具版本和制品摘要,按源代码、构建结果、发布镜像与运行环境检查覆盖范围。
制品签名和部署验签
关键容器镜像、二进制和 SDK 使用 Sigstore / Cosign 等机制签名。部署策略检查签名者身份、预期发行者、制品摘要和允许的仓库,失败时阻止发布并产生告警。
构建来源声明
使用适合平台的 Provenance 生成器,例如 slsa-github-generator 或 Tekton Chains。来源声明与制品摘要关联,下游验证构建服务身份、仓库、commit 和构建参数。
构建隔离与凭证保护
为构建任务提供一次性执行环境,限制任务间共享状态。云访问、镜像推送和签名授权使用最小权限与短期凭证,限制构建任务的网络出口。
证明保存与持续校验
保留制品、签名、来源声明、SBOM 和发布记录之间的关系。根据业务需要使用防篡改对象存储、透明日志与远程证明,并验证其各自提供的保证。
供应链事件响应
依赖或构建服务发生安全事件时,能够查询受影响版本、构建任务、制品和部署位置。处置流程包括阻止新部署、撤销授权、轮换凭证、重新构建与通知使用方。
