Документация

Раскрытие информации

Как Coroid хранит сведения о непубличной уязвимости внутри Coroid, что отображается на GitHub, в уведомлениях и при экспорте, а также как публикуются закрытые исправления.

Публикация сведений об уязвимости до появления исправления приносит больше пользы злоумышленникам, чем защитникам. Система безопасности хранит сведения о каждой непубличной находке внутри 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.
  • Отчеты для разработчиков: Если в коде зависимости обнаружена уязвимость, составляется закрытый отчет для её разработчиков, который отправляет только человек.