Skip to main content

О предупреждениях о сканировании кода

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

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

Пользователи с доступом на запись

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

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

О предупреждениях от code scanning

Можно настроить code scanning для проверки кода в репозитории с помощью анализа данных по умолчанию variables.product.prodname_codeql %} , анализа стороннего производителя или нескольких типов анализа. По завершении анализа полученные предупреждения отображаются рядом друг с другом в представлении безопасности репозитория. Результаты из сторонних инструментов или пользовательских запросов могут содержать не все свойства, которые отображаются для предупреждений, обнаруженных в ходе анализа CodeQL по умолчанию в GitHub. Дополнительные сведения см. в разделе [AUTOTITLE и Настройка настройки по умолчанию для сканирования кода](/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning).

По умолчанию code scanning периодически анализирует ваш код в ветке по умолчанию и во время запросов на вытягивание. Сведения об управлении оповещениями в запросе на вытягивание см. в разделе Рассмотрение оповещений проверки кода в запросах на вытягивание.

Для автоматического создания исправлений для оповещений code scanning можно использовать GitHub Copilot Автофикс, включая оповещения CodeQL. Дополнительные сведения см. в разделе Разрешение оповещений сканирования кода.

С помощью лицензии GitHub Copilot Энтерпрайз вы также можете попросить GitHub Copilot Чат для лучшего понимания оповещений code scanning в репозиториях в вашей организации. Дополнительные сведения см. в разделе Вопросы по GitHub Copilot в GitHub.

Для оповещений code scanning от анализа CodeQL можно использовать обзор безопасности, чтобы узнать, как CodeQL выполняется в запросах на вытягивание в репозиториях в организации, а также определить репозитории, в которых может потребоваться выполнить действия. Дополнительные сведения см. в разделе Метрики оповещений о pull request в CodeQL.

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

О деталях предупреждения

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

Состояние и сведения на странице оповещений отражают состояние оповещения только в ветви репозитория по умолчанию, даже если это оповещение существует в других ветвях. Состояние оповещения в ветвях, не являющихся ветвью по умолчанию, отображается в разделе Затронутые ветви в правой части страницы оповещений. Если оповещение не существует в ветви по умолчанию, его состояние оповещения отображается как "в запросе на вытягивание" или "в ветки" и выделяется серым цветом. В разделе "Разработка " показаны связанные ветви и запросы на вытягивание, которые исправят оповещение.

Снимок экрана: оповещение code scanning содержит заголовок оповещения, соответствующие строки кода слева, метаданные справа.

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

Снимок экрана: раздел "Разработка" оповещения code scanning содержит заголовок запроса на вытягивание, который может исправить оповещение.

Если настроить code scanning с помощью CodeQL, в коде также можно найти проблемы с потоком данных. В ходе анализа потока данных обнаруживаются потенциальные проблемы безопасности в коде, такие как небезопасное использование данных, передача опасных аргументов функциям и утечка конфиденциальной информации.

Когда code scanning сообщает о предупреждениях потока данных, GitHub показывает, как данные перемещаются по коду. Code scanning позволяет определить области кода, которые утечка конфиденциальной информации, и это может быть точкой входа для атак злоумышленников.

Сведения об оповещениях из нескольких конфигураций

Вы можете выполнять несколько конфигураций анализа кода в репозитории, используя различные средства и предназначенные для разных языков или областей кода. Каждая конфигурация code scanning создает уникальный набор оповещений. Например, оповещение, созданное с помощью анализа данных по умолчанию CodeQL с GitHub Actions происходит из конфигурации, созданной внешним образом и отправленной через API code scanning .

При использовании нескольких конфигураций для анализа файла все проблемы, обнаруженные тем же запросом, передаются в виде оповещений, создаваемых несколькими конфигурациями. Если оповещение существует в нескольких конфигурациях, число конфигураций отображается рядом с именем ветви в разделе "Затронутые ветви" в правой части страницы оповещения. Чтобы просмотреть конфигурации для оповещения, в разделе "Затронутые ветви" щелкните ветвь. Модал "Конфигурации анализа" отображается с именами каждой конфигурации, создающей оповещение для этой ветви. Под каждой конфигурацией можно увидеть, когда оповещение этой конфигурации было обновлено в последний раз.

