Pular para o conteúdo

CodeQL 2.27.1 adiciona uma consulta C++ e lê arquivos de lock do Actions

O CodeQL 2.27.1 traz 498 consultas de segurança padrão cobrindo 170 CWEs, uma nova verificação de C/C++, suporte ao Kotlin 2.4.20 e reconhece arquivos de lock do Actions.

Por Tech AI Wire Team

3 min de leitura

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

Em números

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

O GitHub anunciou o CodeQL 2.27.1 em 25 de setembro de 2026. A versão adiciona uma nova consulta de C e C++, suporta o Kotlin 2.4.20 e muda a forma como avalia workflows do GitHub Actions. No dia a dia, a mudança no Actions é a que mais importa. O CodeQL agora considera uma action fixada com segurança quando uma entrada válida de um arquivo de lock a cobre. Equipes que fixam dessa forma devem ver menos alarmes falsos.

O CodeQL é o motor de análise estática por trás do code scanning do GitHub. Análise estática significa ler o código-fonte em busca de bugs e falhas de segurança sem executá-lo. O code scanning roda essas verificações em pull requests e mostra os resultados como alertas.

O que há de novo no CodeQL 2.27.1

O changelog da CLI do CodeQL registra a versão em 22 de setembro de 2026. O post no changelog do GitHub veio três dias depois. Os dois descrevem o mesmo conjunto de mudanças.

ÁreaMudança no 2.27.1
C/C++Nova consulta cpp/ambiguous-assignment-of-comparison
C#Nova consulta cs/linq/missed-firstordefault
C# webcs/web/missing-token-validation reconhece AutoValidateAntiforgeryTokenAttribute
GitHub Actionsactions/unpinned-tag aceita entradas válidas de .github/workflows/actions.lock e referências $/
KotlinKotlin 2.4.20 suportado; corrigida a extração de Foo::class.java no compilador K2
GoModelos de fluxo de dados para bytes.CutLast, strings.Clone e o pacote de codificação JSON do Go 1.27
RustExtrator migrado para rust-analyzer 0.0.347
JavaScriptMelhor reconhecimento de rotas de servidor do Fastify

A documentação também informa o tamanho dos pacotes de consultas. A suíte padrão tem 498 consultas de segurança cobrindo 170 CWEs. Um CWE é uma entrada da Common Weakness Enumeration, um catálogo público de tipos de bug. A suíte estendida adiciona mais 131 consultas cobrindo mais 32 CWEs.

A nova consulta de C e C++

A novidade de C/C++ mira um tipo discreto de bug. Ela sinaliza código que atribui o resultado de uma comparação a uma variável, quando essa variável é depois usada como valor verdadeiro ou falso. Segundo o GitHub, essas expressões são potencialmente ambíguas.

O caso clássico é uma linha que mistura = e ==. Quem lê nem sempre consegue saber se o autor queria guardar uma comparação ou testar um valor. Um compilador geralmente aceita as duas leituras, por isso uma verificação dedicada ajuda.

O lado do C# também ganha uma consulta de qualidade de código. cs/linq/missed-firstordefault aponta laços foreach que poderiam ser escritos com o método FirstOrDefault do LINQ. O LINQ é a sintaxe de consulta embutida do C# para coleções. O changelog acrescenta que as sugestões de reescrita dela não capturam mais parâmetros in, out ou ref.

Por que a mudança nos arquivos de lock do Actions importa

Fixar uma action significa referenciá-la por um commit exato em vez de uma tag como v4. Uma tag pode ser movida para outro código depois que você a adota. Um commit não. A consulta actions/unpinned-tag do CodeQL avisa quando um workflow usa uma tag.

No 2.27.1, essa consulta agora aceita referências apoiadas por entradas estruturalmente válidas em .github/workflows/actions.lock. Ela também trata referências $/, que apontam para o próprio repositório, como fixadas por natureza. O código do seu próprio repositório não pode ser trocado por terceiros como uma tag externa pode.

Quando usuários self-hosted recebem

O GitHub Enterprise Server é a versão do GitHub que empresas rodam em suas próprias máquinas. O GitHub diz que o Enterprise Server 3.24 vai incluir o CodeQL 2.27.1. As ferramentas do lado Java também mudaram: a documentação lista uma atualização para o Eclipse Temurin OpenJDK 25.0.4.1.

O que isso significa para desenvolvedores

Confira seus alertas de code scanning de actions/unpinned-tag depois da atualização. Se você já registra actions em .github/workflows/actions.lock, os alertas sobre essas referências devem ser fechados. Os que continuarem abertos apontam para uma referência que o arquivo de lock não cobre, ou para uma entrada que a consulta não considera válida. De qualquer forma, vale a pena olhar.

Equipes de C e C++ devem esperar uma primeira onda de resultados de cpp/ambiguous-assignment-of-comparison em código antigo. Faça a triagem em vez de descartá-los em massa. Alguns serão estilo intencional. Outros podem ser um erro de digitação real que sobreviveu a revisões por anos.

Equipes de Kotlin no compilador K2 recebem duas correções de uma vez. O suporte ao 2.4.20 permite atualizar o compilador sem perder a análise. A correção de Foo::class.java também deve eliminar alguns falsos positivos.

Equipes de Go no 1.27 ganham modelos de fluxo de dados para novas funções da biblioteca padrão. O rastreamento de contaminação (taint tracking) segue uma entrada não confiável por um programa até um ponto de risco. Agora ele consegue seguir os dados por bytes.CutLast e strings.Clone em vez de perder o rastro ali.

Se você usa o GitHub Enterprise Server, planeje a atualização para o 3.24 para receber essas mudanças. Até lá, seu code scanning mantém o comportamento antigo das consultas.

Fontes

  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

Artigos 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.
Ferramentas dev

Kubernetes 1.37 promove o modo rootless a beta

O Kubernetes 1.37 promove o KubeletInUserNamespace a beta. O kubelet, os runtimes de contentores, os plugins CNI e o kube-proxy passam a poder correr como utilizador comum.