Примечание.
Администратор сайта должен включить code scanning перед использованием этой функции. Дополнительные сведения см. в разделе Настройка сканирования кода для устройства.
Возможно, вы не сможете включить или отключить code scanning, если владелец предприятия установил политику GitHub Advanced 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 Server 3.16, действие CodeQL использует CodeQL CLI версии данных 2.20.3 по умолчанию. Мы рекомендуем использовать такую же версию CodeQL CLI, если вы выполняете анализ во внешней системе 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
Примечание.
- Используется
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 публикуется в GitHub Container registry, все транзитивные зависимости, необходимые запросам и кэш компиляции, включаются в пакет. Это повышает производительность и гарантирует, что выполнение запросов в пакете дает одинаковые результаты при каждом обновлении до новой версии пакета или CLI.
-
Пакеты запросов CodeQL можно скачать из нескольких реестров контейнеров GitHub . Дополнительные сведения см. в разделе Параметры настройки рабочих процессов для сканирования кода.
Дополнительные сведения см. в разделе Настройка анализа с помощью пакетов CodeQL.