CVE-2023-7028
GitLab: письмо для смены пароля могло уйти постороннему
В некоторых выпусках GitLab письмо для сброса пароля могло попасть на неподтверждённый адрес. Проверьте версию своего сервера, установите исправление и выясните, не менялись ли аккаунты без ведома владельцев.
Кому нужно проверить
Владельцам собственного GitLab, где хранятся исходные тексты сайта и запускается автоматическая доставка обновлений. Проверку выполняет администратор GitLab совместно с ответственным за учётные записи. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.
В чём риск
Обычно ссылка для смены забытого пароля отправляется на адрес владельца аккаунта. В уязвимых версиях письмо могло уйти на неподтверждённый адрес. Получатель такого письма получает возможность вмешаться в восстановление доступа. Это не означает взлом самой почты. Если аккаунт окажется захвачен, объём доступных репозиториев и действий определяется его правами. Двухфакторная проверка — дополнительный шаг входа, например код из приложения; её нельзя считать исправлением ошибки отправки письма. Не отключайте её ради проверки и отдельно подтвердите правила входа вашего размещения.
Затронутые версии
GitLab Community Edition и Enterprise Edition: 16.1 до 16.1.6, 16.2 до 16.2.9, 16.3 до 16.3.7, 16.4 до 16.4.5, 16.5 до 16.5.6, 16.6 до 16.6.4 и 16.7 до 16.7.2. Верхние границы не включаются. Проблема относится к серверу GitLab и механизму сброса пароля, а не к программе Git на компьютере. Advisory не ограничивает её одним способом установки. На момент публикации GitLab.com уже был исправлен.
Исправленные версии
Исправления этой ошибки: 16.1.6, 16.2.9, 16.3.7, 16.4.5, 16.5.6, 16.6.4 и 16.7.2. GitLab отдельно предупредил о проблеме миграции базы и рекомендовал 16.5.7, 16.6.5, 16.7.3 или новее. Это исторические границы, не рекомендация устанавливать старую ветку сегодня: переходите на поддерживаемый выпуск по официальному маршруту обновления с необходимыми промежуточными остановками.
Что сделать
- 1В интерфейсе собственного GitLab откройте сведения о версии и сверьте их с пакетом или образом на сервере. Запишите редакцию CE или EE, способ установки и интеграцию с внешним входом. Не проверяйте ошибку запросом сброса пароля чужой учётной записи.
- 2При затронутой версии временно ограничьте доступ к серверу доверенной сетью, если это совместимо с работой команды. Сохраните двухфакторную защиту. Такие меры сокращают доступность уязвимого механизма, но не исправляют его.
- 3Сохраните журналы и проверьте неожиданные письма о сбросе пароля, изменения адресов, новые сеансы и действия важных аккаунтов. Отсутствие письма у владельца не является доказательством отсутствия атаки. Не публикуйте журналы с адресами пользователей и токенами.
- 4Подготовьте резервную копию базы, репозиториев, конфигурации и необходимых для восстановления секретов по инструкции своего способа установки. Проверьте восстановление на изолированном сервере; одна копия репозиториев не восстанавливает весь GitLab.
- 5Составьте маршрут перехода на поддерживаемый исправленный выпуск. На тестовой копии проверьте миграции базы, вход, чтение и запись репозитория и безопасное задание сборки. Не пропускайте обязательные промежуточные версии.
- 6Обновите рабочий сервер и подтвердите завершение миграций. Для отката используйте совместимые версию и резервную копию; простой запуск старого образа на изменённой базе может не работать. До восстановления защиты оставляйте внешний доступ ограниченным.
- 7На отдельном тестовом аккаунте выполните обычный сброс пароля и убедитесь, что письмо приходит владельцу и правила входа работают. При подтверждённых посторонних действиях отзовите затронутые сеансы и токены, проверьте изменения кода и настройки сборки. Универсальная команда обновления здесь не приводится: пакетная установка, контейнер и Kubernetes требуют разных процедур.
Что проверить при восстановлении доступа
Статичная схема разделяет адрес доставки письма и дальнейший вход. Все подписи доступны текстом, без движения и цветовых обозначений.
- 1Запрошена смена забытого пароля
- 2Письмо должно уйти только на подтверждённый адрес владельца
- 3После смены пароля действуют настроенные проверки входа
- 4Администратор проверяет версию и неожиданные изменения аккаунта
Как не подпустить ботов к сайту
BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.
Первоисточники
Снизьте шанс атаки до того, как бот дойдёт до сайта
Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.