白盒代码审计:关于VsCode中CodeQL的应用

2024-06-14 373 0

CodeQL 简介

通常认为,CodeQL 是一个开源的代码分析平台或者说漏洞扫描工具,其通过介入代码编译过程(编译型语言)或者进行静态程序分析(解释型语言)来获取程序代码的语义信息(Extractor),并且生成数据库(CodeQL Database),最后使用专用语言(QL language)编写查询语句来发现漏洞风险。

一、CodeQL安装:

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

1、解析引擎

(CodeQL CLI 是一个可执行的命令行工具,可以使用 CodeQL CLI运行 CodeQL 分析、创造 CodeQL 数据库、开发和测试自定义 CodeQL 查询。)

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

(1)官方下载地址: https://github.com/github/codeql-cli-binaries/releases

白盒代码审计:关于VsCode中CodeQL的应用插图

(2)下载后,将文件解压到名为CodeQl的文件夹下,配置codeql路径到环境变量内:

白盒代码审计:关于VsCode中CodeQL的应用插图1

命令行输入:codeql,验证是否安装成功:

白盒代码审计:关于VsCode中CodeQL的应用插图2

2、SDK( 标准的扫描规则CodeQL libraries and queries):

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

官方下载地址https://github.com/github/codeql

下载后 也解压到CodeQL文件夹内,即可:

白盒代码审计:关于VsCode中CodeQL的应用插图3

在此路径下打开cmd命令行窗口,执行命令codeql pack ls可以看到当前SDK中默认支持的规则集。

白盒代码审计:关于VsCode中CodeQL的应用插图4

二、VSCode内使用CodeQL:

1、安装codeql插件,并配置引擎路径

通过Visual Studio Code来使用codeql,需要在VSCode上面安装CodeQL的插件。

安装好Visual Studio Code后,在它的扩展里面搜索codeql, 点击安装。

白盒代码审计:关于VsCode中CodeQL的应用插图5
然后配置一下我们安装的codeql引擎路径

白盒代码审计:关于VsCode中CodeQL的应用插图6

白盒代码审计:关于VsCode中CodeQL的应用插图7

以上完成后,codeql的开发环境就配置好了。

2、生成数据库

CodeQL像查询数据一样查询代码安全缺陷及漏洞,在 CodeQL 中,代码被视为数据。 安全漏洞、bug 和其他错误建模为可针对从代码中提取的数据库执行的查询。

如下,我们参考其他文章中的开源靶场案例进行验证codeql的使用:本次使用开源靶场项目java-sec-cod(https://github.com/JoyChou93/java-sec-code)。

1下载靶场源代码到本地,创建数据库。Java语言需要编译,db-ql为数据库名称。

执行命令,将项目代码生成数据库形式:

codeql database create db-ql --language=java --command=“mvn clean install”

主要参数:

  • –command 参数如果不指定,会使用默认的编译命令和参数
  • –source-root 源码路径
  • –overwrite 表示 create 的目标 database 对已有的 database 做覆盖
  • –language 要根据具体项目的编译语言指定

Language对应关系如下:

Language

Identity

C/C++

cpp

C#

csharp

Go

go

Java

java

javascript/Typescript

javascript

Python

python

(2)命令执行后,若出现如下报错,不要慌:

A fatal error occurred: Exit status 1 from command: [D:\workspace\CodeQL\codeql\tools\win64\runner.exe, cmd.exe, /C, type, NUL, &&, mvn, clean, install]

分析报错,意思是找不到 mvn 命令,安装maven即可

(3)安装maven后,命令行 mvn -v 验证安装成功:

白盒代码审计:关于VsCode中CodeQL的应用插图8

重新运行生成数据库的命令,正确执行,build-stdout窗口信息如下:

白盒代码审计:关于VsCode中CodeQL的应用插图9

等待几分钟.... 数据库创建成功,信息如下

白盒代码审计:关于VsCode中CodeQL的应用插图10

3、Vscode添加数据库db-ql选择db-ql文件夹

白盒代码审计:关于VsCode中CodeQL的应用插图11

4、在 VSCode 打开扫描规则 CodeQL libraries and queries,也就是sdk的解压后的包

白盒代码审计:关于VsCode中CodeQL的应用插图12

  • 5、执行规则扫描

选择具体语言的规则进行扫描,例如:java语言的规则。

ql后缀的文件是规则扫描文件

比如:\codeql-main\java\ql\src\Security\CWE

执行扫描

白盒代码审计:关于VsCode中CodeQL的应用插图13

可以一次选择一条或者多条规则就行扫描;但是一次性不能超过 20 条规则。

点击CodeQL:Run Queries in Selected Files后,弹出一个对话框,选择Yes;即可执行扫描操作。(将codeql标准库,即文件夹 db-ql,也就是生成的数据库文件夹,添加到工作区,)

运行后,右侧可看到扫描结果

白盒代码审计:关于VsCode中CodeQL的应用插图14

命令行方式

使用 VSCode 图形化工具如上,也可也直接使用命令,快捷、方便

  • 创建数据库
codeql database create databaseName --source-root=D:/xxljob --language=java

举例:

codeql database create

/Users/zangcc/Desktop/CodeQL/databases/codeql_demo

--language="java"

--command="mvn clean install -DskipTests --file pom.xml"

--source-root=/Users/zangcc/Desktop/CodeQL/micro_service_seclab

databaseName命名数据库名称

Databasecreate:创建数据库。

在/Users/zangcc/Desktop/CodeQL/databases/目录下新建一个codeql_demo文件夹,codeql_demo文件夹内即生成的数据库内容。

内容如下:

白盒代码审计:关于VsCode中CodeQL的应用插图15

language:语言,因为靶场是springboot的,所以是java。

command:命令,用mvn,clean,install来编译代码。

source-root:需要代码审计的源代码根目录。

  • 更新数据库
codeql database upgrade databaseName

  • 执行扫描规则
codeql database analyze databasePath codeql-repo/java --format=csv --output=result.csv

databasePath 数据库路径

codeql-repo/java :java 扫描规则

--format:结果输出格式

--output:结果文件输出路径


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

webpack打包站点,js文件名批量获取思路
加密对抗靶场enctypt——labs通关
【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键
蓝队技术——Sysmon识别检测宏病毒
内网渗透学习|powershell上线cs
LLM attack中的API调用安全问题及靶场实践

发布评论