CodeQL 2.27.1 cambia los análisis de C/C++, C# y Kotlin de formas distintas. En C/C++, la versión incorpora una consulta de corrección y nuevos modelos de flujo para API específicas. En C#, añade una nueva recomendación de calidad y ajusta dos áreas de consultas existentes para reducir falsos positivos. En Java/Kotlin, los cambios principales son el soporte para Kotlin 2.4.20 y una corrección del extractor K2 para referencias como Foo::class.java. Para los equipos que administran code scanning, la pregunta clave es qué suite de consultas está realmente habilitada, porque no toda consulta nueva pertenece a las suites de seguridad ejecutadas por defecto.
La documentación técnica fecha CodeQL 2.27.1 el 22 de septiembre de 2026, mientras que GitHub publicó el resumen público de la actualización el 25 de septiembre. En el conjunto de la versión, CodeQL informa 498 consultas de seguridad en la suite Default, con cobertura de 170 CWE, y 131 consultas adicionales en la suite Extended, que cubren 32 CWE más. Estas cifras dan contexto, pero los cambios descritos a continuación no significan que todos los repositorios vayan a recibir los mismos resultados nuevos.
Resumen por lenguaje y riesgo de configuración
| Lenguaje | Qué cambió en 2.27.1 | Efecto probable | Riesgo de configuración |
|---|---|---|---|
| C/C++ | Nueva consulta cpp/ambiguous-assignment-of-comparison; nuevos modelos para Boost.Asio resolver, BDE Blob y Protocol Buffers MessageLite. | Puede señalar expresiones ambiguas de asignación/comparación y mejorar el seguimiento de flujo en proyectos que usan esas API. | La nueva consulta está clasificada para calidad, fiabilidad y corrección y aparece en cpp-code-quality y cpp-security-and-quality. Quien use solo Default o Extended no debe asumir que se ejecutará. |
| C# | Nueva consulta cs/linq/missed-firstordefault; cambios en cs/linq/missed-* y cs/web/missing-token-validation; cambio en registros NuGet privados con Replaces base. | Puede aparecer una nueva recomendación de legibilidad en análisis de calidad. Dos correcciones buscan eliminar resultados incorrectos en casos concretos. | La nueva consulta es de calidad y no debe confundirse con una nueva regla de seguridad de la suite Default. Conviene revisar configuraciones avanzadas y packs personalizados. |
| Kotlin | Soporte para Kotlin 2.4.20 y corrección de la extracción de argumentos Foo::class.java con el compilador K2. | Los proyectos que ya adoptan Kotlin 2.4.20 obtienen soporte documentado. La corrección de K2 puede reducir falsos positivos, incluidas consultas Android afectadas por una extracción incompleta. | No se anuncia una nueva consulta específica de Kotlin en esta versión. El efecto depende principalmente de la versión del extractor y del lenguaje/compilador usado en el build. |
C/C++: nueva consulta de corrección y más contexto de flujo
La nueva consulta cpp/ambiguous-assignment-of-comparison busca expresiones en las que el resultado de una comparación se asigna a una variable y la propia asignación se usa como valor lógico. El patrón puede ser intencional, pero también puede ocultar un error de precedencia de operadores. La documentación de la consulta la clasifica con precisión alta y severidad de advertencia, con etiquetas de calidad, fiabilidad y corrección.
La suite es importante para los equipos de AppSec. La ayuda oficial incluye la regla en cpp-code-quality.qls y cpp-security-and-quality.qls. Por tanto, actualizar el motor por sí solo no implica un nuevo resultado en repositorios configurados únicamente con Default o security-extended. Una configuración avanzada que incluya security-and-quality, una suite propia o un pack que contenga la consulta sí puede empezar a mostrar resultados nuevos después de actualizar el pack correspondiente.
La versión 2.27.1 también amplía los modelos de análisis de C/C++. Añade modelos de taint flow para boost::asio::ip::basic_resolver::resolve, resúmenes de flujo para BloombergLP::bdlbb::Blob y resúmenes para la API C++ google::protobuf::MessageLite. En la práctica, estos cambios de biblioteca pueden modificar los caminos de datos reconocidos por consultas existentes en proyectos que dependen de esas API. Eso puede producir nuevos resultados correctos o explicaciones de trayectoria diferentes incluso sin habilitar la nueva consulta de calidad.
C#: una nueva recomendación y menos falsos positivos en casos específicos
Para C#, la nueva consulta es cs/linq/missed-firstordefault. Detecta bucles foreach que buscan el primer elemento coincidente y luego devuelven un valor predeterminado, patrón que puede expresarse de forma más directa con LINQ FirstOrDefault. La documentación la trata como una recomendación de calidad de alta precisión enfocada en mantenimiento, legibilidad y recursos del lenguaje.
La distinción importa: la nueva regla no debe interpretarse como un nuevo detector de vulnerabilidades añadido a la suite de seguridad por defecto. Los entornos que cargan consultas de calidad pueden ver nuevas recomendaciones. Los entornos que ejecutan solo la selección estándar de seguridad probablemente notarán más los ajustes de precisión en consultas existentes.
El primer ajuste afecta a la familia cs/linq/missed-*. CodeQL deja de sugerir reescrituras con lambda que capturarían parámetros in, out o ref, evitando sugerencias que no compilarían. El segundo afecta a cs/web/missing-token-validation: ahora reconoce AutoValidateAntiforgeryTokenAttribute cuando se registra como filtro MVC global mediante AddControllersWithViews y métodos relacionados. El objetivo es evitar falsos positivos en acciones que ya están protegidas por esa configuración global.
También hay un cambio operativo en la resolución de dependencias. Los registros NuGet privados con Replaces base habilitado en la configuración de registro privado a nivel de organización pasan a sustituir los feeds NuGet predeterminados cuando CodeQL descarga dependencias, incluso si el proyecto configura explícitamente feeds predeterminados. Las organizaciones que dependen de registros privados deberían probar este comportamiento porque puede cambiar el origen efectivo de los paquetes.
Kotlin: soporte para 2.4.20 y corrección del extractor K2
CodeQL 2.27.1 añade soporte para Kotlin 2.4.20. Para equipos que ya migraron a esa versión del compilador o se preparan para hacerlo, este es el hito de compatibilidad más claro: el analizador Java/Kotlin declara soporte para la versión 2.4.20.
El segundo cambio corrige la extracción de argumentos Foo::class.java cuando se usa el compilador Kotlin K2. Antes de la corrección, esos argumentos podían omitirse durante la extracción y provocar falsos positivos en consultas que dependían de ese contexto. El changelog cita java/android/implicit-pendingintents como ejemplo. Tras la actualización, algunos avisos anteriores pueden desaparecer o presentar un contexto distinto aunque el código de la aplicación no haya cambiado.
El changelog de 2.27.1 no anuncia una nueva consulta específica de Kotlin. Los cambios principales están en la compatibilidad del lenguaje y la fidelidad del extractor, algo distinto de simplemente aumentar el número de reglas ejecutadas.
Cómo saber si la actualización puede cambiar tus resultados
GitHub mantiene tres suites integradas principales: default, security-extended y security-and-quality. Default se centra en consultas de seguridad de alta precisión; security-extended añade consultas de seguridad de menor severidad o precisión; security-and-quality añade consultas de mantenimiento y fiabilidad y está disponible con configuración avanzada.
Antes de comparar un análisis con 2.27.1 frente a uno anterior, verifica la configuración efectiva. En workflows de GitHub Actions, la entrada queries del paso github/codeql-action/init puede añadir suites como security-extended o security-and-quality. Los archivos de configuración personalizados también pueden desactivar consultas predeterminadas, incluir o excluir reglas y cargar packs adicionales. Por eso, dos repositorios con la misma versión de CodeQL pueden producir conjuntos de resultados diferentes.
- Si usas solo Default: no esperes que las dos nuevas consultas de calidad sean por sí mismas la causa de nuevos avisos. Las mejoras de modelado y extracción todavía pueden cambiar resultados existentes.
- Si usas security-extended: la suite es mayor que Default, pero sigue enfocada en seguridad. Revisa los metadatos de la consulta antes de atribuir un aviso nuevo a la versión.
- Si usas security-and-quality o suites propias: hay más posibilidades de observar nuevas recomendaciones de calidad, especialmente la consulta de C/C++ listada explícitamente en cpp-security-and-quality.
- Si fijas versiones de packs o usas packs personalizados: registra la versión efectiva de los packs al comparar ejecuciones. Actualizar solo el CLI no garantiza que toda selección personalizada cambie de la misma forma.
Checklist práctico después de actualizar
- Registra la versión del CodeQL CLI o de la Action usada en el análisis y las versiones de los packs cuando estén fijadas manualmente.
- Confirma la suite activa: default, security-extended, security-and-quality o una configuración personalizada.
- En C/C++, busca nuevos resultados de cpp/ambiguous-assignment-of-comparison solo si tu selección incluye esa regla.
- Si el proyecto usa Boost.Asio resolver, BDE Blob o protobuf MessageLite, compara caminos de taint flow y resultados después del upgrade.
- En C#, revisa cambios en cs/linq/missed-* y cs/web/missing-token-validation antes de interpretar una reducción de avisos como una regresión.
- Si la organización usa un registro NuGet privado con Replaces base, valida la restauración de dependencias y el origen de los paquetes usado durante el análisis.
- En Kotlin 2.4.20 con K2, vuelve a ejecutar casos que usan Foo::class.java y compara falsos positivos anteriores, especialmente en análisis Android.
Disponibilidad en GitHub.com y GHES
GitHub indica que las nuevas versiones de CodeQL se despliegan automáticamente para usuarios de code scanning en GitHub.com. Para GitHub Enterprise Server, el anuncio señala que GHES 3.24 incluirá la funcionalidad de CodeQL 2.27.1 y remite a la actualización manual de CodeQL como opción para versiones anteriores compatibles. En entornos corporativos, confirma la versión que realmente se ejecuta en el runner o appliance antes de esperar los mismos resultados observados en GitHub.com.
Qué cambia CodeQL 2.27.1 en una frase
Para C/C++, la versión amplía el modelado de flujo y añade una regla de corrección; para C#, incorpora una recomendación de calidad y reduce falsos positivos en consultas existentes; para Kotlin, añade soporte a 2.4.20 y mejora la extracción con K2. El impacto real en los resultados depende de la suite, los packs y las bibliotecas presentes en el proyecto.
Fuentes y referencias
- GitHub Changelog: CodeQL 2.27.1 adds C and C++ query and Kotlin 2.4.20 support
- CodeQL changelog: CodeQL 2.27.1 (2026-09-22)
- CodeQL query help: cpp/ambiguous-assignment-of-comparison
- CodeQL query help: cs/linq/missed-firstordefault
- GitHub Docs: CodeQL query suites
- GitHub Docs: Workflow configuration options for code scanning





