CodeQL的自动化代码审计之路(上篇)

本文详细介绍了CodeQL的安装与环境配置,展示了如何使用CodeQL进行Java代码审计,包括类与谓词、访问控制、类型和数据流的概念应用,以及基于RuoYi源码的案例实践。

0x01 前言

最近关于CodeQL的概念很火,大家普遍认为这会是下一代的代码审计神器。网上关于CodeQL的文章已经有不少,但是多数文章还是在分析CodeQL的安装和简单使用用例。真正使用CodeQL来进行自动化代码审计的文章较少,本文主要研究基于CodeQL实现全自动的代码审计工具实现思路预计文章分成三部分完成,目前是第一部分内容。

CodeQL(全称Code Query Language),从其英文名称中可以看出这是一种基于代码的查询语言,其作用主要是通过编写好的语句查询代码中可能存在的安全隐患。学习CodeQL类似于学习一门全新的编程语言,语法类似于SQL,但是比传统SQL还是要难很多。目前CodeQL支持对多种语言,包括java、javascript、go、python、C、Csharp等,但是很遗憾的是不支持“世界上最好的语言”PHP。这大概是因为PHP实在是太灵活了,函数名是字符串变量这种调用方式确实很难从AST语法树中静态分析出问题,但这并不能阻碍我们学习CodeQL的兴趣。文章所有内容基本上围绕java语言展开,其他语言操作基本类似。

0x02 环境准备

网上关于CodeQL安装的文章已经很多了,本来不打算再说这个事情,但是因为本人在CodeQL安装过程中遇到不兼容mac m1架构的情况,我想还有很多小伙伴也会遇到这个问题的,这里主要以MAC的环境来说明安装过程。

CodeQL的安装主要分成引擎和SDK,新建一个目录CodeQL(~/CodeQL/)来保存后续所有的相关的工具和代码。

首先下载最新的引擎包,下载地址是:https://github.com/github/codeql-cli-binaries/releases

下载之后解压把codeql文件夹放在刚才新建的文件夹CodeQL中,添加环境变量。

vim ~/.profile
export PATH=/Users/用户名/CodeQL/codeql:${PATH}

使用source命令是环境变量生效,然后命令行中运行codeql,如图2.1所示。

图2.1 CodeQL引擎安装

然后需要下载CodeQL对应的sdk包,下载地址是:

https://github.com/Semmle/ql


下载之后也需要把ql文件夹复制到~/CodeQL文件夹中。

在CodeQL文件夹中新建databases文件夹,用于存放后续使用codeql生成的数据库,那么一切准备好了之后我们的CodeQL目录之下就会是三个文件夹,如图2.2所示。

图2.2 CodeQL安装

后续我们就可以使用codeql database create命令来创建查询数据库,命令如下所示。

codeql database create /Users/xxx/CodeQL/databases/project_db_name --language=java --source-root=/Users/xxx/cms/project_path --overwrite

在windows环境中和以前的mac环境中确实没有问题,但是如果是在m1的环境中会报错,报错信息如图2.3所示。错误的原因是codeql官方提供的工具是x86架构的,不能直接在arm中使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值