Раздел Безопасность → Результаты — это единый список всех обнаруженных системой Безопасности проблем, независимо от того, как они были найдены. Все источники записывают данные в один и тот же хранилище, поэтому одна и та же проблема, выявленная двумя источниками, отображается как один результат.
Результаты, вхождения и источники
- Результат — это результат — это отдельная проблема в одном репозитории: уязвимый пакет, утечка учетных данных или опасный шаблон в коде.
- Его вхождения указывают на место его нахождения: путь к манифесту и зависимостям, имя файла и номер строки, либо коммит и путь, где обнаружена секретная информация. Две установленные версии одного пакета считаются двумя вхождениями.
- Его источники указывают, кто, когда и с какой полнотой обнаружил проблему: OSV-Scanner, сканер зависимостей GitHub, сканер кода GitHub, сканер секретов GitHub, сканер секретов Coroid, правила проверки кода Coroid, ваша собственная команда сканирования, функция Рецензирование Coroid и аудит безопасности.
Список сгруппирован по проектам. Его можно отфильтровать по проекту, типу, уровню серьезности, состоянию, источнику, способу раскрытия и наличию доказательств. Результаты по зависимостям группируются по пакетам, причем если известно обновление, исправляющее проблему, оно указывается рядом.
Уровень серьезности и сроки устранения
Каждый результат должен быть устранен в установленный срок после его открытия:
| Уровень серьезности | Срок устранения |
|---|---|
| Критический | 2 дня |
| Высокий | 7 дней |
| Средний | 30 дней |
| Низкий | 90 дней |
В разделе Обзор отображаются результаты, срок устранения которых уже истек, и те, что должны быть устранены в течение трех дней.
Состояния
| Состояние | Значение |
|---|---|
| Открытый | Проблема присутствует в ветке по умолчанию. |
| Исправлено в коде | Все вхождения проблемы в ветке по умолчанию отсутствуют согласно результатам полного сканирования. |
| Ротация подтверждена | Утечка учетных данных, чья ротация или отзыв были подтверждены. Подробнее см. в разделе Утечка секретов. |
| Больше не актуально | Все рекомендации, связанные с данным результатом, были отозваны. Это не означает, что проблема устранена. |
| На ветке pull request | Встречается только на ветке pull request. Она относится к pull request, и следующее сканирование ветки по умолчанию зафиксирует её, если изменения будут объединены. |
Нет автоматического закрытия без подтверждения
Вхождение исчезает только тогда, когда полное сканирование текущей версии кода подтверждает его отсутствие. Частичное сканирование, неудачное сканирование, сканирование без соответствующих прав или сканирование коммита, который уже был заменен в ветке, никак не влияют на статус. В разделе «Охват» показаны все случаи:
- Частичный: некоторые файлы не удалось прочитать полностью; информация об этом указана в разделе «Охват».
- Устаревший: данные не соответствуют текущей версии ветки по умолчанию или устарели более чем на один день.
- Статус неизвестен с …: источник потерял права доступа или не смог прочитать данные. Результаты, которые обнаруживались только им, получают пометку «статус неизвестен с» указанного времени.
- Задержка в получении рекомендаций: пока она длится, ни один проект не имеет чистого охвата.
Результаты отображаются в порядке, в котором Coroid фиксировал версии веток, а не по датам коммитов. Если кто-то выполнит принудительную отправку ветки к более старому коммиту, результат сканирования этого коммита будет считаться самым новым, а поздний результат для уже покинутой ветки никак не повлияет на статус.
Исправлено в коде и исправлено в рабочей среде
Объединение исправления в код не означает, что оно уже применено на практике. Система Безопасности отслеживает эти два состояния отдельно:
- Исправлено в коде: в ветке по умолчанию проблема больше не встречается.
- По окружениям: для каждой среды, сообщающей о запущенных версиях, Coroid сканирует именно эту ревизию. Результат считается исправленным только после завершения сканирования и отсутствия обнаруженных проблем. Откат или возврат к старой версии, восстанавливающий проблему, снова открывает результат для данной среды.
Для результата Среды показывают для каждой среды статус «Запущено в продакшене», «Только в коде» или «Сведения о деплое неизвестны». Сведения о деплое неизвестны означают, что Coroid не зафиксировал ревизию для данной среды или еще не завершило сканирование. Для проекта без отслеживания деплоев указывается: «Только состояние репозитория — деплойные ревизии не отслеживаются». Чтобы настроить отслеживание деплоев, см. раздел События деплоя.
Обзор → Раздел «Ход исправлений» отображает информацию о проблемах, которые всё ещё работают в продакшене, о проблемах, уже исправленных в коде, но ещё не развернутых, о проблемах, статус которых пока неизвестен, о запросах на исправления, ожидающих рассмотрения, а также о среднем времени от обнаружения проблемы до объединения исправления и до его развертывания.
Исключения
Исключение скрывает результат из открытого списка, не удаляя его. Владельцы и администраторы могут добавить исключение для конкретного результата:
| Тип | Необходимые действия |
|---|---|
| Принять риск | Указывается причина, максимальный уровень серьезности, который допускается, и дата истечения срока действия исключения в будущем. |
| Не является проблемой (ошибочное срабатывание) | Указывается причина и максимальный уровень серьезности, который допускается. Дата истечения срока действия необязательна. |
Результат снова появится в списке, если срок действия исключения истечет, если кто-то отменит его или если уровень серьезности результата превысит допустимый для данного исключения. Повышение уровня серьезности приводит к безвозвратному аннулированию исключения. Наблюдения, скрытые исключением, сохраняются; для них указывается название. Каждое исключение фиксируется в журнале аудита организации.
Случай с утечкой учетных данных отличается: он закрывается только после подтверждения того, что данные были заменены или аннулированы. См. Утечка секретов.
Действия с результатом
На основе результата владельцы и администраторы могут:
- Исправить: открыть для него задачу по исправлению. Для результата, связанного с публичной зависимостью, — создать запрос на исправление или задачу по устранению уязвимости, если исправленная версия отсутствует. Для результата, связанного с кодом, — создать задачу по исправлению. Для случая утечки секретов — открыть чек-лист по замене данных. См. Запросы на исправления.
- Принять риск или отметить его как Не является проблемой.
- Отслеживать открытую задачу по исправлению и pull request.
Хранение данных
Результаты, их вхождения и связанные с ними данные сохраняются до тех пор, пока репозиторий подключен. Если репозиторий отключен, данные удаляются через 30 дней, но восстанавливаются при повторном подключении в этот период. Общие данные рекомендаций не являются вашими и сохраняются. Записи аудита по исключениям, подтверждениям и раскрытиям информации хранятся в соответствии с политикой хранения журнала аудита.