1、安装配置 codeql 环境
1.1 下载 codeql-cli 和 codeql 标准库
1)下载安装
下载安装 codeql-cli: Releases · github/codeql-cli-binaries · GitHub
下载 codeql 标准库:https://github.com/gi thub/codeql
下载的安装包解压,codeql 可执行文件的目录改名为 codelql-cli,标准库的目录改名为 codeql-repo
2)设置环境变量
把 codeql-cli 添加到环境变量中
测试环境变量添加成功:
1.2 vscode-codeql插件
1)扩展中搜索安装 CodeQL
2)设置 codeql 可执行文件路径
在设置中搜索 codeql:
@ext:github.vscode-codeql
设置 codelql-cli 可执行文件的路径:
2、codeql查询测试
2.1 用例环境配置
1)下载用例
https://github.com/l4yn3/micro_service_seclab
2)安装 maven
项目是基于Maven构建的,CodeQL在创建数据库时,会自动探测并编译项目
下载:Maven – Download Apache Maven
配置 maven 环境变量
2.2 codeql 查询
1)创建数据库
命令行下进入项目根目录,执行
codeql database create qldb --language=java
将 codeql 标准库添加到工作区
将生成的数据库添加到 vsdoce
在工作区选择一个 ql 文件,右键点击 Run 运行查询
也可以自己编写一个 sql 注入的规则:
import java
import semmle.code.java.dataflow.FlowSources
import semmle.code.java.security.SqlInjectionQuery
import DataFlow::PathGraph
from QueryInjectionSink query, DataFlow::PathNode source, DataFlow::PathNode sink
where queryTaintedBy(query, source, sink)
select query, source, sink, "Query might include code from $@.", source.getNode(), "this user input"
运行查询结果: