SuperAPI AI 工具集

CodeQL (GitHub)

CodeQL 是 GitHub 推出的语义代码分析引擎,可将代码视作数据来编写查询,用于发现代码库中的漏洞及其所有变体。它支持在 Visual Studio Code 中编写和运行查询,可对开源代码库进行真实查询分析,帮助安全研究人员和开发者定位不安全的代码模式。CodeQL 对研究和开源项目免费,但仅限用于 OSI 批准的开源许可证代码库、学术研究,或在特定条件下用于自动化分析、CI/CD。

访问官网

工具介绍

CodeQL 是 GitHub 提供的行业领先语义代码分析引擎,用于在代码库中发现漏洞。它的核心理念是把代码当作数据来查询:编写一条查询即可找出某个漏洞的所有变体,从而彻底消除该问题,并可将查询分享给他人使用。

主要能力:

  • 语义代码分析:通过查询代码发现漏洞和不安全模式。
  • 变体查找:编写查询后,可定位同一漏洞在整个代码库中的所有相似出现位置。
  • 查询共享:可将自己编写的查询分享给其他人,帮助他人发现同类问题。
  • 示例查询:官方提供如 UnsafeDeserialization.ql 等查询示例。

使用方式:

  1. 在 Visual Studio Code 中安装 CodeQL 扩展(下载即表示同意 GitHub CodeQL 条款与条件)。
  2. 获取 CodeQL 数据库:在 GitHub.com 上搜索想要研究的开源项目,按说明下载并将该项目的 CodeQL 数据库添加到 VS Code,或使用 CodeQL CLI 创建 CodeQL 数据库。
  3. 查询代码并发现漏洞:克隆 CodeQL 起始工作区并在 VS Code 中打开,右键点击查询并选择 Run Query 运行。更多信息可查阅官方文档。

适用场景:

  • 对开源代码库进行漏洞研究。
  • 学习并练习漏洞挖掘:官方提供 Java Capture the Flag 挑战,可借此磨练漏洞发现技能并了解 CodeQL 的污点跟踪功能;该比赛已于 6 月 12 日结束,但仍可出于兴趣参与,在开源 Java 项目中寻找服务端模板注入漏洞。
  • 查看以往挑战。

限制与许可: CodeQL 对研究和开源免费。GitHub CodeQL 仅可用于以下情形:依据 OSI 批准的开源许可证发布的代码库;执行学术研究;或在以下情况下为自动化分析、持续集成(CI)或持续交付(CD)生成 CodeQL 数据库:(1) 托管并维护在 GitHub.com 上的任何开源代码库;(2) 测试你依据 OSI 批准的开源软件许可证发布的 CodeQL 查询。除上述明确情形外,不得将 CodeQL 用于自动化分析、持续集成或持续交付(无论是否属于正常软件工程流程)。如需这些用途,请联系销售团队。

其他信息:官方设有社区论坛。