Публикация сведений об уязвимости до появления исправления приносит больше пользы злоумышленникам, чем защитникам. Система безопасности хранит сведения о каждой непубличной находке внутри Coroid, и только лицо с соответствующими полномочиями решает, когда их раскрыть.
Публичные и непубличные
Каждая находка относится к одному из двух типов:
- Публичные: уязвимость уже опубликована, например зависимость с опубликованным рекомендацией по устранению. В запросах на исправление могут указываться эти рекомендации.
- Непубличные: все остальные случаи, например проблема, выявленная в ходе аудита, при рецензировании в Coroid или по результатам проверки правил кода в вашем собственном коде, либо утечка учетных данных.
Находка считается публичной только тогда, когда она связана с опубликованной рекомендацией, которая не была отозвана, или когда владелец или администратор опубликует ее закрытое исправление (ниже).
Шлюз публикации
Все, что Coroid публикует за пределами Coroid, сначала проходит через шлюз публикации: тела для рецензирования, комментарии и краткие выводы к рецензированию, результаты проверок и их аннотации, заголовки и описания pull request, сообщения о коммитах, комментарии к задачам, сообщения в Slack и электронной почте, а также экспортные файлы. Шлюз проверяет наличие в тексте любых проблем безопасности, подтвержденных или нет.
В публичном репозитории или в репозитории, видимость которого Coroid не может подтвердить, непубличная проблема заменяется нейтральной строкой со ссылкой:
Coroid обнаружила возможную проблему безопасности; подробности — в Coroid.
В частном репозитории, текст публикуется. Проблема, которая еще не подтверждена, помечается как «Неподтвержденное заявление о проблеме безопасности: Coroid еще не проверила его».
Учетные данные всегда скрываются повсюду. См. Утечка секретов.
Видимость репозитория
Coroid считает репозиторий частным только если имеется четкая актуальная информация о его принадлежности к частным репозиториям, полученная из событий GitHub или напрямую от GitHub, не старше часа. Внутренний репозиторий считается публичным. Если Coroid не может определить видимость, репозиторий считается публичным.
Уведомления и экспорт
- Колокольчик: для непубличной находки колокольчик указывает только уровень серьезности и проект, например «Требуется внимание к критической находке», со ссылкой на находку в разделе Безопасность.
- Slack и электронная почта содержат только строку о необходимости внимания к находке и ссылку. В них никогда не указываются сведения об уязвимости или коде.
- Экспорт: в экспорте CycloneDX перечисляются уязвимости только для публичных находок. В пакете параметров организации находки вообще не включаются.
Исправление в публичном репозитории
В частном репозитории исправление для непубличной находки — это обычный запрос на исправление в pull request. Его сообщения о коммитах и описание описывают само исправление, а не атаку.
В публичном репозитории или в репозитории, видимость которого Coroid не может подтвердить, публичный pull request, ветка или коммит могут раскрыть проблему до ее устранения. Поэтому Coroid вообще не commits такое исправление туда. Задача по исправлению прерывается с указанием причины без деталей о находке, а подготовленные изменения сохраняются как закрытое исправление.
Закрытые исправления
Находка с закрытым исправлением отображается в разделе Закрытые исправления. Ее видят только владельцы и администраторы.
- Скачать исправление сохраняет подготовленные изменения как
.patchфайл для самостоятельного просмотра или применения. - Опубликовать фиксирует, что находка теперь раскрыта, и создает задачу для применения подготовленных изменений без изменений и открытия соответствующего pull request. Опубликуйте исправление и информацию о проблеме, когда будете готовы сделать их публичными, например после достижения согласованной даты релиза. Исправление, слишком большое для публикации из Coroid, все равно можно скачать и применить вручную.
- Отменить удаляет подготовленные изменения.
Действия по публикации и отмене фиксируются в журнале аудита организации, и оба действия удаляют подготовленные изменения из Coroid.
Закрытое исправление, которое никто не опубликует или не отменит, хранится ограниченное время. Через 180 дней владельцам и администраторам напоминают об этом. Через 365 дней его удаляют и сообщают им об этом.
Запланировано
- Контакты службы безопасности по проектам, которые могут рецензировать и публиковать закрытые исправления наравне с владельцами и администраторами.
- Частные форки GitHub: подготовка исправления в частном форке рекомендации по безопасности репозитория GitHub с соответствующими тестами на регрессию вместо хранения его в Coroid.
- Отчеты для разработчиков: Если в коде зависимости обнаружена уязвимость, составляется закрытый отчет для её разработчиков, который отправляет только человек.