CodeQL学习实践

发布时间 2023-06-14 19:08:21作者: 妇愁者纞萌

CodeQL简介

CodeQL是一个非商业的开源代码自动化审计工具,Github收购后,开源了CodeQL的规则部分,所以收集了大量的规则,安全工程师可以依赖CodeQL的规则实现对多种开发语言项目的代码审计工作

CodeQL原理

CodeQL将代码转化成可查询数据库,代码被视为数据,漏洞、bug、错误,被建模为可针对从代码中提取的数据库执行查询. Extractor 模块对源代码工程进行关键信息分析提取,构成一个关系数据库.对于编译型语言,Extractor 会监控编译过程,编译器每处理一个源代码文件,它都会收集源代码的相关信息,如语法信息、语意信息、控制流、数据流。对于解释性语言,Extractor 则直接分析源代码,得到类似的相关信息。分析后的数据导入CodeQL database.

CodeQL安装

解析引擎安装

https://github.com/github/codeql-cli-binaries/releases

下载

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

#Windows
加入系统path

  

#Linux
cd /usr/bin
sudo ln -s /root/Codeql/codeql/codeql codeql
source /etc/profile

  

SDK安装

git clone https://github.com/github/codeql.git

  

创建一个目录

codeql 和 sdk保存到该目录,可以重名为pl(这个很重要,要不然会出一些奇葩错误)

codeql配置环境变量

vscode安装codeql插件,配置好引擎路径

创建数据库

 

codeql database create d:\database\codeqltest --language=java --source-root=源码路径 --command="mvn clean install"

导入数据库

 

打开sdk的工作空间,创建test.ql,执行hello world,代表 CodeQL 开发环境和靶场数据库环境均成功准备完毕

 语法参考:

https://blog.csdn.net/weixin_39190897/article/details/128435897