Общие сведения о результатах CodeQL

Завершено

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

Просмотр результатов сканирования кода из анализа CodeQL

Результаты интерпретированного запроса автоматически отображаются в исходном коде в расширении CodeQL для Visual Studio Code. Выходные результаты, создаваемые CodeQL CLI, могут быть представлены в различных форматах для использования с различными инструментами.

Вы можете управлять отображением результатов анализа в исходном коде, изменив инструкцию select запроса. Вы можете сделать результаты понятными и простыми для других пользователей при разработке запроса, чтобы их было легче понять. При написании собственных запросов в консоли запросов или в расширении CodeQL для Visual Studio Code нет ограничений на то, что можно выбрать.

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

Реагируйте на оповещения по сканированию кода

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

Анализ CodeQL по умолчанию в GitHub может содержать больше свойств для уведомлений, чем результаты из инструментов, не принадлежащих Microsoft, или из пользовательских запросов. В рабочем процессе по умолчанию сканирование кода периодически выполняется в ветви по умолчанию и при pull-запросах.

Каждое оповещение содержит следующие сведения:

  • Проблема с кодом и названием средства, которое его идентифицировало.
  • Строка кода, активировающая оповещение.
  • Свойства оповещения, такие как серьезность.
  • Уровень серьезности безопасности.
  • Момент, когда возникла проблема.
  • Характер проблемы.

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

снимок экрана, на котором показаны оповещения анализа CodeQL.

Оповещения о потоках данных

Анализ потока данных находит потенциальные проблемы безопасности в коде, в том числе:

  • Использование данных таким образом, чтобы поставить безопасность под угрозу.
  • Передача опасных аргументов в функции.
  • Утечка конфиденциальной информации.

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

Уровни серьезности

Все результаты сканирования кода, которые имеют серьезность Error по умолчанию вызывают сбой проверки. Уровни серьезности оповещений Error, Warningи Note. Вы можете указать уровень серьезности, при котором pull-реквесты, которые вызывают предупреждения проверки кода, должны завершаться с ошибкой.

Уровни серьезности безопасности

Запросы безопасности, генерируемые в процессе сканирования кода, показывают уровни серьезности безопасности для оповещений. Уровни серьезности безопасности Critical, High, Mediumи Low. GitHub использует данные системы оценки распространенных уязвимостей (CVSS) для вычисления серьезности безопасности оповещения.

Все результаты сканирования кода, которые имеют серьезность безопасности Critical или High вызывают сбой проверки по умолчанию. Можно указать, какой уровень серьезности безопасности должен вызвать сбой проверки результатов сканирования кода.

Закройте оповещение сканирования кода

Вы можете закрыть оповещение двумя способами:

  • Исправлена проблема в коде.
  • Закройте или удалите оповещение.

Отклонить уведомление сканирования кода

Отключение оповещения — это способ закрытия оповещения, которое, по вашему мнению, не требует исправления. Например, вы можете закрыть оповещение об ошибке в коде, используемом только для тестирования. Вы также можете закрыть оповещение, если усилия, необходимые для устранения ошибки, больше, чем потенциальное преимущество улучшения кода.

Оповещения можно отклонять из аннотаций сканирования кода в самом коде или из сводного списка на вкладке Безопасность. Чтобы отклонить оповещение из списка, выберите меню "Отклонить оповещение", укажите причину отклонения и нажмите кнопку Отклонить оповещение.

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

При закрытии оповещения:

  • Оповещение удалено во всех ветвях.
  • оно удаляется из текущих оповещений проекта;
  • Оповещение перемещается в список "Закрытый " в сводке оповещений. При необходимости его можно повторно открыть.
  • Причина, по которой вы закрыли оповещение, записывается.
  • При следующем запуске сканирования кода тот же код не создаст оповещение.

Удаление оповещений сканирования кода

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

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

Оповещения можно удалить из сводного списка на вкладке Безопасность.

При удалении оповещения:

  • Оповещение удаляется во всех ветвях.
  • оно удаляется из текущих оповещений проекта;
  • Оповещение не добавляется в закрытый список в сводке оповещений.
  • Оповещение снова отображается в результатах анализа, если код, созданный оповещение, остается неизменным, а средство сканирования кода выполняется снова без каких-либо изменений конфигурации.