GitHub 扩展 CodeQL 代码扫描功能,支持指定威胁模型
GitHub 最近扩展了基于 CodeQL 的代码扫描功能,新增了指定威胁模型的选项。该功能目前以 Beta 版本的形式支持 Java 语言。
主要功能
新的威胁模型设置允许用户选择在代码扫描中使用的威胁模型,从而决定哪些输入数据可以被信任,哪些数据可能成为系统的潜在风险源。
- 默认配置:CodeQL 默认使用一个威胁模型,将任何远程来源(如 HTTP 请求)视为“受污染的”(即不可信数据)。
- 扩展配置:许多代码库可能需要扩展“受污染”输入数据的来源,包括本地文件、命令行参数、环境变量和数据库等。为此,用户可以启用本地威胁模型选项,帮助安全团队和开发者发现并修复更多的潜在安全漏洞。
启用方式
用户可以通过以下三种方式启用新的威胁模型选项:
- GitHub UI:在代码扫描设置中,找到“Threat model”选项,与“Query suite”设置并列。
- Actions 工作流文件:在文件中指定
threat-models: local。 - 命令行或第三方 CI/CD:使用
--threat-model=local标志。
威胁模型的重要性
理解与系统或代码库相关的威胁模型是确保其安全的关键步骤。根据《威胁建模宣言》,这种分析从识别可能出错的地方和列出所有可能的威胁开始。威胁通常针对每个系统,并取决于其设计和实现方式。
安全实践
尽早识别威胁可以更好地解决它们。代码扫描可以被视为一种“左移”方法,旨在提高系统的安全性。如果未能提前识别威胁,则需要在系统生命周期的后期阶段定义缓解措施。
当前限制
尽管支持本地威胁模型是 GitHub 功能的一大进步,但代码扫描的威胁建模还有许多其他维度尚未覆盖,包括身份验证、执行频率、访问资源和受保护资产等。
GitHub 通过允许用户指定威胁模型,使其代码扫描解决方案更加灵活,能够更好地适应不同的代码库,并提供特定上下文中的安全信息。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。