CodeQL笔记之入门简介及其注意点

本文介绍了CodeQL的基本概念和使用方法,包括其作为代码分析引擎的功能,官方规则库的结构,Windows系统下的安装注意事项,以及如何创建和使用数据库。文章还详细阐述了数据库的目录结构,并指导如何在VsCode中查看AST数据库,帮助开发者进行代码安全审计。


前言

      学习利用CodeQL进行Java代码审计。本文内容都是入门知识。


一、CodeQL

1.概述

     1)CodeQL就是一个可以对代码进行分析的引擎,安全人员可以用它作为挖洞的辅助或者直接进行挖掘漏洞,以节省进行重复操作的精力。
     2)CodeQL整体可以看成两部分:第一部分是解析引擎,第二部分是编写的漏洞规则。解析引擎不开源,漏洞规则在ql文件夹中包含官方正式的规则和一些还在实验中的规则,也可以自行编写添加规则。
     3)整体的工作流程主要就是两步:首先根据源代码提取创建一个数据库,然后利用漏洞规则中的QL语句去查询。

2.规则库

     1)根目录/ql/java/ql/src/Security放着一些官方的规则(java),可直接用。
在这里插入图片描述
     2)根目录/ql/java/ql/src/experimental/Security目录下,是一些还在实验中的规则(java)。
在这里插入图片描述
     3)根目录/codeql/ql/java/ql/examples/目录下,可以自己创建文件写查询语句。因为examples目录下有qlpack.yml就不需要再新建了。
在这里插入图片描述

3.安装注意点

     1)我的电脑是windows系统需要把codeql.exe程序也加上否则添加不了生成的数据库文件夹。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
     2)由于项目中包含一个QL的子库,所以需要使用递归方式来下拉工作区代码。

git clone --recursive git@github.com:github/vscode-codeql-starter.git

     3)windows生成QL数据库包的命令,记录一下方便查找。

# 格式
codeql database create 数据库名  --language="java"  --command="mvn clean install --file pom.xml" --source-root=源码路径

# 例子
codeql database create codeql_java-sec-code  --language="java" --command="mvn clean install --file pom.xml" --source-root=D:\CodeQL\SourceCode\java-sec-code-master

4.使用CodeQL

     选择官方的规则直接使用。然后看着右下角正在操作直接等待结果就好。然后查看对应的代码处分析查看是否误报。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5.数据库的目录结构

     创建的数据库的目录结构如下:

|-- codeql-database.yml
|-- db-java # 数据库关系文件
|-- log # 各类日志
|   |-- agent.2246013276404151275.log
|   |-- agent.6061958391401897389.log
|   |-- build-tracer.log
|   |-- database-analyze-20221018.113052.681.log
|   |-- database-create-20221017.170955.239.log  # 创建过程日志
|   |-- database-index-files-20221017.171249.794.log
|   |-- execute-queries-20221018.113053.384.log
|   |-- ext 用于javac的配置文件
|   |   |-- javac.args
|   |   |-- javac.env
|   |   |-- javac.orig
|   |   `-- javac.properties
|   |-- javac-errors.log
|   |-- javac-extractor-1683275.log
|   `-- javac-output-11812.log
`-- src.zip # 源码文件

6.利用VsCode查看CodeQL生成的AST数据库

     1)导入DATAVASES后在工作空间中会出现source archive字眼,这个就是我们被编译后的java源文件。
在这里插入图片描述
在这里插入图片描述
     2)需注意的是我们需要把生成的src.zip解压后才能查看,否则就会报错读取不了。
在这里插入图片描述
     3)打开源文件中的任意文件,然后切换到QL的AST viewer,点击View AST。
在这里插入图片描述
     4)等待完成即可查看当前这个文件的AST数据库结构。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值