
本项目收集CodeQL相关内容,包括CodeQL的设计原理实现方法或使用CodeQL进行的漏洞挖掘案例等。其优点在于可以利用已知的漏洞信息来挖掘类似的漏洞,就像处理数据一样寻找漏洞。基于语义的代码分析思想在SAST领域更将会是一把利剑,这种思想更是下一代代码审计工具的发展方向。但CodeQL往往更适合开发人员对自己项目的漏洞自检,在某些环节处理上还存在较大问题,技术瓶颈有待提高。作者:0e0w
本项目创建于2021年12月13日,最近的一次更新时间为2023年11月21日。
本章节收集整理CodeQL的相关资源内容,文章内容质量参差不齐,建议深入学习官方资源!
一、官方资源
二、优秀资源
三、视频资源
四、学术刊物
五、其他资源
本章节介绍CodeQL的基础用法及设计思路实现原理等!
- AST、source、sink、
- CodeQL的处理对象并不是源码本身,而是中间生成的AST结构数据库,所以我们先需要把我们的项目源码转换成CodeQL能够识别的CodeDatabase。
- 1、创建数据库。2、对数据库进行查找。3、分析查询结果发现漏洞
- Engine、Database、Queries
- AutoBuilder、extractor、trap、逻辑谓词、连接词、逻辑连接词、predicate
- CodeQL的缺点?不能直接通过打包好的程序进行代码审计。
一、CodeQL安装
二、CodeQL语法
三、CodeQL数据库
- https://github.com/waderwu/extractor-java
- 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
本章节介绍QL语言的语法规则,包括优秀规则等内容。CodeQL为王,规则为先!
一、基础语法
二、规则编写
三、官方规则
四、优秀规则
本章节是针对不同的开发语言进行CodeQL扫描的例子,本章节待整理。
一、Java安全分析
二、C#安全分析
三、Golang安全分析
四、Python
五、C++安全分析
六、Ruby
七、CodeQL工具
本章节介绍CodeQL的具体使用案例,包括自己通过CodeQL挖掘的漏洞等内容。
一、大型应用分析
- 分析Shiro
- 分析Fastjson
- 分析Log4j
- 分析Dubbo
- 分析kylin
- 分析grafana
- 分析Hadoop
- 分析Struts2
二、代码审计案例



