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


    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

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

    GIF GIF
  • 相关阅读:
    算法设计--求连续子向量的最大和问题--论想法思路的重要性
    --a和a--
    程序员一个知道的一些法则
    django admin
    Python递归
    Python内置函数
    Python协程函数
    Python 生成器
    Python迭代器
    Python装饰器
  • 原文地址:https://www.cnblogs.com/Cl0ud/p/15803314.html
Copyright © 2020-2023  润新知