Оповещение может отображать разные состояния из разных конфигураций. Чтобы обновить состояния оповещений, повторно выполните каждую устаревшую конфигурацию. Кроме того, можно удалить устаревшие конфигурации из ветви, чтобы удалить устаревшие оповещения. Дополнительные сведения об удалении устаревших конфигураций и оповещений см. в разделе Разрешение оповещений сканирования кода.

О метках для предупреждений, которых нет в коде приложения

GitHub назначает метку категории оповещениям, которые не найдены в коде приложения. Метка относится к расположению предупреждения.

  • Сгенерировано: код, сгенерированный в процессе сборки.
  • Тестирование: тестовый код.
  • Библиотека: библиотека или сторонний код.
  • Документация: документация.

Code scanning классифицирует файлы по пути к файлу. Исходные файлы невозможно классифицировать вручную.

В этом примере оповещение помечается как в коде test в списке оповещений code scanning.

Снимок экрана: оповещение в списке code scanning . Справа от заголовка выделена метка Test с темным оранжевым контуром.

Щелкнув подробные сведения об оповещении, вы увидите, что путь к файлу помечается как тестовый код.

Снимок экрана: сведения о оповещении. Путь к файлу и метка Test выделены темно-оранжевым контуром.

Примечание.

Экспериментальные оповещения для code scanning были доступны в выпуске public preview для JavaScript с использованием экспериментальной технологии в действии CodeQL . Эта функция была retired. Дополнительные сведения см. в статье CodeQL code scanning нерекомендуемые оповещения на основе машинного обучения.

Сведения о уровнях серьезности оповещений и уровнях серьезности безопасности

Уровень серьезности для оповещения code scanning указывает, сколько рисков проблема добавляется в базу кода.

  •         **Серьезность.** Все оповещения code scanning имеют уровень `Error`, `Warning`или `Note`.
    
  •         **Серьезность безопасности.** Каждое оповещение системы безопасности, найденное с помощью CodeQL, также имеет уровень `Critical`серьезности безопасности , `High``Medium`или `Low`.
    

Если оповещение имеет уровень серьезности безопасности, code scanning отображает и использует этот уровень в предпочтениях severity. Уровни серьезности безопасности соответствуют стандартной стандартной системе оценки уязвимостей (CVSS), которая также используется для рекомендаций в GitHub Advisory Database. Дополнительные сведения см. в разделе CVSS: качественный масштаб оценки серьезности.

Вычисление уровней серьезности безопасности

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

  1. Выполните поиск всех CVEs, назначенных одному или нескольким тегам CWE, связанным с новым запросом безопасности.
  2. Вычислите 75-й процентиль оценки CVSS для этих CVEs.
  3. Определите этот показатель как серьезность безопасности для запроса.
  4. При отображении оповещений, найденных запросом, преобразуйте числовые оценки Criticalв , High``Mediumили Low с помощью определений CVSS.

Дополнительные сведения см. в разделе CodeQL охват CWE на сайте документации CodeQL документации.

О оповещениях в pull requests

Code scanning оповещения могут появляться в pull-запросах как результаты проверки и аннотации. Это происходит в репозиториях, где code scanning либо:

  • Настроена как проверка pull request (по умолчанию ограничена pull request, которые нацелены на стандартную ветку)
  • Настроена на сканирование при каждом отправке кода (результаты отображаются с любыми открытыми pull requests)

Вы увидите оповещение в pull-запросе только если все строки кода, идентифицированные в оповещении, существуют в дифференциаце pull-запроса.

В зависимости от правил защиты ветвей, проверка «Code scanning результаты» может быть обязательной проверкой, которая предотвращает слияние pull requests до её прохождения.