C 和 C++ 的 CodeQL¶
实验并学习如何为从 C 和 C++ 代码库生成的 CodeQL 数据库编写有效且高效的查询。
- C 和 C++ 代码的基本查询:学习编写和运行简单的 CodeQL 查询。
- C 和 C++ 的 CodeQL 库:在分析 C 或 C++ 代码时,可以使用 CodeQL 库中针对 C 和 C++ 的大型类集合。
- C 和 C++ 中的函数:可以使用 CodeQL 来探索 C 和 C++ 代码中的函数。
- C 和 C++ 中的表达式、类型和语句:可以使用 CodeQL 来探索 C 和 C++ 代码中的表达式、类型和语句,以查找例如不正确的赋值。
- C 和 C++ 中的转换和类:可以使用针对 C 和 C++ 的标准 CodeQL 库来检测表达式类型何时发生变化。
- 分析 C 和 C++ 中的数据流(新):可以使用数据流分析来跟踪可能导致代码库中漏洞的潜在恶意或不安全数据流。有关 CodeQL 2.12.4 之前版本中的数据流分析信息,请参阅分析 C 和 C++ 中的数据流。
- 细化查询以考虑边缘情况:可以通过添加条件来改进 CodeQL 查询生成的结果,以消除由常见边缘情况引起的误报。
- 检测潜在的缓冲区溢出:可以使用 CodeQL 通过检查 C 和 C++ 中等于
strlen
的分配来检测潜在的缓冲区溢出。 - 在 C 和 C++ 中使用 guards 库:可以使用 CodeQL guards 库来识别控制 C 和 C++ 代码库中程序其他部分执行的条件表达式。
- 在 C 和 C++ 中使用范围分析:可以使用范围分析来确定表达式的上限或下限,或者表达式是否可能出现上溢或下溢。
- 哈希合并和值编号:可以使用专门的 CodeQL 库来识别在 C 和 C++ 代码库中语法上相同或在运行时计算相同值的表达式。
- 高级 C/C++ 数据流场景:可以通过区分指针及其间接寻址来跟踪 C 和 C++ 代码库中的精确数据流。
- 为 C 和 C++ 自定义库模型:可以使用数据扩展对代码库所依赖的框架和库进行建模,并将它们发布为 CodeQL 模型包。