/CodeQL

《深入理解CodeQL》Finding vulnerabilities with CodeQL.

《深入理解CodeQL》

本项目收集整理CodeQL相关内容,包括CodeQL的设计原理实现方法或使用CodeQL进行的漏洞挖掘案例等。CodeQL基于语义的代码分析**在SAST领域将会是一把利剑,CodeQL是下一代代码审计工具。可以通过CodeQL利用已知的漏洞信息来挖掘类似的漏洞,就像处理数据一样寻找漏洞。作者:0e0w

本项目创建于2021年12月13日,最近的一次更新时间为2022年3月17日。

01-CodeQL技术资源

一、官方资源

二、优秀资源

三、视频资源

四、学术刊物

五、其他资源

02-CodeQL基础内容

本章节介绍CodeQL的基础用法及设计思路实现原理等!

  • AST、source、sink、
  • CodeQL的处理对象并不是源码本身,而是中间生成的AST结构数据库,所以我们先需要把我们的项目源码转换成CodeQL能够识别的CodeDatabase。
  • 1、创建数据库。2、对数据库进行查找。3、分析查询结果发现漏洞
  • Engine、Database、Queries
  • AutoBuilder、extractor、trap、逻辑谓词、连接词、逻辑连接词、predicate
  • CodeQL的缺点?不能直接通过打包好的程序进行代码审计。

一、CodeQL安装

二、CodeQL语法

三、CodeQL数据库

  • https://lgtm.com/help/lgtm/generate-database
  • 生成数据库之前,需要先保证被分析程序可以正常跑起来。
  • 创建数据库
    • codeql database create java-db --language=java
    • codeql database create java-db --language=java --command='mvn clean install'
    • codeql database create cpp-database --language=cpp --command=make
    • codeql database create csharp-database --language=csharp --command='dotnet build /t:rebuild
    • codeql database create csharp-database --language=csharp --command='dotnet build /p:UseSharedCompilation=false /t:rebuild'
    • codeql database create java-database --language=java --command='gradle clean test'
    • codeql database create java-database --language=java --command='mvn clean install'
    • codeql database create java-database --language=java --command='ant -f build.xml'
    • codeql database create new-database --language=java --command='./scripts/build.sh'
  • 分析数据库
    • codeql database analyze java-db CWE-020.ql --format=csv --output=result.csv

03-CodeQL高级进阶

一、Java安全分析

二、C#安全分析

三、Golang安全分析

四、Python

五、C++安全分析

六、Ruby

04-CodeQL规则工具

一、CodeQL规则

二、CodeQL工具

05-CodeQL使用案例

一、大型应用分析

二、代码审计案例

06-CodeQL参考资源

Stargazers over time