SuperAPI AI 工具集

codeql

安全与审计

查看项目

更新于 10-15 22:16

技能介绍

用途:CodeQL 是静态代码分析工具,适合跨文件、跨模块的深度过程间污点追踪、复杂数据流分析、大型代码库安全漏洞检测、跨函数调用漏洞发现、变体分析(查找相似缺陷)、GitHub Advanced Security 集成、合规安全扫描,以及为组织特定模式开发自定义 QL 查询。它可与 Semgrep 配合(先 Semgrep 快速扫描,再用 CodeQL 深入分析),与 SARIF 报告工具、依赖扫描器(OSV-Scanner)、密钥检测工具(Gitleaks)搭配使用。

主要能力:支持 C/C++、C#、Go、Java/Kotlin、JavaScript/TypeScript、Python、Ruby(稳定)及 Swift(Beta)。核心流程为创建数据库、运行分析、输出结果。查询套件包括 <lang>-security-extended.qls、<lang>-security-and-quality.qls、<lang>-code-scanning.qls、<lang>-lgtm-full.qls。输出格式支持 SARIF、CSV、JSON、Text。可编写 QL 自定义查询,使用 DataFlow 与 TaintTracking 配置源、汇与净化器。

使用方式:安装可用 GitHub CLI:gh extension install github/gh-codeql,或直接下载 codeql-linux64.zip 并加入 PATH。克隆标准查询库:git clone --depth 1 https://github.com/github/codeql.git codeql-repo,并设置 CODEQL_HOME。创建数据库:codeql database create my-db --language=python --source-root=./src;编译型语言需 --command 指定构建命令。运行分析:codeql database analyze my-db --format=sarif-latest --output=results.sarif。可通过 GitHub Actions 的 github/codeql-action 集成,并用 codeql-config.yml 配置查询与忽略路径。

适用场景与限制:适合深度安全审计、变体分析、多语言分析。不适合快速模式扫描(用 Semgrep)、密钥检测(用 Gitleaks)、依赖漏洞扫描(用 OSV-Scanner/Depscan)、IaC 安全分析(用 KICS)、API 端点发现(用 Noir)、无源码的二进制分析及 CodeQL 不支持的语言。限制包括:编译型语言需成功构建;大型代码库分析可能耗时数小时;大数据库需 8GB 以上内存;QL 语言有学习曲线;语言支持程度不一;复杂数据流可能产生误报需调优。性能优化可用 --ram、--threads、编译缓存、增量分析与 --timeout。

参考资料:文档 https://codeql.github.com/docs/,查询参考 https://codeql.github.com/codeql-standard-libraries/,仓库 https://github.com/github/codeql,VS Code 扩展与 GitHub Actions 见官方市场与仓库。