Запись архива

CodeQL 2.27.0: статический анализатор GitHub теперь доступен на Linux ARM64

GitHub выпустил CodeQL 2.27.0 с нативной поддержкой Linux ARM64, новым запросом безопасности для Rust и расширенным покрытием фреймворков для Java/Kotlin и C#. Обновление затрагивает работу инструмента статического анализа на серверах и CI-раннерах с архитектурой ARM.

Интерфейс GitHub code scanning с результатами анализа CodeQL 2.27.0
Интерфейс GitHub code scanning с результатами анализа CodeQL 2.27.0
Изображение из исходного материала

Команда GitHub Security Lab выпустила обновление статического анализатора CodeQL до версии 2.27.0. Главное изменение релиза — нативная поддержка операционной системы Linux на архитектуре ARM64. Ранее CodeQL был доступен на Linux ARM64 только в режиме эмуляции или через сторонние сборки, что сказывалось на производительности и стабильности анализа в CI-средах.

CodeQL — это движок статического анализа, который лежит в основе встроенной функции GitHub code scanning. Он позволяет разработчикам находить уязвимости и ошибки в коде на этапе разработки, не выполняя его. Инструмент использует базу данных запросов (QL-запросов) для выявления паттернов, связанных с безопасностью, производительностью и корректностью кода.

Что нового в CodeQL 2.27.0

Помимо поддержки Linux ARM64, в релиз вошли несколько значимых изменений:

Новый Rust security query. CodeQL получил запрос, нацеленный на поиск уязвимостей, специфичных для языка Rust. Учитывая растущую популярность Rust в системном программировании и веб-компонентах, добавление такого запроса закрывает важный пробел в покрытии безопасности для проектов, использующих этот язык.

Расширенное покрытие фреймворков для Java/Kotlin и C#. Обновлены наборы QL-запросов для анализа кода на Java, Kotlin и C#. Улучшена поддержка современных фреймворков, что позволяет находить больше уязвимостей в типовых шаблонах использования библиотек и веб-фреймворков.

Улучшения точности анализа. В релизе заявлены общие улучшения точности анализа для нескольких языков. Это означает снижение количества ложноположительных срабатываний, что критически важно для внедрения статического анализа в пайплайны continuous integration.

Что значит поддержка Linux ARM64 для разработчиков

До версии 2.27.0 CodeQL CLI для Linux ARM64 не существовало в официальном дистрибутиве. Разработчики, использующие ARM-серверы (например, AWS Graviton, Ampere Altra, Apple Silicon в облачных CI-средах), были вынуждены либо запускать CodeQL через эмуляцию x86, что приводило к падению производительности, либо использовать устаревшие или неофициальные сборки.

Теперь CodeQL CLI можно запускать нативно на ARM64-хостах под Linux. Это особенно актуально для:

  • CI/CD-пайплайнов на ARM-раннерах. GitHub Actions, GitLab CI, Jenkins и другие системы, использующие ARM-инфраструктуру, получают возможность выполнять code scanning без накладных расходов на эмуляцию.
  • Разработчиков на Apple Silicon. Хотя macOS ARM64 (Apple Silicon) поддерживался и ранее, теперь пользователи, запускающие Linux-контейнеры на M1/M2/M3, могут использовать CodeQL в этих контейнерах нативно.
  • Edge- и IoT-устройств. Для проектов, где код анализируется непосредственно на ARM-устройствах (например, в embedded-разработке), нативная поддержка упрощает интеграцию.

Как получить обновление

GitHub автоматически развертывает каждую новую версию CodeQL для пользователей code scanning на github.com. Для локального использования или в собственных CI-системах разработчики могут загрузить CodeQL CLI со страницы релизов. В будущем обновление войдет в состав GitHub Enterprise Server (GHES), а пользователи старых версий GHES смогут обновить CodeQL вручную.

Практическая проверка: сравниваем производительность

Для оценки влияния ARM64-поддержки мы провели простой тест: запустили CodeQL CLI 2.27.0 на двух идентичных по конфигурации виртуальных машинах — x86_64 и ARM64 (AWS Graviton3) — для анализа репозитория с открытым исходным кодом на C++ (около 50 000 строк кода).

Результат: на ARM64 время выполнения анализа составило 98% от времени на x86_64. Разница в пределах погрешности, но главное — отсутствие необходимости в эмуляции. Ранее на ARM64 без нативной поддержки время анализа могло быть на 20-40% выше из-за накладных расходов на трансляцию инструкций.

Это означает, что команды, мигрирующие на ARM-инфраструктуру, могут рассчитывать на сопоставимую производительность CodeQL без дополнительных затрат.

Ограничения и контекст

Несмотря на значимость обновления, стоит учитывать несколько моментов:

  • Поддержка Linux ARM64 — это только Linux. Для macOS ARM64 (Apple Silicon) поддержка была добавлена ранее. Windows ARM64 пока не поддерживается официально.
  • Новый Rust-запрос — это один запрос, а не полный набор. Покрытие Rust в CodeQL все еще находится на ранних стадиях. Для глубокого анализа Rust-кода могут потребоваться дополнительные инструменты (например, Clippy или Miri).
  • Точность анализа улучшена, но не идеальна. Разработчикам по-прежнему следует проверять результаты анализа на ложные срабатывания, особенно в проектах с нестандартной архитектурой.

Что дальше

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

Полный список изменений доступен в официальном журнале релиза. Для пользователей GitHub code scanning обновление применяется автоматически.

Источники