思路是找到一个开源的java项目,然后用codeql去检测。因为有vscode、cli两种方式可以用。这里选择CodeQL命令行界面(CLI)来运行。
一. 物料准备
1.1 拉取开源项目
git clone https://gitee.com/log4j/pig.git
1.2 下载codeql
git clone git@github.com:github/codeql.git
1.3 下载code-cli
下载地址,选择自己需要的版本。
1.4 配置codeql环境
见此文
以上就把需要的东西准备好了。下面开始正式操作。
二. 操作分析
2.1 在pig项目下,生成数据库
codeql database create java-database --language=java --command='mvn clean install'
备注:这里是用mvn来编译的java,如果电脑里没有mvn环境,需要自己安装一下mvn。
更多见
2.2 编写ql查询语句
刚开始学习,可能还不会这个语句,可以选择第1.2的下载下来的查询语句来运行。例如
codeql-main/java/ql/src/Security/CWE/CWE-020/UntrustedDataToExternalAPI.ql
。
把codeql里的ql文件夹复制到pig目录下。
cd pig/
cp codeql-main/java/ql ./
2.3 执行分析
cd pig/
codeql database analyze java-database ql/security/CWE/CWE-020/UntrustedDataToExternalAPI.ql --format=csv --output=result.csv
2.4 查看分析结果
执行2.3命令后,可以看到生成result.csv文件。文件内容如下: