Уязвимости в GitLab, позволяющие захватить учётную запись и выполнить команды под другим пользователем

Опубликованы корректирующие обновления платформы для организации совместной разработки – GitLab 16.7.2, 16.6.4 и 16.5.6, в которых устранены две критические уязвимости. Первая уязвимость (CVE-2023-7028), которой присвоен максимальный уровень опасности (10 из 10), позволяет захватить чужую учётную запись через манипуляции с формой восстановления забытого пароля. Уязвимость вызвана возможностью отправки письма с кодом для сброса пароля на неподтверждённые email-адреса. Проблема проявляется начиная с выпуска GitLab 16.1.0, в котором появилась возможность отправки кода восстановления пароля на неверифицированный запасной email-адрес.

Для проверки фактов компрометации систем предлагается оценить в логе gitlab-rails/production_json.log наличие
HTTP-запросов к обработчику /users/password с указанием массива из нескольких email в параметре “params.value.email”. Также предлагается проверить наличие в логе gitlab-rails/audit_json.log записей со значением PasswordsController#create в meta.caller.id и указанием массива из нескольких адресов в блоке target_details. Атака не может быть доведена до конца при включении пользователем двухфакторной аутентификации.

Вторая уязвимость CVE-2023-5356 присутствует в коде для интеграции с сервисами Slack и Mattermost, и позволяет выполнить /-команды под другим пользователем из-за отсутствия должной проверки авторизации. Проблеме присвоен уровень опасности 9.6 из 10. В новых версиях также устранена менее опасная (7.6 из 10) уязвимость (CVE-2023-4812), позволяющая обойти подтверждение CODEOWNERS через добавление изменений в ранее одобренный запрос на слияние.

Детальную информацию о выявленных уязвимостях планируют раскрыть через 30 дней после публикации исправления. Информация об уязвимостях передана в GitLab в рамках действующей на HackerOne программы выплаты вознаграждений за обнаружение уязвимостей.

Release. Ссылка here.