Skip to main content

用于 CodeQL 分析的 C 和 C++ 查询

当您选择 defaultsecurity-extended 查询套件时,浏览 CodeQL 用于分析使用 C 或 C++ 编写的代码的查询。

谁可以使用此功能?

Code scanning 可用于 GitHub.com 上的所有公共存储库。 若要在组织拥有的专用存储库中使用 code scanning,必须具有 GitHub Advanced Security 许可证。 有关详细信息,请参阅“关于 GitHub 高级安全性”。

CodeQL 包含许多用来分析 C 或 C++ 代码的查询。 默认情况下,default 查询套件中的所有查询都会运行。 如果选择使用 security-extended 查询套件,则会运行其他查询。 有关详细信息,请参阅“CodeQL 查询套件”。

用于 C 和 C++ 分析的内置查询

下表列出了最新版本的 CodeQL 操作和 CodeQL CLI 的可用查询。 有关详细信息,请参阅 CodeQL 文档中的 CodeQL 更改日志

注意:**** code scanning 的 GitHub 自动修复功能为 beta 版。 功能和文档可能会有变动。 在此阶段,此功能仅限用于 CodeQL 标识的 JavaScript、TypeScript 和 、Python 和 Java 警报。 如果你有企业帐户并使用 GitHub Advanced Security,则你的企业有权访问 beta 版本。

查询名称相关的 CWE默认延期
对整数加法溢出的错误检查190、192
错误绑定的写入120、787、805
可以删除对 memset 的调用14
在循环内调用 alloca770
以比所声明参数要少的参数调用函数234、685
在 HRESULT 与布尔类型之间强制转换253
从 char* 强制转换为 wchar_t*704
CGI 脚本容易受到跨站脚本影响079
文件内敏感信息的明文存储260、313
敏感信息明文传输319、359
循环条件下窄类型与宽类型的比较190、197、835
对“cin”的危险使用676
向未经授权的控制领域泄露系统数据497
未能使用 HTTPS URL319、345
使用 O_CREAT 标志打开,但不包含模式参数的文件732
“scanf”类似函数的返回值检查错误253
可能出现写入溢出120、787、805
不匹配全新/免费或 malloc/delete401
乘法结果转换为较大的类型190、192、197、681
零终止符没有空间131、120、122
指针的溢出检查758
潜在的双重释放415
释放后可能使用416
对 snprintf 有可能的溢出调用190、253
由于之前取消引用的冗余 null 检查476
返回堆栈分配内存825
在 SECURITY_DESCRIPTOR 中将 DACL 设置为 NULL732
签名的溢出检查128、190
静态数组访问可能导致溢出119、131
带 sizeof 的可疑添加468
检查时间、使用时间文件系统争用条件367
格式化函数的参数太少234、685
算术表达式中的不受控数据190、191
SQL 查询中的未受控数据089
OS 命令中使用的不受控制数据078、088
不受控制的格式字符串134
在构造函数中对此的不安全使用670
指针算术中使用的向上转换数组119、843
使用已破解的或有风险的加密算法327
使用密钥大小不足的加密算法326
将 OpenSSL 的一个版本与 Heartbleed 配合使用327、788
使用危险的函数242、676
使用过期的堆栈地址825
在生存期结束后对字符串的使用416、664
在生存期结束后使用唯一指针416、664
格式设置函数所用的参数类型错误686
XML 外部实体扩展611
范围检查之前使用的数组偏移量120、125
通过欺骗来绕过身份验证290
boost::asio TLS 设置配置错误326
boost::asio 使用已弃用的硬编码协议327
证书未检查295
证书结果合并295
SQLite 数据库中的敏感信息明文存储313
缓冲区内敏感信息的明文存储312
误导性缩进之前的逗号1078、670
在未限制权限的情况下创建的文件732
不正确的“not”运算符使用情况480
分配错误处理有误570、252、755
无效指针取消引用119、125、193、787
“scanf”类似函数的返回值检查缺失252、253
非常数格式字符串134
指针类型数组的内存分配不足131、122
指针类型的内存分配不足131、122
调用 CreateProcess 时存在未加引号路径的 NULL 应用程序名称428
不受控分配大小的溢出190、789
写入溢出119、131
字符串复制可能存在错误的缓冲区大小676、119、251
可能向未经授权的控制领域泄露系统数据497
可能的溢出写入120、787、805
使用 float 到字符串转换的可能溢出写入120、787、805
可能未初始化的局部变量665、457
对 strncat 有可能的不安全调用788、676、119、251
对 strcat 有可能的不安全使用676、120、251
“sizeof”的可疑使用467
可疑的指针缩放468
可疑的指针缩放到失效468
类型混淆843
未绑定写入120、787、805
路径表达式中使用的不受控数据022、023、036、073
不受控流程操作114
与零相比的无符号差异表达式191
未终止的可变调用121
条件不受信任的输入807
使用具有潜在危险的函数676