软件供应链安全

共 18 题
#

1. pnpm-lock.yaml 等锁文件如何保证依赖可复现,与 npm/yarn 锁文件在供应链防护上有何差异?

A 锁文件通过 integrity 校验值防止包被篡改或替换,并记录每个包的 resolved 地址 ✓ 正确答案
B 锁文件只锁定直接依赖,不记录传递依赖版本
C npm 与 pnpm 的锁文件在结构上完全一致,无任何差异
D 锁文件一旦生成就永远有效,不可能再引入漏洞
#

2. 如何在 Buildkite 等 CI 平台上落地供应链安全,即构建环境隔离、凭据保护与产物签名?

A CI 平台应使用长期密钥注入,方便构建复用
B 产物签名只用于审计,不影响消费方对完整性的校验
C 构建环境无需隔离,所有 pipeline 可共享同一环境
D 凭据应按最小权限原则注入,并优先使用短期令牌,构建产物应通过签名校验完整性 ✓ 正确答案
#

3. 如何用 grype 对容器镜像与 SBOM 进行漏洞扫描,并将扫描结果接入 CI 门禁与修复流程?

A grype 只能扫描容器镜像,不能扫描 SBOM
B grype 的 JSON 输出不包含漏洞的修复版本信息
C grype 可通过 `--fail-on high` 让扫描在发现高严重度漏洞时以非零退出码失败,从而接入 CI 门禁 ✓ 正确答案
D grype 扫描结果只能人工查看,无法被脚本解析
#

4. Bazel remote cache 在共享构建缓存时存在哪些供应链风险(如缓存投毒),如何缓解?

A 共享构建缓存不存在安全风险,因为 Bazel 基于内容寻址
B 缓存投毒指攻击者向共享缓存写入伪造产物,使后续构建命中被篡改的构建结果 ✓ 正确答案
C 缓存应允许任何构建者写入以提升构建效率
D 缓存投毒只影响缓存命中率,不影响构建产物安全
#

5. Renovate 如何自动化依赖升级,其升级分组、频率控制与回归风险如何管理?

A Renovate 只能检测依赖新版本,无法自动创建升级 PR
B Renovate 会忽略传递依赖,只升级直接依赖
C Renovate 升级 PR 必须全部人工合并,无法自动合并
D 可用 packageRules 做升级分组,用 schedule 控制频率,并让 CI 门禁约束自动合并以控制回归风险 ✓ 正确答案
#

6. Tekton Chains 如何在 CI 流水线中为构建产物生成签名与可验证的 provenance 溯源信息?

A Tekton Chains 只能记录构建构建日志,不能生成签名
B Chains 并不能为产物生成签名与 provenance 证据
C Tekton Chains 自动监听 PipelineRun 完成事件,为产物生成签名与可验证的 in-toto provenance attestation ✓ 正确答案
D Tekton Chains 的签名只保存在本地,无法被下游校验
#

7. cosign verify 如何校验镜像签名与完整性,签名密钥管理与验证失败如何处理?

A cosign 签名只保护镜像元数据,不保护镜像内容
B cosign verify 只能校验签名,无法判断镜像是否被篡改
C 验证失败时应直接放行镜像以保证业务连续性
D 私钥应妥善保管并使用 KMS 等硬件保护,公钥通过可信渠道分发,验证失败时应阻断部署而非静默放行 ✓ 正确答案
#

8. package-lock.json 在依赖锁定中的作用与失效场景,即锁定后为何仍可能引入漏洞或被替换?

A 锁文件能保证依赖"无漏洞",因为已锁定版本
B 锁文件即使漂移,也不会影响可复现性
C 锁文件记录依赖树与 integrity,但可能因漂移、被替换或锁定版本本身含漏洞而失效,需配合 frozen-lockfile 与漏洞扫描 ✓ 正确答案
D 锁文件一旦生成就不可被修改或替换
#

9. 供应链攻击的类型与防护中依赖投毒、构建劫持、分发篡改与凭据窃取各自的防护重点

A 依赖投毒、构建劫持、分发篡改与凭据窃取分别命中依赖获取、构建、分发与凭据环节,防护需覆盖全链路并强调签名验证与最小权限 ✓ 正确答案
B 供应链攻击只包括依赖投毒,不涉及构建与分发环节
C 构建劫持与分发篡改是同一种攻击,只是叫法不同
D 只要锁定了依赖版本,就能完全防御供应链攻击
#

