跳至主要内容

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

了解 CodeQL 在选择defaultsecurity-extended查询套件时用于分析用 C 或 C++ 编写的代码的查询。

谁可以使用此功能?

CodeQL 可用于以下存储库类型

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

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

此表列出了 CodeQL action 和 CodeQL CLI 最新版本中可用的查询。有关更多信息,请参阅 CodeQL 文档站点中的CodeQL 变更日志

查询名称相关的 CWE默认扩展Copilot 自动修复
整数加法的溢出检查错误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 标志但没有 mode 参数打开文件732
对类似“scanf”的函数的返回值检查不正确253
迭代器指向已过期的容器416, 664
可能的溢出写入120, 787, 805
new/free 或 malloc/delete 不匹配401
将乘法结果转换为更大的类型190, 192, 197, 681
没有为零终止符留出空间131, 120, 122
指针溢出检查758
潜在的双重释放415
潜在的释放后使用416
对 snprintf 的潜在溢出调用190, 253
对 strncat 的潜在不安全调用788, 676, 119, 251
由于先前的取消引用导致冗余的空检查476
返回堆栈分配的内存825
在 SECURITY_DESCRIPTOR 中将 DACL 设置为 NULL732
带符号溢出检查128, 190
静态数组访问可能导致溢出119, 131
使用 sizeof 的可疑加法468
检查时-使用时文件系统竞争条件367
格式化函数的参数太少234, 685
算术表达式中的不受控制的数据190, 191
SQL 查询中的不受控制的数据089
在操作系统命令中使用不受控制的数据078, 088
不受控制的格式字符串134
在构造函数中不安全地使用 this670
将无符号差表达式与零进行比较191
在指针算术中使用向上转换的数组119, 843
使用已损坏或有风险的加密算法327
使用密钥大小不足的加密算法326
使用具有 Heartbleed 漏洞的 OpenSSL 版本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
溢出写入119, 131
字符串复制中缓冲区大小可能错误676, 119, 251
将敏感系统数据暴露给未经授权的控制范围的潜在风险497
潜在的溢出写入120, 787, 805
浮点数到字符串转换的潜在溢出写入120, 787, 805
潜在的未初始化局部变量665, 457
对 strcat 的潜在不安全使用676, 120, 251
可疑的“sizeof”用法467
可疑的指针缩放468
对 void 的可疑指针缩放468
类型混淆843
无界写入120, 787, 805
不受控制的分配大小190, 789
路径表达式中使用不受控制的数据022, 023, 036, 073
不受控制的进程操作114
未终止的可变参数调用121
条件的不可信输入807
使用潜在的危险函数676