
Команда 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 обновление применяется автоматически.
