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 更改日志

Note

code scanning 的 GitHub 自动修复功能为 beta 版。 功能和文档可能会有变动。 在此阶段,此功能仅限用于 CodeQL 识别的专用和内部存储库的 C#、Go、Java、JavaScript/TypeScript、Python 和 Ruby 警报。 如果你有企业帐户并使用 GitHub Advanced Security,则你的企业有权访问 beta 版本。

查询名称相关的 CWE默认延期Autofix
对整数加法溢出的错误检查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
迭代器至已过期的容器416、664
“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