新的代码扫描功能由 CodeQL 分析引擎提供支持,启用 CodeQL 来针对某个代码库进行查询,即可识别潜在的安全漏洞。这些开源查询由社区成员和 GitHub 安全专家编写,尽可能多地识别特定漏洞类型的变体,并提供广泛的通用弱点枚举 (CWE) 覆盖范围。
该功能对 JavaScript 和 TypeScript 代码的静态分析,涵盖了整个 OWASP(开放式 WEB 应用程序安全项目)的十大漏洞类型。功能目前处于 beta 版本,侧重于为一些最常见和最危险的漏洞:
- 跨站点脚本(XSS、CWE-79)
- 路径注入(CWE-22、CWE-23、CWE-36、CWE-73、CWE-99)
- NoSQL 注入 (CWE-943)
- SQL 注入 (CWE-89)
随着开源生态系统的快速发展,不常用的库越来越多。因此新的扫描功能使用由手动编写的 CodeQL 查询提供的示例,不断地识别同类开源库以及内部开发的闭源库,以此来训练深度学习模型。使用这些模型,CodeQL 可以识别更多不受信任的用户数据流,从而识别更多潜在的安全漏洞。
如何打开该代码扫描功能?
- 对使用 security-extended 或 security-and-quality 其中一个代码扫描分析套件的用户来说,该功能默认开启。
- 对已在使用代码扫描功能,但未使用上述分析套件的用户,可以通过修改代码扫描操作的工作流配置文件,以启用新的分析功能:
[
- uses: github/codeql-action/init@v1
with:
queries: +security-extended
[ ]
]
- 对未启用代码扫描功能的用户来说,可按照说明为 JavaScript/TypeScript 代码配置分析,并在配置过程中加入上述分析套件。
注意:基于机器学习的实验分析可能具有更高的误报率,与大多数机器学习模型一样,分析结果会随着模型的不断完善而改善。