O GitHub lançou em 9 de outubro o CodeQL 2.27.2, com um novo analisador de expressões regulares em C++, melhorias de fluxo de dados para Go, Rust e JavaScript e mudanças nas consultas de segurança de C# e GitHub Actions. A versão também altera a biblioteca de grafo de fluxo de controle de Go, o que pode exigir atualização de consultas personalizadas.
CodeQL é o mecanismo de análise estática usado pelo code scanning do GitHub. Ele transforma o código em uma base consultável e executa regras que procuram padrões associados a vulnerabilidades. A suíte padrão da versão reúne 498 consultas de segurança cobrindo 170 categorias CWE; a suíte estendida acrescenta 131 consultas e 32 categorias.
C++ ganha parser para expressões regulares ECMAScript
Em C e C++, o CodeQL agora interpreta expressões regulares criadas com std::regex quando usam a gramática ECMAScript. A análise deixa de tratar o padrão apenas como uma sequência opaca e passa a compreender sua estrutura.
Isso amplia a capacidade de encontrar problemas relacionados ao uso de expressões regulares, mas não significa que toda expressão problemática será detectada. O resultado depende de o valor estar visível para a análise, da gramática escolhida e da consulta habilitada no projeto.
A versão também adiciona modelos de pontos de entrada para injeção de SQL na API C do Comdb2 e resumos de fluxo para codecs e desserializadores de byte stream do Bloomberg BDE. Modelos de biblioteca informam ao analisador como os dados entram, saem e atravessam APIs que não seriam compreendidas apenas pela leitura do código da aplicação.
Go muda o grafo de fluxo de controle
Para Go, a biblioteca de análise passou a usar o grafo de fluxo de controle compartilhado do CodeQL. O novo modelo inclui nós adicionais para atribuições, parâmetros, resultados, laços range e chamadas adiadas. Nós inalcançáveis a partir da entrada deixam de fazer parte do grafo.
A mudança afeta nós, arestas, localizações, representação textual e limites de blocos básicos. Consultas personalizadas que dependem da estrutura anterior podem falhar ou produzir resultados diferentes. O changelog do CodeQL 2.27.2 lista remoções, novas classes e métodos depreciados, como a substituição de IfStmt.getCond por IfStmt.getCondition.
O suporte a WebSocket também foi atualizado. A análise reconhece o caminho github.com/coder/websocket, usado pelo projeto que sucedeu nhooyr.io/websocket. Isso permite acompanhar fluxo de dados em aplicações que adotaram a nova localização do pacote.
Antes de atualizar um pacote de consultas próprio, equipes que usam Go devem compilar e executar a suíte contra uma base conhecida. Comparar resultados antes e depois ajuda a separar ganhos do novo modelo de regressões em regras locais. A alteração é documentada como incompatível e não deve ser tratada como simples atualização interna.
Rust melhora fluxo em código assíncrono e TLS
O extrator de Rust passou a suportar as classes AnyAttr e DocComment. Também houve melhoria no fluxo de dados de blocos assíncronos usados com await, além de resumos para as bibliotecas native-tls, async-native-tls e tokio-native-tls.
Fluxo assíncrono é relevante porque um valor pode atravessar tarefas e pontos de suspensão antes de alcançar uma operação sensível. Quando a ferramenta não representa corretamente esse caminho, uma origem não confiável e um destino perigoso podem parecer desconectados.
Os novos resumos de TLS ajudam a reconhecer como dados circulam por APIs conhecidas. Eles não verificam sozinhos configuração de certificados, política criptográfica ou segurança do serviço remoto. A análise estática continua focada no comportamento representável no código e nos modelos disponíveis.
JavaScript reconhece diretivas do Workflow SDK
Em JavaScript e TypeScript, o CodeQL agora identifica as diretivas "use workflow" e "use step" do Workflow SDK. A versão também melhora o rastreamento de handlers e entradas de requisição no framework Hapi, inclusive quando rotas são registradas por helpers ou funções de ordem superior.
Frameworks frequentemente escondem a conexão entre a requisição e a função que usa seus dados. Modelos mais precisos reduzem os pontos cegos em aplicações que abstraem registro de rotas. O ganho depende de a estrutura do projeto corresponder aos padrões modelados; wrappers muito específicos ainda podem exigir extensões locais.
Consultas de C# reduzem falsos positivos conhecidos
A consulta de proteção contra clickjacking em C# passou a reconhecer cabeçalhos do ASP.NET Core e a diretiva frame-ancestors da Content Security Policy. A consulta de XSS deixa de considerar como destino vulnerável valores de atributos de tag helpers Razor escritos por WriteLiteral.
Esses ajustes buscam evitar alertas quando a aplicação já usa uma proteção que a consulta anterior não compreendia. Reduzir falso positivo importa porque alertas repetidamente descartados tendem a perder prioridade. Ainda assim, a presença de um cabeçalho não garante que sua política seja suficiente para todos os caminhos da aplicação.
O Ponto Nulo compara esse papel com outras camadas em SAST, scanner com LLM e revisão humana. Consultas automatizadas encontram classes conhecidas de problema em escala; revisão de arquitetura e testes continuam necessários para falhas de autorização, lógica de negócio e configuração externa.
GitHub Actions permite retirar donos da lista confiável
A consulta actions/unpinned-tag ganhou uma forma de remover proprietários do conjunto confiável. Uma entrada com prefixo !, como !github, faz a regra reportar tags não fixadas mesmo para aquele proprietário.
O controle é útil para organizações que exigem referência por hash em todas as actions. Uma tag pode ser movida para outro commit; um hash fixa o conteúdo executado pelo workflow. A exclusão explícita evita que a confiança padrão de um proprietário substitua a política interna.
Essa verificação cobre a referência declarada no workflow, não a cadeia inteira do componente. Dependências internas da action, artefatos baixados em tempo de execução e permissões do workflow ainda precisam de controles próprios. Um inventário SBOM complementa a análise ao registrar componentes distribuídos com o software.
macOS 27 perde análise rastreada de linguagens compiladas
O GitHub informou que os modos de build autobuild e manual não serão suportados para linguagens compiladas no macOS 27, independentemente da versão do Xcode. A mesma restrição vale no macOS 26 quando o Xcode 27 é selecionado.
A causa é a retirada, pela Apple, de binários multi-arquitetura x86-64/arm64 necessários à análise rastreada. O GitHub trabalha em melhorias para o modo none, mas a versão 2.27.2 orienta usar no máximo macOS 26 com Xcode 26 quando o fluxo depende de build rastreado.
Pipelines hospedados ou próprios precisam revisar a combinação de imagem, sistema e Xcode antes da atualização. Trocar apenas a versão do CodeQL não corrige a ausência do formato exigido pelo rastreamento.
CLI passa a falhar com mensagens mais claras
A linha de comando agora informa valores inválidos de qlpack: e from: em suítes como erros, em vez de encerrar com falha genérica. Inteiros fora do intervalo de 32 bits em extensões YAML são rejeitados, evitando truncamento silencioso. Mensagens no fluxo de erro receberam os prefixos ERROR: e WARNING:; SARIF e logs estruturados permanecem inalterados.
O GitHub implanta automaticamente a nova versão no code scanning do github.com. O CodeQL 2.27.2 será incluído em uma versão futura do GitHub Enterprise Server, enquanto instalações antigas podem atualizar a ferramenta manualmente. Projetos com consultas próprias de Go e pipelines em macOS precisam validar compatibilidade antes de adotar a versão fora do serviço hospedado.