10. 如何构建 hardened runner,即最小化运行环境、隔离执行与 CI 凭据保护?

A hardened runner 应尽量包含所有工具,方便调试
B 隔离执行与凭据保护无关,凭据泄露不影响 runner 安全
C CI 凭据应长期保存在 runner 上,方便复用
D runner 应使用精简镜像、隔离执行环境,并用最小权限与短期令牌保护 CI 凭据 ✓ 正确答案
#

11. 自建镜像仓库/registry mirror 在供应链安全中的作用,即版本缓存、上游校验与访问控制?

A registry mirror 只用于加速,不涉及安全
B 镜像 tag 应允许被覆盖,方便更新
C 自建镜像仓库通过版本缓存、上游校验与访问控制,把外部镜像源聚合成受控的信任边界 ✓ 正确答案
D 访问控制只影响性能,不影响镜像安全
#

12. GitHub Dependabot 如何自动发现依赖漏洞并生成升级 PR,其安全更新机制与配置要点是什么?

A Dependabot 只能发现漏洞,不能自动生成升级 PR
B Dependabot 无法与 CI 门禁联动
C 安全更新针对漏洞快速生成补丁 PR,版本更新按 schedule 常规升级,且需与 CI 门禁配合控制回归风险 ✓ 正确答案
D 安全更新与版本更新是同一机制,无任何区别
#

13. GitLab Dependency Scanning 如何对依赖进行漏洞扫描,结果如何与 MR 门禁和修复流程联动?

A GitLab Dependency Scanning 的结果无法与 MR 门禁联动
B 扫描结果可通过 MR 门禁阻止漏洞合入,并可通过 issue 与自动更新 MR 联动修复流程 ✓ 正确答案
C GitLab 只能扫描容器镜像,不能扫描项目依赖
D 扫描结果只能人工查看,无法生成报告
#

14. SLSA 等供应链安全框架如何指导落地,各级别(L1-L4)分别要求哪些实践?

A SLSA L1 就要求构建机完全隔离与安全加固
B SLSA 与签名、provenance 无关,只关注漏洞扫描
C SLSA 只有一个级别,不分 L1-L4
D L2 要求受托管构建并生成签名 provenance,L3 要求构建者与源仓库隔离,L4 要求构建系统全程受控加固 ✓ 正确答案
#

15. 发现依赖投毒或仓库劫持事件后的应急响应,包括影响面评估、阻断、溯源与加固?

A 应急响应包括影响面评估、阻断、溯源与加固,先止血再溯源,并用 SBOM 反查受影响面 ✓ 正确答案
B 发现投毒后应直接忽略,依赖多不影响安全
C 阻断投毒包会破坏业务,应继续使用
D 溯源只能靠人工猜测,无法用日志与时间线分析
#

16. 如何建立供应链漏洞情报监控与告警,即情报源选择、扫描频率与告警降噪?

A 只用一个情报源即可覆盖所有漏洞
B 告警应全部推送给所有人员,保证不漏
C 扫描频率越高越好,无需考虑成本
D 应组合多源情报、按构建时+周期+事件触发扫描,并用 EPSS/KEV 与资产关联降噪 ✓ 正确答案
#

17. 如何生成与维护 SBOM(如 SPDX/CycloneDX 格式),并在漏洞排查与合规审计中使用?

A SBOM 只能用于展示,无法用于漏洞排查
B SBOM 与产物无关,无需随构建发布
C SBOM 记录软件组成,SPDX/CycloneDX 是常用格式,可随产物生成并用 syft 生成、用于漏洞反查与合规披露 ✓ 正确答案
D SBOM 只能生成一次,无法维护更新
#

18. 软件供应链安全的主要防线有哪些(签名验证、漏洞扫描、依赖锁定),各自防护重点是什么?

A 三道防线功能重复,用其中一道即可
B 漏洞扫描能防止依赖被篡改
C 签名验证保证完整性与信任,漏洞扫描发现已知漏洞,依赖锁定保证可复现与来源固定,三者互补构成完整防线 ✓ 正确答案
D 依赖锁定能阻止已知漏洞