Skip to main content

Consultas de C y C++ para el análisis de CodeQL

Explore las consultas que CodeQL usa para analizar el código escrito en C o C++ al seleccionar default o el conjunto de consultas security-extended.

¿Quién puede utilizar esta característica?

CodeQL está disponible para los siguientes tipos de repositorios:

CodeQL incluye muchas consultas para analizar código de C o C++. Todas las consultas del conjunto de consultas default se ejecutan de manera predeterminada. Si decide usar el conjunto de consultas security-extended, se ejecutan consultas adicionales. Para más información, consulta Conjuntos de consultas codeQL.

Consultas integradas para el análisis de C y C++

En esta tabla se enumeran las consultas disponibles con la versión más reciente de la acción CodeQL y CodeQL CLI. Para obtener más información, consulte "Registros de cambios CodeQL" en el sitio de documentación de CodeQL.

Nota:

La versión inicial de GitHub Enterprise Server 3.19 incluía la acción CodeQL y la CodeQL CLI 2.22.4, que puede no incluir todas estas consultas. El administrador del sitio puede actualizar la versión de CodeQL a una versión más reciente. Para más información, consulta Configuración la digitalización de código para el dispositivo.

Nombre de la consultaCWE relacionadosValor predeterminadoAmpliadoAutofijo de Copilot
Incorrecta verificación del desbordamiento de la suma de enteros190, 192
Escritura mal acotada120, 787, 805
Se puede eliminar la llamada a memset014
Llamada a alloca en un bucle770
Llamada a la función con menos argumentos que parámetros declarados234, 685
Conversión entre HRESULT y un tipo booleano253
Conversión de char* a wchar_t*704
Secuencia de comandos de CGI vulnerable a scripting entre sitios079
Almacenamiento de texto no cifrado de información confidencial en el archivo260, 313
Transmisión de texto no cifrado de información confidencial319, 359
Comparación de tipo estrecho con tipo amplio en condición de bucle190, 197, 835
Utilización peligroso de “cin”676
Exposición de datos del sistema a una esfera de control no autorizada497
Error por no usar URLs HTTPS319, 345
Archivo abierto con una marca O_CREAT, pero sin argumento de modo732
Comprobación de valor devuelto incorrecta para una función similar a “scanf”253
Iterador de contenedor expirado416, 664
Posible sobrescritura excedida120, 787, 805
No coincide con new/free o malloc/delete401
Resultado de multiplicación convertido a tipo grande190, 192, 197, 681
Sin espacio para el terminador cero131, 120, 122
Comprobación de desbordamiento del puntero758
Posible doble libre415
Posible utilización después de liberar416
Potencial desbordamiento en la llamada a snprintf190, 253
Llamada potencialmente no segura a strncat788, 676, 119, 251
Comprobación redundante de valores NULL debido a la desreferencia anterior476
Devolución de la memoria asignada por pila825
Establecer una DACL en NULL dentro de un SECURITY_DESCRIPTOR732
Comprobación de desbordamiento firmada128, 190
El acceso a la matriz estática puede provocar desbordamiento119, 131
Adición sospechosa con sizeof468
Condición de carrera de tiempo de verificación y tiempo de uso en el sistema de archivos367
No hay suficientes argumentos para la función de formato234, 685
Datos en la expresión aritmética no controlados190, 191
Datos no controlados en la consulta SQL089
Datos no controlados usados en un comando de SO078, 088
Cadena de formato no controlada134
Utilización no segura de esto en el constructor670
Expresión de diferencia sin signo en comparación con cero191
Array de upcasting utilizado en la aritmética de punteros119, 843
Utilización de un algoritmo criptográfico roto o de riesgo327
Utilización de un algoritmo criptográfico con un tamaño de clave insuficiente326
Utilización de una versión de OpenSSL con Heartbleed327, 788
Utilización de funciones peligrosas242, 676
Uso de dirección de pila expirada825
Utilización de una cadena después de que finalice la vigencia416, 664
Uso del puntero único después de que finalice la duración416, 664
Tipo de argumentos para aplicar formato a la función incorrecto686
Expansión de entidades externas de XML611
Desplazamiento de matriz usado antes de la verificación de intervalo120, 125
Omisión de autenticación mediante suplantación electrónica290
Configuración errónea de TLS en boost::asio326
Protocolo codificado en desuso boost::asio327
La llamada a la función de acceso a memoria puede desbordar el búfer119, 121, 122, 126
Certificado no verificado295
Conflación de resultados del certificado295
Almacenamiento de texto no cifrado de información confidencial en una base de datos de SQLite313
Almacenamiento de texto no cifrado de información confidencial en el búfer312
Coma antes de la indentación engañosa1078, 670
Archivo creado sin restringir permisos732
Utilización incorrecta del operador “not”480
Manejo incorrecto de errores de asignación570, 252, 755
Desreferencia de puntero no válida119, 125, 193, 787
Falta una comprobación de valor devuelto para una función similar a “scanf”252, 253
Cadena de formato no constante134
No se ha asignado suficiente memoria para la matriz de tipo puntero131, 122
No se asignó suficiente memoria para el tipo de puntero131, 122
Nombre de aplicación NULL con una ruta de acceso sin comillas en llamada a CreateProcess428
Escritura excesiva119, 131
Posiblemente haya un tamaño de búfer incorrecto en la copia de cadena676, 119, 251
Posible exposición de datos confidenciales del sistema a una esfera de control no autorizada497
Escritura potencialmente desbordante120, 787, 805
Posible desbordamiento en la escritura al convertir de float a cadena120, 787, 805
Variable local potencialmente no inicializada665, 457
Utilización potencialmente no segura de strcat676, 120, 251
Utilización sospechosa de “sizeof”467
Escalado de puntero sospechoso468
Escalado de puntero sospechoso a void468
Confusión de tipos843
Escritura sin límites120, 787, 805
Tamaño de asignación no controlado190, 789
Datos no controlados usados en la expresión de ruta022, 023, 036, 073
Operación de proceso no controlada114
Llamada variadic no terminada121
Entrada no fiable para una condición807
Utilización de una función potencialmente peligrosa676