CodeQL — это система анализа кода, разработанная GitHub для автоматизации проверок безопасности. Код можно проанализировать, используя CodeQL, и отобразить результаты в виде оповещений code scanning.
Существует три основных способа использования CodeQL анализа для code scanning:
-
Используйте настройки по умолчанию для быстрой настройки CodeQL анализа на code scanning вашем репозитории. Настройка по умолчанию автоматически выбирает языки для анализа, набора запросов для выполнения и событий, которые активируют сканирование. Если вы предпочитаете, можно вручную выбрать набор запросов для выполнения и анализа языков. После включения CodeQLбудет GitHub Actions выполнен запуск рабочих процессов для сканирования кода. Дополнительные сведения см. в разделе Настройка настройки по умолчанию для сканирования кода.
-
Используйте расширенную настройки, чтобы добавить CodeQL рабочий процесс в репозиторий. Это генерирует настраиваемый файл рабочего процесса, который использует github/codeql-action для запуска CodeQL CLI. Дополнительные сведения см. в разделе Настройка расширенной настройки для сканирования кода.
-
Запустите CodeQL CLI его напрямую во внешней CI-системе и загрузите результаты в GitHub. Дополнительные сведения см. в разделе Использование сканирования кода с существующей системой CI.
Для информации о code scanning оповещениях см. Оповещения о проверке кода.
Около CodeQL
CodeQL — это язык программирования и связанные с ним инструменты, которые воспринимают код как данные. Он был создан явным образом, чтобы упростить анализ кода и найти потенциальные уязвимости в коде с большей уверенностью, чем традиционные статические анализаторы.
- Вы создаёте CodeQL базу данных, чтобы представить вашу кодовую базу.
- Затем вы запускаете CodeQL запросы к этой базе данных, чтобы выявить проблемы в коде.
- Результаты запроса отображаются в виде code scanning оповещений в GitHub , когда вы используете CodeQL с code scanning.
CodeQL поддерживает как скомпилированные, так и интерпретируемые языки, а также может находить уязвимости и ошибки в коде, написанном на поддерживаемых языках.
CodeQL Поддерживает следующие языки:
- C/C++
- C#
- Go
- Java и Kotlin
- JavaScript/TypeScript
- Python
- Ruby
- Rust
- Swift * GitHub Actions рабочих процессов
Примечание.
- Используется
java-kotlinдля анализа кода, написанного на Java, Kotlin или обоих. - Используется
javascript-typescriptдля анализа кода, написанного на JavaScript, TypeScript или обоих.
Дополнительные сведения см. в документации на веб-сайте CodeQL: поддерживаемые языки и платформы.
Внимание
CodeQLне поддерживает языки, не перечисленные выше. Это включает в себя, но не ограничивается, PHP, Scala и т. д. Попытка использовать CodeQL с неподдерживаемыми языками может привести к отсутствию оповещений и неполному анализу.
Моделирование пользовательских или нишевых платформ
GitHub Эксперты, исследователи безопасности и участники сообщества пишут библиотеки для моделирования потока данных в популярных фреймворках и библиотеках. Если вы используете пользовательские зависимости, которые не моделируемы, то можно использовать CodeQL расширение для Visual Studio Code создания моделей для этих зависимостей и расширения анализа. Дополнительные сведения см. в разделе Использование редактора моделей CodeQL.
запросы CodeQL
GitHub Эксперты, исследователи безопасности и участники сообщества пишут и поддерживают стандартные CodeQL запросы, используемые для code scanning. Запросы регулярно обновляются для улучшения анализа и снижения количества ложноположительных результатов.
Написание собственных запросов
Запросы открытый код, поэтому вы можете просматривать и вносить вклад в запросы в репозитории github/codeql. Для получения дополнительной информации смотрите раздел «О CodeQL запросах » в CodeQL документации.
Выполнение дополнительных запросов
Если вы сканируете код с помощью расширенной установки или внешней системы CI, вы можете выполнять дополнительные запросы в рамках анализа.
Эти запросы должны принадлежать опубликованному CodeQL пакету запросов или пакету CodeQL в репозитории.
-
Когда CodeQL пакет запросов публикуется в GitHubContainer registry, все транзитивные зависимости, необходимые для запросов и компиляционного кэша, включаются в пакет. Это повышает производительность и гарантирует, что выполнение запросов в пакете дает одинаковые результаты при каждом обновлении до новой версии пакета или CLI.
-
CodeQL Пакеты запросов можно скачивать из нескольких GitHub реестров контейнеров. Дополнительные сведения см. в разделе Параметры настройки рабочих процессов для сканирования кода.
Дополнительные сведения см. в разделе Настройка анализа с помощью пакетов CodeQL.