freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

codeql自动化漏洞检测入门
2024-09-04 18:07:50

Codeql简介

codeql是一个可以对代码进行分析的引擎, 安全人员可以用它作为挖洞的辅助或者直接进行挖掘漏洞,节省进行重复操作的精力。

Codeql组成

Codeql主要由两个部分组成,解析引擎和SDK

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

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

引擎下载地址:https://github.com/github/codeql-cli-binaries/releases

SDK下载地址:https://github.com/Semmle/ql

CodeQL的使用协议里禁止在企业的CI/CD里部署

安装过程

新建一个codeql文件夹,并且从官网下载引擎以及SDK

引擎下载:https://github.com/github/codeql-cli-binaries/releases

SDK下载:git clone https://github.com/Semmle/ql

codesql文档:https://codeql.github.com/docs/

下载以后在codeql目录中有两个文件夹

1725443841_66d82f01b80a6d32ba5a5.png!small?1725443842565

设置codeql引擎的环境变量

1725443854_66d82f0ec0027167659cb.png!small?1725443855730


另外,我们可以在该目录下新建databases目录,用于存在codeql生成的数据库。

1725443863_66d82f1710969eeee942c.png!small?1725443863778

上面安装完成了引擎和SDK,下面我们需要安装一个vscode插件,以便我们可以方便的使用。

1725443867_66d82f1b8b2246b779dac.png!small?1725443868175

配置引擎路径

1725443911_66d82f47674e62050dc0e.png!small?1725443912210

先来大致看一下这个插件

包含了四个部分:

1)导入数据库:使用首先要导入一个codeql生成的数据库

2)VARIANT ANALYSIT REPOSITORIES:暂时不知道作用

3)query history:查询历史

4)AST VIEWER:可以查看生成的AST内容

1725443948_66d82f6ca859e239b7039.png!small?1725443949288

简单使用过程

1725443972_66d82f8420e74db95135e.png!small?1725443972784

首先使用命令通过codeql引擎生成可以别ql查询的数据库,然后编写ql查询语句查询数据库,根据设置的规则判断是否存在漏洞。

1.生成数据库

CodeQL的处理对象并不是源码本身,而是中间生成的AST结构数据库,所以我们先需要把我们的项目源码转换成CodeQL能够识别的CodeDatabase。

我使用了java漏洞靶场来生成数据库。

codeql database create E:\codeql\databases\hellojavasec-database --language=java --command="mvn clean install --file pom.xml" --source-root=E:\java靶场\Hello-Java-Sec-master --overwrite

1725444001_66d82fa1c111ddede2634.png!small

没有报错,则生成了AST数据库

1725444022_66d82fb68de59be5434b3.png!small?1725444023098

将数据库导入VScode中

1725444029_66d82fbd72b6d7235fd68.png!small?1725444030118

接下来,就可以编写查询语句进行查询了

codeql语法基础

AST语法树

要想学习codeql必须了解AST语法树,这个是学习的基础。

CodeQL是识别不了源码本身的,而是通过CodeQL引擎把源码转换成CodeQL可识别的AST结构数据库,所以想要真正理解CodeQL原理,要学会看懂分析AST抽象语法树。

1725444046_66d82fce5280af229

# web安全 # 企业安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录