0Pricing
Cyber Security Academy · 课时

软件组成分析(SCA)

使用 OWASP Dependency-Check、Snyk 或 GitHub Dependabot 扫描依赖项中的已知 CVE。

软件组成分析(SCA) 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。

什么是 SCA

软件成分分析(SCA)会识别项目中的开源依赖项,并将其与漏洞数据库(NVD、CVE、GitHub 安全公告)进行比对。它还会标记许可证合规问题。

第三方依赖项为何存在风险

现代应用程序会使用数百个开源库。一个存在漏洞的库就可能使整个应用程序暴露在风险之中。2021 年的 Log4Shell 漏洞(CVE-2021-44228)影响了数百万个 Java 应用程序,原因是它们使用了一个广泛采用的日志记录库。

SCA 工具

热门 SCA 工具:

# npm audit (Node.js):
npm audit
npm audit fix

# pip-audit (Python):
pip-audit

# OWASP Dependency-Check:
dependency-check.sh --project myapp --scan ./

# Snyk:
snyk test
snyk monitor

Dependabot 与 Renovate

自动化依赖项更新工具:

  • Dependabot(GitHub)— 自动创建 PR,以更新存在漏洞的依赖项
  • Renovate — 可配置性更强,支持更多注册表

请在每个代码仓库中启用这些工具,以减少手动跟踪依赖项更新的负担。

了解 CVE 严重性

依赖项中的漏洞并非都能在您的环境中被利用。请评估以下问题:

  • 在您的使用场景中,存在漏洞的代码路径是否可达?
  • 您的应用程序是否暴露了相关功能?
  • WAF 或其他控制措施是否可以缓解该漏洞?

CVSS 分数只是起点,实际风险取决于具体环境。

传递依赖项

直接依赖项还会有自己的依赖项(传递依赖项)。您从未听说过的库中存在漏洞,也可能影响您。SCA 工具会映射完整的依赖项树。运行 npm ls 或 pip show -r requirements.txt 可以检查该树。

npm ls --all | grep "vulnerable-pkg"
pip show requests | grep Requires

软件物料清单(SBOM)

SBOM 是软件产品中所有组件的正式清单。第 14028 号行政命令(US)要求销售给 US 政府的软件提供 SBOM。格式包括:SPDX、CycloneDX。

# Generate SBOM with syft:
syft . -o cyclonedx-json > sbom.json
# Scan SBOM for vulnerabilities:
grype sbom:./sbom.json

许可证合规

SCA 还会检查许可证。商业软件中的 GPL 许可证依赖项可能要求您将代码开源。LGPL、MIT 和 Apache 2.0 通常较为宽松。法务团队需要了解依赖项所使用的许可证,SCA 可以自动提供这些信息。

供应链攻击

攻击者会将恶意代码注入热门开源软件包:

  • 仿冒相似名称:使用 reqeusts 代替 requests
  • 维护者账户被入侵(SolarWinds 式攻击)
  • 依赖项混淆:私有软件包名称泄露到公共注册表

结合完整性验证(校验和、锁定文件)的 SCA 可以降低这种风险。

锁定文件

锁定文件(package-lock.json、Pipfile.lock)会固定确切版本并验证校验和。请将锁定文件提交到源代码控制系统。生产构建中切勿使用 npm install --legacy-peer-deps 来跳过锁定文件检查。

CI/CD 中的 SCA 流水线

将 SCA 集成为必需的 CI 门禁:

# GitHub Actions example:
- name: Run npm audit
  run: npm audit --audit-level=high
# Fail build on HIGH/CRITICAL findings
# Use --audit-level=moderate for stricter posture

快速检查:SCA

软件成分分析(SCA)的主要目的是什么?

课程回顾

SCA 会扫描项目依赖项,以发现已知的 CVE、许可证问题和供应链风险。传递依赖项使这项工作至关重要:某个库的依赖库中存在的漏洞仍然会影响您。请启用 Dependabot 或 Renovate 以自动更新依赖项。生成 SBOM(SPDX/CycloneDX)以了解供应链。锁定文件会固定版本并验证校验和。请将 SCA 集成为带有严重性阈值的 CI 门禁。

常见问题解答

「软件组成分析(SCA)」课时是免费的吗?

是的 — 「软件组成分析(SCA)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。

「软件组成分析(SCA)」这节课中我会学到什么?

使用 OWASP Dependency-Check、Snyk 或 GitHub Dependabot 扫描依赖项中的已知 CVE。 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cyber Security Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「软件组成分析(SCA)」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cyber Security Academy 课中编写并运行代码吗?

能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. CI/CD 流水线中的 SAST 与 DAST
  2. 软件组成分析(SCA)
  3. 机密扫描与硬编码凭据
  4. 安全倡导者与威胁建模
← 返回 Cyber Security Academy