ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

CodeQL简介及其windows下环境安装

2022-01-14 20:03:23  阅读:183  来源: 互联网

标签:github CodeQL codeql windows 简介 QL 引擎 ql


CodeQL简介

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

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

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

该项目的历史为: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上的图

图中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

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

SDK安装

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

更改文件名为ql

目前的目录结构为:

VScode插件安装

VScode安装codeql插件

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

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

使用

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

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

codeql database create codeqltest --language=python

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

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

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

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

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

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

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

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

编写一段hello world

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

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

在上面尝试输出hello world

一样正确输出

从而使用codeql进行代码审计

参考链接

END

建了一个微信的安全交流群,欢迎添加我微信备注进群,一起来聊天吹水哇,以及一个会发布安全相关内容的公众号,欢迎关注

标签:github,CodeQL,codeql,windows,简介,QL,引擎,ql
来源: https://www.cnblogs.com/Cl0ud/p/15803314.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有