Segurança para Devs27/09/2026Redação de Tecnologia e Desenvolvimento8 min de leituraAtualizado em 28/09/2026

CodeQL 2.27.1: o que muda nas análises de C/C++, C# e Kotlin

A versão 2.27.1 adiciona uma consulta de C/C++, uma recomendação de qualidade em C#, novos modelos de fluxo e suporte ao Kotlin 2.4.20. Veja quais mudanças podem alterar resultados conforme a suite de consultas.

Capa tecnológica em tons azuis com painéis de análise de código exibindo CodeQL 2.27.1, C/C++, C# e Kotlin, gráficos e um escudo digital.

O CodeQL 2.27.1 altera as análises de C/C++, C# e Kotlin em pontos diferentes. Em C/C++, a versão adiciona uma consulta de correção e novos modelos de fluxo para APIs específicas. Em C#, entra uma nova recomendação de qualidade e duas consultas existentes recebem ajustes para reduzir falsos positivos. Em Java/Kotlin, o destaque é o suporte ao Kotlin 2.4.20 e uma correção do extrator K2 para referências como Foo::class.java. Para quem administra code scanning, o principal cuidado é verificar qual suite de consultas está ativa, porque nem toda novidade de consulta pertence às suites de segurança executadas por padrão.

A documentação técnica registra o CodeQL 2.27.1 em 22 de setembro de 2026, enquanto o GitHub publicou o resumo da atualização em 25 de setembro. No conjunto geral, a versão informa 498 consultas de segurança na suite Default, cobrindo 170 CWE, e mais 131 consultas na suite Extended, cobrindo outras 32 CWE. Esses totais ajudam a situar a versão, mas as mudanças destacadas abaixo não significam que todos os repositórios receberão os mesmos resultados novos.

Resumo por linguagem e risco de configuração

Linguagem O que mudou no 2.27.1 Efeito provável Risco de configuração
C/C++ Nova consulta cpp/ambiguous-assignment-of-comparison; novos modelos para Boost.Asio resolver, BDE Blob e Protocol Buffers MessageLite. Pode apontar expressões ambíguas de atribuição/comparação e melhorar o rastreamento de fluxo em projetos que usam essas APIs. A nova consulta é classificada como qualidade, confiabilidade e correção e aparece nas suites cpp-code-quality e cpp-security-and-quality. Quem usa apenas Default ou Extended não deve presumir que ela será executada.
C# Nova consulta cs/linq/missed-firstordefault; ajustes em cs/linq/missed-* e cs/web/missing-token-validation; mudança no uso de registros NuGet privados com Replaces base. Pode surgir uma nova recomendação de legibilidade em análises de qualidade. Duas correções tendem a remover alertas incorretos em cenários específicos. A nova consulta é de qualidade e não deve ser confundida com uma nova regra de segurança da suite Default. Configurações avançadas e packs personalizados merecem revisão.
Kotlin Suporte ao Kotlin 2.4.20 e correção da extração de argumentos Foo::class.java sob o compilador K2. Projetos que já adotam Kotlin 2.4.20 passam a ter suporte documentado. A correção do K2 pode reduzir falsos positivos, inclusive em consultas Android afetadas pela extração incompleta. Não há nova consulta Kotlin específica anunciada nesta versão. O efeito depende principalmente da versão do extrator e da linguagem usada no build.

C/C++: nova consulta de correção e mais contexto de fluxo

A nova consulta cpp/ambiguous-assignment-of-comparison procura expressões em que o resultado de uma comparação é atribuído a uma variável e a própria atribuição é usada como valor lógico. O padrão pode ser válido, mas também pode esconder um erro de precedência. A documentação da consulta a classifica com precisão alta e severidade de aviso, com tags de qualidade, confiabilidade e correção.

O ponto mais importante para equipes de AppSec é a suite. A ajuda oficial lista essa consulta em cpp-code-quality.qls e cpp-security-and-quality.qls. Portanto, uma atualização do mecanismo não implica, por si só, um novo alerta em repositórios configurados apenas com as suites Default ou security-extended. Já uma configuração avançada que inclui security-and-quality, uma suite própria ou um pack que incorpore a consulta pode começar a exibir resultados novos após a atualização do pack correspondente.

Além da nova consulta, o 2.27.1 amplia os modelos usados pelo analisador de C/C++. Foram adicionados modelos de taint flow para boost::asio::ip::basic_resolver::resolve, além de resumos de fluxo para BloombergLP::bdlbb::Blob e para a API C++ google::protobuf::MessageLite. Na prática, essas mudanças podem alterar caminhos de dados reconhecidos por consultas já existentes em projetos que dependem dessas bibliotecas. Isso pode produzir novos resultados corretos ou modificar trajetórias exibidas pelo analisador, mesmo sem ativar a nova consulta de qualidade.

C#: uma nova recomendação e menos falsos positivos em casos específicos

Para C#, a nova consulta é cs/linq/missed-firstordefault. Ela identifica loops foreach que procuram o primeiro elemento correspondente e depois retornam um valor padrão, padrão que pode ser expresso de forma mais clara com LINQ FirstOrDefault. A documentação da consulta a trata como recomendação de qualidade, com precisão alta e foco em manutenção, legibilidade e recursos da linguagem.

Essa distinção importa: a novidade não deve ser lida como uma nova detecção de vulnerabilidade da suite de segurança padrão. Em ambientes que carregam consultas de qualidade, a atualização pode adicionar recomendações. Em ambientes que executam apenas a seleção padrão de segurança, o impacto mais visível tende a vir dos ajustes de precisão nas consultas existentes.

