跳转到内容
Go back

内网 CodeQL 配置及批量扫描札记

更新于:

内网 CodeQL 配置及批量扫描札记

CodeQL 使用备忘

建立数据库的踩坑总结

通过 coedql-cli 创建一个数据库

执行命令:
codeql database create <database> --language=<language-identifier>

编译项目:

最好设置编译参数为 --command="mvn clean install -Dmaven.test.skip=true" --file pom.xml ,如果设置为 --command="mvn clean install --file pom.xml" 部分项目会报错,从而导致数据库生成不成功。

参数说明:

更多参数说明

CodeQL for VSCode 插件使用简记

将 CodeQL 规则库加入现有的工作站

此种方法未实现,仅按文档进行流程说明

将下载好的本地 CodeQL 库加入你的 workspace

CodeQL 库下载链接

  1. 选择 File > Add Folder to Workspace,加入下载好的 codeql 库

然后导出 CodeQL 数据库

选择对应的官方规则进行扫描

批量扫描流程备忘

批量扫描流程:

  1. 使用浏览器爬虫插件,批量获取远程仓库地址,导出结果为 xlsx
  2. 整理爬虫结果,在 excel 中使用语句进行拼接,分别建立两个 powershell 脚本文件
  3. 使用 wps 表格 for 2019 专业版,将脚本全部扫描之后的结果进行汇总,即合并成一个表格
    • 【数据】→【合并表格】→【多个工作表合并成一个工作表】
    • 在合并结果的工作表中,选择 A 列,替换 [*] 为空,规范数据库名称,方便后续操作
    • 为合并结果的工作表添加表头,然后再建立数据透视表
  4. 在合并结果中,使用数据透视表对结果进行分析
  5. 在 VSCode 中,对照汇总结果中的数据透视表,逐个导入仓库进行分析

扫描流程缺点总结:

  1. 为了方便使用 VSCode 的可视化分析扫描结果,需要进行两次对数据库进行两次扫描,会造成算力浪费
  2. 使用的 excel 拼接语句过于简单粗暴,效率低,以下是优化思路
    1. 对代码仓库编程语言进行判断,如果是 java 项目,才进行后续的建库和扫描操作
    2. git pull 进行判断,如果有更新才进行后续的建库和扫描操作
    3. 考虑对 CodeQL 扫描规则进行精简,减少实际扫描时负载,加快扫描速度
    4. 对 CodeQL 扫描参数进行调优,充分利用终端算力,加快建库扫描的速度

批量获取仓库地址

在 chrome 系的浏览器中,安装插件【Easy Scraper】,浏览器插件 id 为【cljbfnedccphacfneigoegkiieckjndh】

Excel 拼接语句备忘

可以将使用拼接语句拼接的结果分别另存为 .ps1 文件,然后在 powershell 中执行即可

拉取全部仓库

拉取远程仓库代码到本地源代码目录

="cd F:\Codes\00-CodeQL-source ;git clone "&A2

更新全部仓库并扫描

本地仓库拉取更新,然后强制建立数据库并使用指定规则进行扫描

[!tips]

  1. 需要注意相关目录是否与实际环境一致
="cd F:\Codes\00-CodeQL-source\"&B3&" ; git pull ; cd F:\Codes\ ; codeql database create F:\Codes\00-CodeQL-database\"&B3&"-database --language='java' --command='mvn clean install --file pom.xml -Dmaven.test.skip=true' --source-root=F:\Codes\00-CodeQL-source\"&B3&" --overwrite ;codeql database analyze F:\Codes\00-CodeQL-database\"&B3&"-database F:\codeql-main\java\ql\src\experimental\Security\CWE --format=csv --output=F:\Codes\00-CodeQL-result\"&B3&"-database.csv"

分享文章至:

Previous Post
客户端连接 Debian 下 v2ray 报 Io Readwrite on Closed Pipe
Next Post
开源笔记