Skip to main content

Сканирование кода с помощью CodeQL

Вы можете использовать CodeQL их для выявления уязвимостей и ошибок в вашем коде. Результаты отображаются в виде code scanning оповещений в GitHub.

Кто может использовать эту функцию?

Code scanning доступен для следующих типов репозитория:

  • Общедоступные репозитории для GitHub.com
  • Репозитории, принадлежащие организации, на GitHub Team, GitHub Enterprise Cloud или GitHub Enterprise Server, с включённым GitHub Code Security .

Примечание.

Администратор сайта должен включить code scanning перед использованием этой функции. Дополнительные сведения см. в разделе Настройка сканирования кода для вашего устройства.

Возможно, вы не сможете включить или отключить code scanning, если владелец предприятия установил политику GitHub Code Security на уровне предприятия. Дополнительные сведения см. в разделе Применение политик безопасности кода и анализа для вашего предприятия.

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.

Примечание.

На GitHub Enterprise Server3.17, действие CodeQL по умолчанию использует CodeQL CLI версию 2.20.7 . Мы рекомендуем использовать ту же версию, что CodeQL CLI и при исполнении анализа во внешней CI-системе.

Для информации о code scanning оповещениях см. Оповещения о проверке кода.

Около CodeQL

CodeQL — это язык программирования и связанные с ним инструменты, которые воспринимают код как данные. Он был создан явным образом, чтобы упростить анализ кода и найти потенциальные уязвимости в коде с большей уверенностью, чем традиционные статические анализаторы.

  1. Вы создаёте CodeQL базу данных, чтобы представить вашу кодовую базу.
  2. Затем вы запускаете CodeQL запросы к этой базе данных, чтобы выявить проблемы в коде.
  3. Результаты запроса отображаются в виде code scanning оповещений в GitHub , когда вы используете CodeQL с code scanning.

CodeQL поддерживает как скомпилированные, так и интерпретируемые языки, а также может находить уязвимости и ошибки в коде, написанном на поддерживаемых языках.

CodeQL Поддерживает следующие языки:

  • C/C++
  • C#
  • Go
  • Java и Kotlin
  • JavaScript/TypeScript
  • Python
  • Ruby
  • Rust (общедоступная предварительная версия)
  • Swift

Примечание.

  • Используется 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.