Skip to main content

О проверке кода с помощью CodeQL

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

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

Code scanning доступен для репозиториев, принадлежащих организации, в GitHub Enterprise Server. Для этой функции требуется лицензия на GitHub Advanced Security. Дополнительные сведения см. в разделе Сведения о GitHub Advanced Security.

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

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

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 Server 3.12 действие CodeQL по умолчанию использует CodeQL CLI версии 2.15.5. Мы рекомендуем использовать такую же версию CodeQL CLI, если вы выполняете анализ во внешней системе CI.

Сведения о оповещениях code scanning см. в разделе "О предупреждениях о сканировании кода".

Сведения о CodeQL

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

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

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

  • C/C++
  • C#
  • Go
  • Java и Kotlin
  • JavaScript/TypeScript
  • Python
  • Ruby
  • Swift

Примечания:

  • Используйте java-kotlin для анализа кода, написанного на Java, Kotlin или обоих.
  • Используйте javascript-typescript для анализа кода, написанного в JavaScript, TypeScript или обоих.

Дополнительные сведения см. в документации на веб-сайте CodeQL: «Поддерживаемые языки и платформы».

Сведения о запросах CodeQL

Эксперты по GitHub, исследователи в области безопасности и участники сообщества пишут и поддерживают запросы по умолчанию CodeQL, используемые для code scanning. Запросы регулярно обновляются для улучшения анализа и уменьшения результатов ложноположительных результатов. Дополнительные сведения о запросах, доступных в пакетах по умолчанию и расширенных пакетах, см. в статье "Запросы, включенные в наборы запросов по умолчанию и расширенному обеспечению безопасности".

Написание собственных запросов

Запросы открытый код, поэтому вы можете просматривать и вносить вклад в запросы в репозитории github/codeql. Дополнительные сведения см. в разделе Сведения о CodeQL queries в документации CodeQL.

Выполнение дополнительных запросов

Если вы сканируете код с помощью расширенной установки или внешней системы CI, вы можете выполнять дополнительные запросы в рамках анализа.

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

  • Когда пакет запросов CodeQL публикуется в GitHub Container registry, все транзитивные зависимости, необходимые запросам и кэш компиляции, включаются в пакет. Это повышает производительность и гарантирует, что выполнение запросов в пакете дает одинаковые результаты при каждом обновлении до новой версии пакета или CLI.

  • Пакеты запросов CodeQL можно скачать из нескольких реестров контейнеров GitHub . Дополнительные сведения см. в разделе Настройка расширенной настройки для сканирования кода.

Дополнительные сведения см. в разделе Настройка анализа с помощью пакетов CodeQL.