GitHub выпустила CodeQL 2.26.1 — улучшен поиск уязвимостей в Go, Java, Angular и Rust

29 июля GitHub опубликовала подробности CodeQL 2.26.1, хотя сама версия датирована 15 июля 2026 года. Обновление расширяет анализ популярных библиотек и фреймворков для Go, Java/Kotlin и JavaScript/TypeScript, а проверка Rust теперь создаёт меньше ложных предупреждений. На GitHub.com новая версия разворачивается автоматически.

GitHub выпустила CodeQL
GitHub выпустила CodeQL

У CodeQL сложная задача — находить реальные пути атаки и удерживать число лишних тревог на приемлемом уровне. В версии 2.26.1 GitHub сосредоточилась именно на этом балансе: движок лучше понимает код, построенный на log/slog, Apache POI, Spring WebFlux и Angular, а одна из проверок Rust стала точнее.

Есть важная деталь с датами. Официальная публикация GitHub появилась 29 июля 2026 года, тогда как полный changelog CodeQL 2.26.1 указывает дату релиза 15 июля. Поэтому речь идёт о свежем подробном анонсе уже выпущенной версии.

CodeQL 2.26.1 расширяет понимание популярных фреймворков

CodeQL анализирует программу как набор данных: сначала создаёт базу, описывающую кодовую базу, затем запускает запросы, которые ищут опасные потоки данных и другие признаки уязвимостей. Чем точнее движок знает поведение конкретной библиотеки, тем выше шанс заметить реальную проблему в приложении.

В CodeQL 2.26.1 обновились модели сразу для нескольких экосистем:

Язык и технологияЧто изменилосьПрактический эффект
Go и log/slogДобавлена более полная модель методов slog.Logger, а также With, WithGroup, Attr и ValueПроверки go/log-injection и go/clear-text-logging охватывают больше сценариев структурированного журналирования
Java/Kotlin и Apache POIПоявились модели источников, приёмников и потоков данных для org.apache.poiCodeQL лучше отслеживает данные при обработке документов Excel и других форматов Microsoft Office
Java и Spring WebFluxПервый аргумент WebClient.UriSpec.uri теперь считается потенциальным приёмником SSRFСканирование может показать дополнительные обоснованные предупреждения о подделке серверных запросов
AngularОбработчики @HostListener('window:message', ...) и @HostListener('document:message', ...) распознаются как точки получения внешних данныхПроверка js/missing-origin-check теперь видит больше обработчиков postMessage, где разработчик мог забыть проверить источник сообщения

Последнее изменение особенно наглядно. Веб-приложения используют postMessage для обмена данными между окнами, вкладками и встроенными фреймами. Когда обработчик принимает сообщение без проверки origin, вредоносная страница может попытаться передать ему поддельные данные. Теперь CodeQL распознаёт и Angular-обработчики, оформленные через @HostListener.

Проверка Java учитывает валидацию через Pattern

В проектах на Java аннотация @javax.validation.constraints.Pattern часто ограничивает допустимый формат входной строки. Раньше запрос java/path-injection мог продолжать считать такие данные опасными даже после проверки по регулярному выражению.

CodeQL 2.26.1 распознаёт эту аннотацию как средство очистки данных. Для команд это выражается в более коротком списке предупреждений: разработчикам реже придётся вручную доказывать, что значение уже прошло проверку перед использованием в пути к файлу.

Одновременно модель Spring WebFlux стала строже. Вызов WebClient.UriSpec.uri теперь входит в число мест, куда могут попасть данные, способные повлиять на адрес исходящего запроса. После обновления часть Java-проектов может увидеть новые оповещения java/ssrf. GitHub прямо предупреждает о таком эффекте, поскольку новые срабатывания должны отражать ранее пропущенные сценарии.

Rust-анализ реже принимает вычисляемые значения за жёстко заданные ключи

Запрос rust/hard-coded-cryptographic-value ищет криптографические значения, записанные прямо в исходном коде. Такие ключи, пароли или другие секреты легко извлечь из репозитория и собранной программы.

Проблема возникала в выражениях, где постоянная часть смешивалась с переменными данными. Например, программа могла увеличивать nonce или добавлять изменяемый фрагмент к постоянному префиксу, а анализатор воспринимал итог как полностью жёстко заданное значение.

В CodeQL 2.26.1 арифметические и побитовые операции, а также добавление строк учитываются как границы распространения такого признака. Результат — меньше ложных тревог в Rust-коде, который формирует криптографические параметры во время выполнения.

Набор CodeQL охватывает 170 категорий CWE

Стандартный набор CodeQL 2.26.1 запускает 497 запросов безопасности и охватывает 170 категорий CWE — общепринятого каталога типов программных ошибок. Расширенный набор добавляет ещё 131 запрос и охватывает 32 дополнительные категории CWE.

По сравнению с CodeQL 2.26.0 количество запросов осталось прежним. Версия 2.26.1 улучшает модели и точность уже существующих проверок. Пользовательских изменений в командной строке CodeQL CLI в этом выпуске тоже нет.

Такой характер релиза хорошо объясняет его практический смысл. Команды получают более точные результаты сканирования без перестройки рабочих процессов и без изменения команд автоматизации.

GitHub.com получает CodeQL 2.26.1 автоматически

GitHub автоматически разворачивает новые версии CodeQL для пользователей code scanning на GitHub.com. Репозитории с включённым стандартным сканированием начнут использовать обновлённые модели без ручной установки отдельного пакета.

Для GitHub Enterprise Server ситуация зависит от версии платформы. GitHub планирует включить CodeQL 2.26.1 в один из будущих выпусков GHES, а владельцы старых установок могут обновить CodeQL вручную.

Есть отдельный ориентир для авторов моделей C/C++. Описания потоков данных в формате models-as-data теперь используют полные имена полей, например MyNamespace::MyStruct::myField. Короткие имена пока поддерживаются, однако GitHub планирует убрать их поддержку через 12 месяцев. Пользовательские модели стоит перевести на полные имена заранее.

CodeQL 2.26.1 снижает шум в ежедневном сканировании

Самый заметный эффект версии проявится в проектах, где уже используются Go slog, Spring WebFlux, Angular postMessage, Apache POI или криптографический код на Rust. Одни репозитории получат новые обоснованные предупреждения, другие увидят сокращение ложных срабатываний.

CodeQL 2.26.1 сохраняет прежний набор из 497 стандартных запросов, но точнее прослеживает реальные потоки данных внутри популярных библиотек. Для системы статического анализа такая доработка напрямую влияет на доверие разработчиков к результатам: каждое предупреждение должно заслуживать времени на проверку.

При использовании материалов сайта необходимо указывать ссылку на TGLand.ru. Если вы копируете фрагменты текста в интернете, прямая гиперссылка, доступная для индексации поисковыми системами, должна быть размещена в начале материала.

Вам также может понравиться