O primeiro ajuste atinge a família cs/linq/missed-*. O CodeQL deixa de sugerir reescritas com lambda que capturariam parâmetros in, out ou ref, evitando sugestões que não compilariam. O segundo ajuste está em cs/web/missing-token-validation: a consulta passa a reconhecer AutoValidateAntiforgeryTokenAttribute quando ele é registrado como filtro MVC global por AddControllersWithViews e métodos relacionados. O objetivo é evitar falsos positivos em ações que já estão protegidas por essa configuração global.

Há ainda uma mudança operacional na resolução de dependências. Registros NuGet privados com a opção Replaces base habilitada na configuração de registro privado em nível de organização passam a substituir os feeds NuGet padrão quando o CodeQL baixa dependências, inclusive quando o projeto configura explicitamente feeds padrão. Para organizações que dependem de registries privados, isso merece teste em pipelines porque a origem efetiva dos pacotes pode mudar.

Kotlin: suporte ao 2.4.20 e correção no extrator K2

O CodeQL 2.27.1 adiciona suporte ao Kotlin 2.4.20. Para equipes que já migraram o compilador ou estão preparando a adoção, esse é o marco objetivo da versão: o analisador Java/Kotlin passa a declarar suporte à versão 2.4.20.

A segunda mudança corrige a extração de argumentos no formato Foo::class.java quando o compilador Kotlin K2 é usado. Antes da correção, esses argumentos podiam ser descartados durante a extração, o que podia levar a falsos positivos em consultas dependentes desse contexto. O changelog cita como exemplo java/android/implicit-pendingintents. Assim, depois da atualização, alguns alertas anteriores podem desaparecer ou ter contexto diferente sem qualquer mudança no código da aplicação.

O changelog do 2.27.1 não anuncia uma nova consulta específica de Kotlin. A alteração principal está na compatibilidade de linguagem e na fidelidade do extrator, o que é diferente de simplesmente aumentar o número de regras executadas.

Como saber se a atualização pode mudar seus resultados

O GitHub mantém três suites integradas principais: default, security-extended e security-and-quality. A default concentra as consultas de segurança de alta precisão; a security-extended acrescenta consultas de segurança com precisão ou severidade menores; a security-and-quality acrescenta, sobre as anteriores, consultas de manutenção e confiabilidade e é usada em configuração avançada.

Antes de comparar um scan feito com 2.27.1 com um scan anterior, confira a configuração efetiva. Em workflows com GitHub Actions, o campo queries do passo github/codeql-action/init pode incluir suites como security-extended ou security-and-quality. Configurações personalizadas também podem desabilitar consultas padrão, incluir ou excluir regras e carregar packs adicionais. Por isso, dois repositórios na mesma versão do CodeQL podem produzir conjuntos de resultados diferentes.

  • Se você usa apenas Default: não espere que as duas novas consultas de qualidade sejam, por si só, a causa de novos alertas. Ainda assim, melhorias de modelagem e extração podem alterar resultados existentes.
  • Se você usa security-extended: o conjunto é maior que o Default, mas continua focado em segurança. Verifique os metadados das consultas antes de atribuir qualquer alerta novo à versão.
  • Se você usa security-and-quality ou suites próprias: há maior chance de observar as novas recomendações de qualidade, especialmente a consulta de C/C++ listada explicitamente em cpp-security-and-quality.
  • Se você fixa versões de packs ou usa packs customizados: registre a versão efetiva dos packs no comparativo. Atualizar apenas o CLI não garante que toda seleção personalizada mudou da mesma forma.

Checklist prático depois da atualização

  1. Registre a versão do CodeQL CLI ou da Action usada no scan e a versão dos packs de consulta quando eles forem fixados manualmente.
  2. Confirme a suite ativa: default, security-extended, security-and-quality ou uma configuração personalizada.
  3. Em C/C++, procure por novos resultados de cpp/ambiguous-assignment-of-comparison apenas se sua seleção de consultas incluir a regra.
  4. Se o projeto usa Boost.Asio resolver, BDE Blob ou protobuf MessageLite, compare caminhos de fluxo e resultados de consultas de taint após o upgrade.
  5. Em C#, revise diferenças em cs/linq/missed-* e cs/web/missing-token-validation antes de classificar uma queda de alertas como regressão.
  6. Se a organização usa NuGet privado com Replaces base, valide a restauração de dependências e a origem dos pacotes no ambiente de análise.
  7. Em Kotlin 2.4.20 com K2, reexecute casos que usam Foo::class.java e compare falsos positivos anteriores, especialmente em análise Android.

Disponibilidade no GitHub.com e no GHES

O GitHub informa que novas versões do CodeQL são implantadas automaticamente para usuários de code scanning no GitHub.com. Para GitHub Enterprise Server, o changelog da atualização diz que o GHES 3.24 incluirá a funcionalidade do CodeQL 2.27.1 e aponta a atualização manual do CodeQL como opção para versões anteriores compatíveis. Em ambientes corporativos, portanto, confirme a versão realmente executada no runner ou appliance antes de esperar os mesmos resultados observados no GitHub.com.

O que a versão 2.27.1 muda, em uma frase

Para C/C++, a versão amplia modelagem de fluxo e adiciona uma regra de correção; para C#, acrescenta uma recomendação de qualidade e corrige falsos positivos em consultas existentes; para Kotlin, adiciona suporte ao 2.4.20 e melhora a extração com K2. O impacto real nos alertas depende da suite, dos packs e das bibliotecas presentes no projeto.

Fontes e referências

Tópicos deste artigoanálise estáticaC/C++C#code scanningCodeQLKotlinsegurança de códigoCodeQL 2.27.1CodeQL C/C++CodeQL C#CodeQL Kotlin 2.4.20consultas CodeQLsecurity-and-quality