CodeQL搭建与使用

CodeQL搭建与使用

vscode

Visual Studio Code安装

https://code.visualstudio.com/Download


CodeQL CLI

https://github.com/github/codeql-cli-binaries/releases

设置环境变量

path下将codeql的路径添加即可


配置环境变量

输入codeql检测环境变量配置是否成功


下载规则库

在codeql-cli文件夹下运行git clone https://github.com/github/codeql codeql-repo


codeql-cli:cli即command-line interface。主要用来执行codeql的命令。
codeql-repo:包含多种语言的ql查询文件。


vscode安装插件

配置扩展

配置进codeql.exe路径


规则库配置

git clone --recursive https://github.com/github/vscode-codeql-starter/

项目下载完成后,进入项目目录

git submodule update --init
git submodule update --remote

vscode点击文件(File)-从文件打开工作区(Open Workspace from File)


创建本地数据库

首先是官方给的测试代码

javaCodeqlTest.java


public class javaCodeqlTest {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
switch(args.length) {
case -2:
return;
case -1:
continue;
case 0:
System.out.println("No args");
break;
case 1:
case 2:
System.out.println("1-2 args");
// missing break.
case 3:
System.out.println("3 or more args");
// fall-through
case 4:
System.out.println("4 or more args");
if (i > 1)
break;
// conditionally missing break.
case 5:
System.out.println("foo");
// Missing break, but switch ends.
}
}
}
}

打开javaCodeqlTest路径下的cmd

codeql database create --language=java ./java-database --command="javac javaCodeqlTest.java"

也可以在我们要审计的代码下在cmd输入

codeql database create java-database --language=java

在CodeQL插件中,选择文件夹,选择数据库


使用ql文件对数据库进行查询,找到我们需要使用的ql文件(java\ql\src\Violations of Best Practice\Declarations下)


查看结果


CVE系列

codeql-repo中存放着CWE系列供我们可以使用

https://cwe.mitre.org/top25/archive/2019/2019_cwe_top25.html

分析github开源项目

面向开源社区和企业的源代码分析平台LGTM,这个平台能够自动化的发现并预警GitHub上开源软件的安全问题,同时,与CodeQL一样对开源社区与开发者保持免费

https://lgtm.com/search?q=xiaomi

上一篇

Java序列化与反序列化