
01 CodeQL简介
在 2019 年,GitHub 收购了 Semmle,并将 CodeQL 集成到了其平台中,这次收购使得 CodeQL 成为了 GitHub Advanced Security 功能的一部分,通过 GitHub 的 Code Scanning 功能,用户可以轻松地将 CodeQL 集成到他们的开发流程中,实现持续的代码安全检查,通过自动化的安全分析帮助开发者及早发现和修复安全问题。
CodeQL 是一种强大的代码分析工具,它使用一种称为 QL(Query Language)的查询语言来帮助开发者和安全研究人员在代码库中发现潜在的安全漏洞、代码质量问题和合规性问题。
CodeQL 的工作原理
1、抽象语法树(AST):CodeQL 分析引擎首先将代码解析成抽象语法树,这是一种代码的树状结构表示,其中每个节点代表代码中的一个构造(如变量声明、函数调用等)。
2、控制流图(CFG):然后,它构建控制流图,这有助于理解代码的执行路径。
3、数据流分析:通过分析控制流图中的路径,CodeQL 可以追踪数据在程序中的流动,这有助于识别潜在的安全问题,如不安全的用户输入。
4、查询语言(QL):使用 QL 编写的查询语句可以定义要搜索的代码模式,这些模式与安全漏洞或者代码质量相关。
编写的 QL 语句如何执行
1、编写查询:开发者或安全研究人员使用 QL 编写查询,这些查询定义了要搜索的特定代码模式。
2、执行查询:查询可以通过 CodeQL CLI(命令行界面)或集成在 IDE 中的 CodeQL 插件来执行。
3、结果分析:执行查询后,CodeQL 会返回结果,这些结果通常是代码库中与查询模式匹配的所有实例。
4、修复建议:CodeQL 还可以提供修复建议,帮助开发者理解问题所在。
02 CodeQL安装
CodeQL包括两部分:数据文件分析引擎(闭源)和QL规则库(开源)
分析引擎
https://github.com/github/codeql-cli-binaries
规则库
https://github.com/github/codeql
PS:codeql-cli分析引擎和codeql-lib查询规则库的版本要一致,版本不匹配,部分QL查询规则会不匹配,执行后会报错。

首先将下载的二进制分析引擎文件添加到环境变量,再将ql规则库放到在VScode中工作区:把从https://github.com/github/codeql/tags下载的整个QL规则库文件夹放到工作区


5075

被折叠的 条评论
为什么被折叠?



