CodeQL 代码审计平台学习笔记

CodeQL是一款代码审计分析平台,它将Python、Go、JavaScript等语言解析生成语法树并存储到数据库中,之后通过QL语法进行代码审查与筛选。你可以按照自己的想法写代码审计检测脚本,甚至进行代码漏洞 OR 恶意检测。

安装

  1. 下载CodeQL二进制文件

wget https://github.com/github/codeql-cli-binaries/releases/download/v2.2.4/codeql-linux64.zip
  1. 下载语言库依赖

wget https://github.com/github/codeql/archive/v1.24.0.zip

 

生成DB数据库

假设codeql_project/存在一个test.py文件,内容如下:

​
print("hello world")

下面根据project生成codeql数据库。

codeql database create pytest2 --source-root=codeql_project/ --language=python

指定--source-root为要进行检测的项目目录,指定language为python,生成的db名称为pytest2,之后他会生成一个db,其中包含codeql_project/test/中所有python文件的语法树解析。

 

编写QL脚本

在语言依赖库中创建QL查询脚本,以查询String为hello world为例。

# cat engine/codeql/python/ql/src/test.ql
​
import python
from StringValue s
where s.getText() = "hello world"
select s.toString()

执行查询

 

# codeql query run -d pytest2 codeql-1.24.0/python/ql/src/test.ql
​
|     col0      |
+---------------+
| 'hello world' |
​

 

指定test.ql查询语句便可查到所有的字符串为hello world的项。

 

后续

后面就是QL语法的学习以及codeql的实现原理的分析。

你可能感兴趣的:(Python,codeql)