Все уязвимости

CVE-2023-7028

GitLab: письмо для смены пароля могло уйти постороннему

В некоторых выпусках GitLab письмо для сброса пароля могло попасть на неподтверждённый адрес. Проверьте версию своего сервера, установите исправление и выясните, не менялись ли аккаунты без ведома владельцев.

Проверено 26 октября 2026В официальной публикации GitLab — Critical, CVSS 3.1 — 10.0. Оценка описывает тяжесть возможного захвата аккаунта; фактический ущерб зависит от прав аккаунта и дополнительных средств защиты.

Кому нужно проверить

Владельцам собственного 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. 1В интерфейсе собственного GitLab откройте сведения о версии и сверьте их с пакетом или образом на сервере. Запишите редакцию CE или EE, способ установки и интеграцию с внешним входом. Не проверяйте ошибку запросом сброса пароля чужой учётной записи.
  2. 2При затронутой версии временно ограничьте доступ к серверу доверенной сетью, если это совместимо с работой команды. Сохраните двухфакторную защиту. Такие меры сокращают доступность уязвимого механизма, но не исправляют его.
  3. 3Сохраните журналы и проверьте неожиданные письма о сбросе пароля, изменения адресов, новые сеансы и действия важных аккаунтов. Отсутствие письма у владельца не является доказательством отсутствия атаки. Не публикуйте журналы с адресами пользователей и токенами.
  4. 4Подготовьте резервную копию базы, репозиториев, конфигурации и необходимых для восстановления секретов по инструкции своего способа установки. Проверьте восстановление на изолированном сервере; одна копия репозиториев не восстанавливает весь GitLab.
  5. 5Составьте маршрут перехода на поддерживаемый исправленный выпуск. На тестовой копии проверьте миграции базы, вход, чтение и запись репозитория и безопасное задание сборки. Не пропускайте обязательные промежуточные версии.
  6. 6Обновите рабочий сервер и подтвердите завершение миграций. Для отката используйте совместимые версию и резервную копию; простой запуск старого образа на изменённой базе может не работать. До восстановления защиты оставляйте внешний доступ ограниченным.
  7. 7На отдельном тестовом аккаунте выполните обычный сброс пароля и убедитесь, что письмо приходит владельцу и правила входа работают. При подтверждённых посторонних действиях отзовите затронутые сеансы и токены, проверьте изменения кода и настройки сборки. Универсальная команда обновления здесь не приводится: пакетная установка, контейнер и Kubernetes требуют разных процедур.

Что проверить при восстановлении доступа

Статичная схема разделяет адрес доставки письма и дальнейший вход. Все подписи доступны текстом, без движения и цветовых обозначений.

  1. 1Запрошена смена забытого пароля
  2. 2Письмо должно уйти только на подтверждённый адрес владельца
  3. 3После смены пароля действуют настроенные проверки входа
  4. 4Администратор проверяет версию и неожиданные изменения аккаунта

Как не подпустить ботов к сайту

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

Первоисточники

Снизьте шанс атаки до того, как бот дойдёт до сайта

Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.