白盒代码审计工具—CodeQL安装教程【Liunx】

  • ~2.15K 字

codeql简介

codeql是一个将代码转化成类似数据库的形式,并基于该database进行分析的引擎。在 CodeQL 中,代码被视为数据。安全漏洞、Bug 和其他错误被建模为可针对从代码中提取的数据库执行的查询
CodeQL安装

准备工具:(Xshell Xftp)个人习惯 Linux系统环境 Codeql-Linux文件

安装网站:https://github.com/github/codeql-cli-binaries/releases
Llinux选择:codeql-linux64.zip文件 点击下载
bee8afc28c0346d0da22c39e18e1090c.png
linux上的Codeql的安装

进入Linux切换root用户并切换到根目录下

su root
cd /opt

进入根目录下后 创建codeql-cli文件夹

sudo mkdir -p /opt/codeql-cli

在这里插入图片描述

使用Xftp(个人喜好也可以用别的方式传进去就ok了)传入刚才下载好的Codeql-linux64.zip文件到codeqlProject目录

传入的codeql进行解压操作

1
sudo unzip codeql-linux64.zip -d /opt/codeql-cli

解压好后配置环境变量(暂时)

1
export PATH="/opt/codeql-cli/codeql:$PATH"
1
2
3
保存文件并执行以下命令使其立即生效:

source /etc/profile

遇到问题:

1
2
3
4
5
# CodeQL config  
export CODEQL_HOME="/opt/codeql-cli" # 这里改为包含codeql可执行文件的目录
export PATH="$CODEQL_HOME:$PATH"

输入以下命令验证是否成功
1
codeql

fe8b6aef98e043d3d1d7faecd8c1c8bd.png

创建 CodeQL 数据库

执行以下命令

1
./codeql database create <数据库名称> --language=java --command="mvn clean compile --file pom.xml" --source-root=<具体的项目地址> --overwrite

必须指定以下内容:

1
2
3
4
5
6
7
8
9
<database>:要创建的新数据库的路径。 执行命令时将创建此目录,无法指定现有目录。

--language:要为其创建数据库的语言的标识符

--command:在为一个或多个已编译语言创建数据库时使用,如果请求的唯一语言是 Python 和 JavaScript,则省略。 这指定调用编译器所需的生成命令。 从当前文件夹运行命令,如果指定,则从 --source-root 运行。 如果未包含 --command,CodeQL 将尝试使用内置的自动生成程序自动检测生成系统。

--source-root:创建数据库时使用的主要源文件的根文件夹。 默认情况下,命令假定当前目录是源根目录,使用此选项可指定其他位置。

--overwrite:目的是如果有重复文件则重新覆盖掉!

CodeQL CLI 分析数据库

命令为:

1
2
./codeql database analyze &lt;刚才生成的数据库名称和地址&gt; --threads 16 java-security-and-quality.qls --format=csv --output=/opt/vpaas_framework_db_result.csv

解释:

1
2
3
4
--threads:
--format:
java-security-and-quality.qls:CodeQL 查询套件
--output:

通过指定套件来进行查询

1
2
3
4
例如:

./codeql database analyze ./vpaas_framework_db --format=sarif-latest --output=./vpaas_framework_db_result.json

解释:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<query-specifiers>:如果省略,将使用已分析数据库语言的默认查询套件

要对数据库运行的查询的空格分隔列表。 这是一个参数列表,其中每个参数可以是:

查询文件的路径

包含查询文件目录的路径

查询套件文件的路径

CodeQL 查询包的名称
具有可选版本范围
包含包中查询、目录或查询套件的可选路径

例如

./codeql database analyze ./vpaas_framework_db --format=sarif-latest --output=./vpaas_framework_db_result.json <你所下载的规则地址,这里我用的官网规则套件>

1

这里我把规则已经下载到了对应的目录,自己需要根据自己的目录来使用

Kernel panic!
Kernel panic!
分享
flag2=flag{share_with_your_friends}