工具codeql的学习之路

引用

https://blog.hackpax.top/Java%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E5%B7%A5%E5%85%B7%E5%88%A9%E7%94%A8%E7%AF%8702-codeql/

CodeQL概念

CodeQL是一个免费开源的代码语义分析引擎,其利用QL语言对代码、执行流程等进行“查询”,以此实现对代码的安全性白盒审计,进行漏洞挖掘。

简单来说,CodeQL是一个把需要审计的项目先转化成类似数据库的形式,并基于该database进行分析的工具。

搭建

1.下载CodeQL引擎

https://github.com/github/codeql-cli-binaries/releases/latest/download/codeql.zip

先把该引擎配到环境变量,方便执行CodeQL语句。CodeQL配置环境变量只要把其根目录配进去就完事了,结果如下即可:

image-20250419151952543

2.下载SDK:

https://codeload.github.com/github/codeql/zip/refs/heads/main

我们之后要在该SDK下面写ql语句并执行。

3.vscode下载CodeQL插件:

然后会在vscode左边的侧边栏发现”QL”图标,即是CodeQL图标。

打开设置,把CodeQL引擎的路径写上去:

image-20250419152043218

4.Maven项目建库

首先我们需要在本机上安装一下maven:Download Apache Maven – Maven

然后再配一下环境变量

当审计maven项目的时候

打开Maven项目,把项目构建好;除此之外,还需要添加一个插件,本人是先下对应依赖再添加:

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.4.0</version>
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.4.0</version>
</plugin>

然后先执行:

1
mvn clean install --file=pom.xml

成功构建了,再执行:

1
codeql databse create name_1 --language=java  --source-root path_1

path_1是当前需要审计的项目路径,name_1是CodeQL将要建立数据库的名称

5.vscode执行查询

以下操作都在vscode执行,先打开CodeQL选项卡。

先把SDK目录放入下图,并放入工作区:

image-20250419192950218

然后添加数据库,我的name_1位置的参数(生成的数据库名)命名为codeql

然后在工作区找到SDK(第一个,codeql-main):

image-20250416203534003

在codeql-main打开路径/java/ql/src,写一个demo.ql:

1
2
3
4
5
import java

from Method method
where method.hasName("getValue")
select method.getName(), method.getDeclaringType()

image-20250416203741079

确保Java库正确导入

然后运行:

image-20250416203927868

image-20250416204045280

至此,CodeQL的构建就完成了,之后就是学习语法,不断实践了。