Saltar al contenido

CodeQL 2.27.1 añade una consulta de C++ y lee archivos de bloqueo de Actions

CodeQL 2.27.1 trae 498 consultas de seguridad por defecto que cubren 170 CWE, una nueva comprobación de C/C++, soporte para Kotlin 2.4.20 y reconoce los archivos de bloqueo de Actions.

Por Tech AI Wire Team

3 min de lectura

XLinkedIn
The CodeQL 2.27.1 changelog page listing the actions/unpinned-tag changes for actions.lock and the new C/C++ and C# queries.
Foto: GitHub

En cifras

security queries in the default suite
498
CWEs those default queries cover
170
extra queries in the extended suite
131

GitHub anunció CodeQL 2.27.1 el 25 de septiembre de 2026. Añade una nueva consulta de C y C++, admite Kotlin 2.4.20 y cambia la forma en que evalúa los workflows de GitHub Actions. En el día a día, el cambio de Actions es el que más importa. CodeQL ahora considera que una acción está fijada de forma segura cuando la cubre una entrada válida de un archivo de bloqueo. Los equipos que fijan de esa manera deberían ver menos falsas alarmas.

CodeQL es el motor de análisis estático detrás del code scanning de GitHub. El análisis estático consiste en leer el código fuente en busca de errores y fallos de seguridad sin ejecutarlo. El code scanning ejecuta esas comprobaciones en las pull requests y muestra los resultados como alertas.

Qué hay de nuevo en CodeQL 2.27.1

El registro de cambios de la CLI de CodeQL fecha la versión el 22 de septiembre de 2026. La entrada del changelog de GitHub llegó tres días después. Ambas describen el mismo conjunto de cambios.

ÁreaCambio en 2.27.1
C/C++Nueva consulta cpp/ambiguous-assignment-of-comparison
C#Nueva consulta cs/linq/missed-firstordefault
C# webcs/web/missing-token-validation reconoce AutoValidateAntiforgeryTokenAttribute
GitHub Actionsactions/unpinned-tag acepta entradas válidas de .github/workflows/actions.lock y referencias $/
KotlinKotlin 2.4.20 admitido; corregida la extracción de Foo::class.java con el compilador K2
GoModelos de flujo de datos para bytes.CutLast, strings.Clone y el paquete de codificación JSON de Go 1.27
RustExtractor migrado a rust-analyzer 0.0.347
JavaScriptMejor reconocimiento de las rutas de servidor de Fastify

La documentación también da el tamaño de los paquetes de consultas. La suite por defecto contiene 498 consultas de seguridad que cubren 170 CWE. Un CWE es una entrada de la Common Weakness Enumeration, un catálogo público de tipos de errores. La suite extendida añade 131 consultas más que cubren otros 32 CWE.

La nueva consulta de C y C++

La novedad de C/C++ apunta a un tipo de error silencioso. Señala el código que asigna el resultado de una comparación a una variable, cuando esa variable se usa después como valor verdadero o falso. Según GitHub, esas expresiones son potencialmente ambiguas.

El caso clásico es una línea que mezcla = y ==. Quien lee no siempre puede saber si el autor quería guardar una comparación o comprobar un valor. Un compilador suele aceptar ambas lecturas, por eso ayuda una comprobación dedicada.

El lado de C# también gana una consulta de calidad de código. cs/linq/missed-firstordefault señala bucles foreach que podrían escribirse con el método FirstOrDefault de LINQ. LINQ es la sintaxis de consulta integrada de C# para colecciones. El changelog añade que sus sugerencias de reescritura ya no capturan parámetros in, out o ref.

Por qué importa el cambio en los archivos de bloqueo de Actions

Fijar una acción significa referirse a ella por un commit exacto en lugar de por una etiqueta como v4. Una etiqueta puede moverse a otro código después de que la adoptes. Un commit no. La consulta actions/unpinned-tag de CodeQL avisa cuando un workflow usa una etiqueta.

En 2.27.1, esa consulta acepta ahora referencias respaldadas por entradas estructuralmente válidas en .github/workflows/actions.lock. También trata las referencias $/, que apuntan al propio repositorio, como fijadas por naturaleza. Un tercero no puede sustituir el código de tu propio repositorio como sí puede ocurrir con una etiqueta externa.

Cuándo lo reciben los usuarios autoalojados

GitHub Enterprise Server es la versión de GitHub que las empresas ejecutan en sus propias máquinas. GitHub dice que Enterprise Server 3.24 incluirá CodeQL 2.27.1. Las herramientas del lado de Java también cambiaron: la documentación indica una actualización a Eclipse Temurin OpenJDK 25.0.4.1.

Qué significa esto para los desarrolladores

Revisa tus alertas de code scanning de actions/unpinned-tag después de actualizar. Si ya registras las acciones en .github/workflows/actions.lock, las alertas sobre esas referencias deberían cerrarse. Las que sigan abiertas apuntan a una referencia que el archivo de bloqueo no cubre, o a una entrada que la consulta no considera válida. En cualquier caso, merece la pena revisarlas.

Los equipos de C y C++ deben esperar una primera oleada de resultados de cpp/ambiguous-assignment-of-comparison en código antiguo. Clasifícalos en lugar de descartarlos en bloque. Algunos serán un estilo intencionado. Otros pueden ser una errata real que ha sobrevivido a las revisiones durante años.

Los equipos de Kotlin con el compilador K2 reciben dos correcciones a la vez. El soporte para 2.4.20 permite actualizar el compilador sin perder el análisis. La corrección de Foo::class.java también debería eliminar algunos falsos positivos.

Los equipos de Go con 1.27 obtienen modelos de flujo de datos para nuevas funciones de la biblioteca estándar. El seguimiento de contaminación (taint tracking) sigue una entrada no confiable a través de un programa hasta un punto de riesgo. Ahora puede seguir los datos a través de bytes.CutLast y strings.Clone en lugar de perder el rastro ahí.

Si usas GitHub Enterprise Server, planifica la actualización a 3.24 para obtener estos cambios. Hasta entonces, tu code scanning mantiene el comportamiento anterior de las consultas.

Fuentes

  1. CodeQL 2.27.1 adds C and C++ query and Kotlin 2.4.20 support - GitHub Changelog
  2. CodeQL 2.27.1 (2026-09-22) - CodeQL documentation

Artículos relacionados

A process listing on a Kubernetes v1.37 node, showing containerd, kubelet and kube-proxy owned by the kube user while the systemd services still run as root.
Herramientas dev

Kubernetes 1.37 pasa el modo rootless a beta

Kubernetes 1.37 pasa KubeletInUserNamespace a beta. El kubelet, los runtimes de contenedores, los plugins CNI y kube-proxy ya pueden ejecutarse como usuario corriente.