CodeQL简介

​CodeQL​​​项目地址:​​https://github.com/github/codeql​

​CodeQL​​​官网:​​https://codeql.github.com/​

截止到目前在github上有4.1k个star

CodeQL简介及其windows下环境安装_python


该项目的历史为:​​Semmle​​​公司最早独创性的开创了一种QL语言,Semmle QL,并且运行在自家​​LGTM​​平台上。

LGTM平台上存放的就是一些开源项目,用户可以选择分析的语言,编写ql语句进行程序安全性查询。

2019年,GitHub为了解决其托管的海量项目的安全性问题,收购了Semmle公司,并宣布开源CodeQL的部分规则,这样全世界的安全工程师就可以贡献高效的QL审计规则给github,帮助它解决托管项目的安全问题,而对于安全人员也多了一个非商业的开源代码自动化审计工具。

简单来说,CodeQL就是一种代码分析平台。借助这个平台,安全研究人员可以实现变种分析的自动化。这里所谓的变种分析,就是以已知的安全漏洞作为参照物,在我们的目标代码中寻找类似的安全问题的过程。CodeQL支持对C++,C#,Java,JavaScript,Python,go等多种语言进行分析,可用于分析代码,查找代码中控制流等信息。

CodeQL的核心引擎是不开源的,这个核心引擎的作用是将需要审计的代码转换成CodeQL能识别的中间层数据库,然后我们只需要编写QL查询语句来获取我们想要的数据,偷一张freebuf上的图

CodeQL简介及其windows下环境安装_python_02


图中​​micro-service-seclab​​是需要审计的项目,我们需要编写的就是其中的QL查询语句,要是不会写查询语句和规则怎么办?CodeQL开源了所有的规则和规则库部分,我们能够进行学习参考,并编写符合自己业务逻辑的QL规则,然后使用CodeQL引擎去跑我们的规则,从而输出变种漏洞。

CodeQL环境搭建

在windows11环境下安装CodeQL

CodeQL本身包含两部分:解析引擎+SDK

解析引擎用来解析我们编写的规则,虽然不开源,但是我们可以直接在官网下载二进制文件直接使用

SDK完全开源,里面包含大部分现成的漏洞规则,我们也可以利用其编写自定义规则。

引擎安装

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

解析引擎支持主流的操作系统:Windows,Mac,Linux

下载解压后将路径添加到环境变量中,方便测试

CodeQL简介及其windows下环境安装_python_03

SDK安装

访问之后下载压缩包​​https://github.com/github/codeql​

更改文件名为​​ql​

目前的目录结构为:

CodeQL简介及其windows下环境安装_github_04

VScode插件安装

VScode安装​​codeql​​插件

CodeQL简介及其windows下环境安装_数据库_05


修改插件的配置,添加​​codeql​​可执行文件的路径

CodeQL简介及其windows下环境安装_github_06

到这里​​codeql​​的开发环境就配置完成了

使用

想要好好利用​​codeql​​​这个工具,​​ql​​​的相关语法也是我们需要学习的,不过​​ql​​​语法的知识我准备放到下一篇博客中进行介绍,这里先测试一下安装好的​​codeql​​环境。

以​​python​​为例,建立分析数据库,需要我们到等待审计源代码的根目录,执行

codeql database create codeqltest --language=python

为什么要建立数据库。因为​​codeql​​的处理对象并不是源代码本身,而是中间生成的AST抽象语法树数据库,后续我们的查询操作都是在这个数据库中进行

​--language="python"​​ 指的是我们程序的语言

如果需要审计的源代码不在当前目录,可以通过​​ --source-root=​​命令进行指定

还有其他的一些命令,这里就不再赘述。

随便找一个​​flask​​的项目进行测试

CodeQL简介及其windows下环境安装_github_07

执行成功后会在当前目录下生成一个​​codeqltest​​的文件夹

CodeQL简介及其windows下环境安装_github_08

用​​vscode​​​打开之前下载的​​ql​​库文件,在ql插件中添加刚才的数据库文件,并设置为当前数据库。

CodeQL简介及其windows下环境安装_python_09

CodeQL简介及其windows下环境安装_github_10

为了方便引入​​python​​​库,在​​/ql/python/ql/src​​​下创建一个​​test.ql​​​来编写我们的​​ql​​查询语句

编写一段​​hello world​

CodeQL简介及其windows下环境安装_数据库_11


正确输出则代表配置完成并正确

当然如果你觉得电脑上配置环境的过程太复杂了,我们也可以直接使用​​LGTM​​​,简单把它看成是CodeQL平台的云版本:​​https://lgtm.com/​

在上面尝试输出​​hello world​

CodeQL简介及其windows下环境安装_数据库_12


一样正确输出

CodeQL简介及其windows下环境安装_github_13


从而使用​​codeql​​进行代码审计

参考链接

END

公众号,欢迎关注 😃


CodeQL简介及其windows下环境安装_github_14