Сервер совместной разработки Alpine Linux пережил попытку взлома: контейнер с GitLab пересобран с нуля, пароли пользователей сброшены.
Разработчики Alpine Linux сообщили о попытках компрометации платформы gitlab.alpinelinux.org, где велась работа над пакетным менеджером APK, сборочными инструментами, инфраструктурными компонентами и скриптами сборки пакетов (aports). Вектором атаки стала уязвимость самого GitLab — целочисленное переполнение в движке регулярных выражений языка Ruby. Явных следов взлома обнаружить не удалось, однако полностью исключить успешную эксплуатацию невозможно, поэтому контейнер с GitLab сочли потенциально скомпрометированным: его содержимое отстроили заново, а пользователям запустили процедуру смены паролей.
Администраторы инфраструктуры не нашли ни посторонних файлов, ни подозрительных процессов, ни необычных запросов к API, ни изменённых настроек и системных файлов, ни всплесков нагрузки, характерных для массового выкачивания данных. Проверка целостности репозитория aports, пакетов и релизных файлов со сверкой с копиями на внешних сборочных серверах и машинах разработчиков тоже не показала скрытых правок. Помешать однозначному выводу мешают пробелы в данных: нет сведений об исходящих соединениях, часть логов утрачена при ротации (например, лог cron), а веб-сервер писал недостаточно подробно — успешное применение эксплоита без аварийного завершения в логе не отражается.
При удачном сценарии злоумышленники могли добраться до базы GitLab со сведениями обо всех пользователях (хэши паролей, email, IP-адреса и прочее), переменных окружения и токенов систем непрерывной интеграции, кодов двухфакторной аутентификации, хэшей персональных токенов доступа, приватных репозиториев и конфиденциальных обсуждений. Ключей для цифровых подписей релизов и пакетов на атакованном сервере не было.
Первые попытки эксплуатации зафиксированы 20 и 21 октября: атакующий завёл учётную запись в GitLab и пытался отправить изменённые настройки CI. В логах отмечено 8 аварийных завершений рабочих процессов GitLab, 4 из них связаны с эксплоитом. Первая фаза работы эксплоита прошла успешно, вторая закончилась сбоем. На момент атаки в контейнере стояла уязвимая версия GitLab 19.3.4; 22 октября её обновили до 19.3.6, но исправление вошло только в официальные установочные пакеты, а не в код самого GitLab — уязвимость сидит в инструментарии Ruby, который в контейнере остался старым. Что система по-прежнему уязвима, выяснилось лишь 26 октября. Разбор логов показал возобновление атак 25 и 26 октября. 27 октября сторонний доступ к GitLab ограничили, 28 октября содержимое пересобрали, сбросили все пароли (новый задаётся через процедуру восстановления забытого пароля) и заменили ключи доступа, а 29 октября обновлённый сервер вернули в строй. Docker-контейнер alpinelinux/gitlab оставался уязвимым вплоть до 27 октября.
