软件组成分析(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 monitorDependabot 与 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 反馈 — 无需本地设置。
此课程中的所有课时
- CI/CD 流水线中的 SAST 与 DAST
- 软件组成分析(SCA)
- 机密扫描与硬编码凭据
- 安全倡导者与威胁建模