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?

Code scanning está disponible para todos los repositorios públicos en GitHub.com. Para utilizar code scanning en un repositorio privado que pertenece a una organización, debes tener una licencia para GitHub Advanced Security. Para obtener más información, vea «Acerca de GitHub Advanced Security».

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 obtener más información, vea «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 corrección automática de GitHub para code scanning está en versión beta. La funcionalidad y la documentación están sujetas a cambios. Durante esta fase, la función está restringida a las alertas de JavaScript, TypeScript y Python, así como las alertas de Java identificadas por CodeQL. Si tiene una cuenta de empresa y usa GitHub Advanced Security, la empresa tiene acceso a la versión beta.

Nombre de la consultaCWE relacionadosValor predeterminadoAmpliado
Comprobación del desbordamiento de la adición de enteros incorrecta190, 192
Escritura limitada de forma grave120, 787, 805
Se puede eliminar la llamada a memset14
Llamada a alloca en una repetición770
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 limitado con tipo amplio en condición de repetición190, 197, 835
Utilización peligroso de “cin”676
Exposición de datos del sistema a una esfera de control no autorizada497
Error al utilizar direcciones URL 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
Es probable que se sobrescriba la escritura120, 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
Llamada posiblemente desbordante a snprintf190, 253
Comprobación redundante de valores NULL debido a la desreferencia anterior476
Devolución de la memoria asignada por pila825
Establecer una DACL en NULL en 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
Hora de comprobación de la condición de carrera del 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
Matriz de conversión a tipo básico utilizada 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
Utilización de la 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
boost::asio configuración errónea de TLS326
boost::asio uso del protocolo codificado obsoleto327
Certificado no activado295
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 sangría engañosa1078, 670
Archivo creado sin restringir permisos732
Utilización incorrecta del operador “not”480
Control de errores de asignación incorrecto570, 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
Memoria asignada para la matriz de tipo de puntero insuficiente131, 122
Memoria asignada para el tipo de puntero insuficiente131, 122
Nombre de aplicación NULL con una ruta de acceso sin comillas en llamada a CreateProcess428
Desbordamiento en tamaño de asignación no controlado190, 789
Sobrescrito de escritura119, 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
Posiblemente se sobrescriba la escritura120, 787, 805
Posiblemente se sobrescriba la escritura con float en la conversión de cadenas120, 787, 805
Posiblemente se utilizó la variable local sin inicializar665, 457
Llamada potencialmente no segura a strncat788, 676, 119, 251
Utilización potencialmente no segura de strcat676, 120, 251
Utilización sospechosa de “sizeof”467
Escalado de puntero sospechoso468
Escalado de puntero sospechoso para anular468
Confusión de tipos843
Escritura sin enlazar120, 787, 805
Datos usados en la expresión de ruta de acceso no controlados022, 023, 036, 073
Operación de proceso no controlada114
Expresión de diferencia sin signo en comparación con cero191
Llamada variadic no terminada121
Entrada no de confianza para una condición807
Utilización de una función potencialmente peligrosa676