1.环境安装
解释一下什么是codeql吧:
CodeQL 是一种强大的静态代码分析工具,由 GitHub 开发。它可以用于发现和修复软件中的安全漏洞、漏洞和代码质量问题。CodeQL 通过将编程语言的语法和语义建模为一种特殊的查询语言,使得用户可以编写自定义查询来分析代码库。它支持多种编程语言,包括 C、C++、C#、Java、JavaScript、Python 等。用户可以使用现有的查询来发现已知的问题,也可以编写自己的查询来查找特定的问题或需求。
CodeQL 的工作原理是首先将代码转换成一种中间表示(IR)也就是我们这里要用到的数据库,然后在这种 IR 上执行查询。这种方法可以让用户不受代码语言的限制,因为查询是在 IR 上执行的,而不是直接在源代码上。这使得用户可以使用相同的查询语言来分析不同编程语言的代码。同时,CodeQL 还提供了丰富的 API 和库,使得用户可以编写更加复杂和高效的查询。
1.环境准备
https://github.com/github/codeql-cli-binaries/releases
解压,设置环境变量
OK,第一步已经完成了。
2.规则库
官方规则库,各种内置的ql脚本,这部分是开源的。里面是各种ql脚本,也就是我们以后要学习的东西地址:
https://github.com/github/codeql(git clone下来,或者下载下来。最好和codeql_cli也就是上面那个放一起)
3.vscode_codeql插件
安装这个插件。设置可执行路径:
这里环境已经配置好了。
2.生成数据库
这里以java语言的数据库为示例:
原则要生成数据库的源文件:我这里选择的是java-sec-code 地址:https://github.com/JoyChou93/java-sec-code
因为java-sec-code是通过maven进行依赖管理,需要我们事先安装好maven,codeql识别出是个maven项目之后会自动对项目文件进行编译(用到mvn命令),通过编译得到的文件创建数据库。
安装maven: 默认你已经安装好java的jdk了,没有安装记得安装,并配置好环境变量
下载:https://maven.apache.org/download.cgi
配置环境变量:
这就是安装好了。我在这里遇见一个错误。后面在创建数据库的时候,一直创建失败,就是这一部分的原因。这里maven识别到的一定要是jdk下的jre,不能是如图:
注意看区别
创建数据库的命令:
codeql database create java-sce-code-database --language="java" --command="mvn clean install --file pom.xml" --source-root=D:\CODEQLALL\java-sec-code-master\
成功。
3.利用利用数据库进行查询:
选择语言选择数据库
打开规则库:
file ->open
找到Java的规则库如图:
你可以在这创建一个.ql的脚本也可以直接用写好的。
我们自己写一个查看(我在src下面写了一个test.ql)
也可以在这个地方查看,会主动识别的
我们写了一个查询调用了executeQuery
方法的地方:
点这两个地方运行。最好我们看一下查询结果:
已在FreeBuf发表 0 篇文章
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022