目录

  1. 1. 前言
  2. 2. 安装
  3. 3. Hello World
    1. 3.1. 生成数据库
    2. 3.2. 导入数据库并查询
  4. 4. MCP

LOADING

第一次加载文章图片可能会花费较长时间

要不挂个梯子试试?(x

加载过慢请开启缓存 浏览器默认开启

CodeQL使用学习

2026/3/5 SAST
  |     |   总文章阅读量:

前言

参考:

https://www.freebuf.com/articles/web/283795.html

https://drun1baby.top/2023/09/03/CodeQL-%E5%85%A5%E9%97%A8/


安装

CodeQL本身包含两部分解析引擎 + SDK

解析引擎用来解析我们编写的规则,虽然不开源,但是我们可以直接在官网下载二进制文件直接使用。

SDK完全开源,里面包含大部分现成的漏洞规则,我们也可以利用其编写自定义规则。

解析引擎的话 vscode 扩展搜 codeql 直接下就行,会自动把 codeql-cli 也下载下来

或者直接在官方仓库下载: https://github.com/github/codeql-cli-binaries/releases/

然后添加到环境变量,在命令行输入 codeql 验证

同时要把下载的 codeql-cli 路径写到 vscode 的配置文件中

接下来安装 SDK

git clone https://github.com/Semmle/ql

此时的目录下有引擎文件夹(codeql)和 SDK 文件夹(ql)

这样就设置好了 CodeQL 的开发环境


Hello World

测试的项目: https://github.com/l4yn3/micro_service_seclab/

生成数据库

由于 CodeQL 的处理对象并不是源码本身,而是中间生成的 AST 结构数据库,所以我们先需要把我们的项目源码转换成 CodeQL 能够识别的 CodeDatabase

codeql database create ~/Sec/Audit/Test_Projects/databases/micro-service-seclab-database \
--language="java" \
--command="mvn clean install --file pom.xml -DskipTests" \
--source-root=.

导入数据库并查询

和 SQL 一样,我们需要执行 QL 查询,就需要先指定一个数据库,然后创建查询,这里选择 java 语言,示例会创建一个 example.ql

/**
 * This is an automatically generated file
 * @name Hello world
 * @kind problem
 * @problem.severity warning
 * @id java/example/hello-world
 */

import java

from File f
select f, "Hello, world!"

执行后会查询,这里返回的结果自然都是 Hello, world!


MCP

https://github.com/JordyZomer/codeql-mcp