GitHub
文档
仓库
许可证
安全实验室

CodeQL

使用 CodeQL(我们行业领先的语义代码分析引擎)发现整个代码库中的漏洞。CodeQL 允许您像查询数据一样查询代码。编写查询以查找漏洞的所有变体,永远消除它。然后分享您的查询以帮助其他人做同样的事情。

CodeQL 对研究和开源免费。

dots shapes
dots shapes

UnsafeDeserialization.ql

import TaintTracking::Global<UnsafeDeserializationConfig>

from PathNode source, PathNode sink
  
where flowPath(source, sink)
  
select sink.getNode().(UnsafeDeserializationSink).getMethodAccess(), source, sink,
  "Unsafe deserialization of $@.", source.getNode(), "user input"

了解 CodeQL

使用 适用于 Visual Studio Code 的 CodeQL 在流行的开源代码库上运行真实查询。了解发现错误模式并随后在整个代码库中查找类似出现情况的强大功能。

在以下位置编写和运行查询:
Visual Studio Code

安装适用于 Visual Studio Code 的 CodeQL

通过下载,您同意 GitHub CodeQL 条款和条件


安装扩展后

步骤 1:获取 CodeQL 数据库

  • 在 GitHub.com 上搜索您想研究的开源项目。
  • 下载并使用 这些说明 将项目的 CodeQL 数据库添加到 VS Code 中,或者使用 CodeQL CLI 创建 CodeQL 数据库。

步骤 2:查询代码并查找漏洞

  • 克隆 CodeQL 初学者工作区 并在 VS Code 中打开它。
  • 通过右键单击查询并选择运行查询来运行查询。

有关更多信息,请参阅文档。

$ # Clone the project
$ git clone https://github.com/m-y-mo/struts_9805
  
  
$ # Create a CodeQL database
$ codeql database create ./struts_db -s ./struts_9805 \
    -j 0 -l java --command "mvn -B -DskipTests \
    -DskipAssembly"

查询开源代码库

您可以为任何在 OSI 批准的开源许可下发布的项目创建自己的 CodeQL 数据库。要下载 CodeQL 并开始使用,请访问 CodeQL CLI 文档

CodeQL 夺旗赛

正在寻找漏洞狩猎挑战吗?通过这个 Java 夺旗赛,您将磨练您的漏洞发现技能,并了解 CodeQL 的污染跟踪功能。比赛于 6 月 12 日结束,但您仍然可以参加娱乐,并在开源 Java 项目中找到服务器端模板注入。

查看 之前的挑战

参加夺旗赛

GitHub CodeQL 只能用于在 OSI 批准的开源许可下发布的代码库,或用于进行学术研究,或在以下情况下为自动分析、持续集成 (CI) 或持续交付 (CD) 生成 CodeQL 数据库:(1) 在托管在 GitHub.com 上的任何开源代码库上,以及 (2) 用于测试您在 OSI 批准的开源软件许可下发布的 CodeQL 查询。它不能用于自动分析、持续集成或持续交付,无论是在正常的软件工程流程中还是其他情况,除了本文中明确规定的情况。对于这些用途,请 联系销售团队