Какова наилучшая практика для работы с PR, направленной на устранение уязвимостей безопасности в публичном репо?

22

Как проект с открытым исходным кодом с общедоступным репозиторием лучше всего обрабатывает запросы извлечения (PR), которые устраняют уязвимости безопасности, о которых сообщалось, но еще не опубликованные?

Я участвую в проекте с открытым исходным кодом с несколькими сотнями участников. Мы публикуем уведомления о безопасности и уязвимости несколько раз в год в рамках регулярного ежемесячного выпуска. Мы не публикуем информацию об уязвимостях, пока не сделаем исправленную версию доступной. Мы можем безопасно управлять проблемами безопасности в нашей системе управления проектами (JIRA). Но у нас нет хорошего процесса, чтобы скрыть PR, которые исправляют уязвимости безопасности, когда они отправляются в GitHub. Мы обеспокоены тем, что люди могут найти эти исправления до их выпуска и создать эксплойты нулевого дня.

Мы рассмотрели возможность использования частных репозиториев, которые разветвляют основное репо, но большая часть нашего текущего обзора и рабочего процесса QA происходит на PR. Если бы мы переместили рабочий процесс в группу безопасности только для частного репо, это уменьшило бы окно, когда исправление стало общедоступным, до часов, необходимых для создания архивов и их публикации в sourceforge, что было бы большим улучшением. Нам также, вероятно, нужно избегать слияния PR с нашей публичной бета-версией.

Прежде чем идти в этом направлении, я хотел бы знать, каков наилучший способ обработки предварительных выпусков исправлений ошибок безопасности в проектах с открытым исходным кодом с открытыми репозиториями? Если проблему можно решить лучше, используя платформу, отличную от GitHub, я должен отметить, что мы оцениваем переход на GitLab.

Джо Мюррей
источник
1
Я не уверен, что есть лучшая практика. GitLab по сути является частным GitHub. Уравновешивать проблемы с открытым исходным кодом и исправлениями безопасности нелегко. Сколько ваших исправлений безопасности сделано людьми, не входящими в вашу команду безопасности?
Берин Лорич,
О большинстве проблем сообщают другие, но, вероятно, менее одной пятой исправлений происходит от тех, кто не входит в группу безопасности.
Джо Мюррей
1
По моему мнению, если вам нужно, чтобы какая-то часть вашего процесса была приватной, то это следует делать за пределами GitHub (потому что GH является публичной); после того, как эта конкретная часть сделана и каждый пересмотрел ее код; Вы можете создать PR по GH, который будет объединен как можно быстрее, просто чтобы «вернуться» к официальному процессу. Вы можете использовать другой инструмент для управления этими исключениями в процессе.
Эмерсон Кардосо
2
Полное немедленное раскрытие (то есть публичное раскрытие без задержек) - совершенно законная вещь.
Майлз Рут
1
Этот вопрос, по-видимому, предполагает, что пока проблема безопасности не раскрыта группой, она неизвестна миру. Это просто не соответствует действительности; предполагается, что любая обнаруженная проблема безопасности известна кому-то с дурными намерениями. Теперь, если вы предполагаете, что кто-то другой уже знает об этой проблеме и может использовать ее, вы больше не можете откладывать выпуск исправления до своего очередного ежемесячного выпуска. Вы должны освободить как можно скорее. Это означает, что нет проблем с соблюдением регулярного PR-потока. Просто пиши против последней ветки релиза, объединяй, теги, выпускай.
Джори Гиртс

Ответы:

1

Протокол для этого заключается в определении факторов риска в публичном показе уязвимостей. Для любого связанного с безопасностью, эти PR должны находиться в частном репозитории, который может видеть только ваша команда безопасности. Это действует независимо от платформы, которую вы используете для создания и выполнения Pull Requests.

Ллойд Мур
источник