← Все новости

Alpine Linux пересобрала свой GitLab после попытки взлома через CVE-2026-97229Alpine Linux rebuilt its GitLab after an attempted CVE-2026-97229 intrusion

Разработчики Alpine Linux раскрыли попытку эксплуатации критической RCE в GitLab на gitlab.alpinelinux.org. Следов успешного взлома не нашлось, но контейнер пересобрали с нуля, пароли и токены заменили, а сервер снова открыли 29 октября.Alpine Linux disclosed attempted exploitation of the critical GitLab RCE against gitlab.alpinelinux.org. No signs of a successful breach were found, but the container was rebuilt from scratch, passwords and tokens were replaced, and the server reopened on 29 October.

История началась 20 и 21 октября. Атакующий зарегистрировал учётную запись на gitlab.alpinelinux.org — платформе, где ведётся работа над apk, сборочными инструментами и репозиторием aports, — и попытался отправить изменённые настройки CI. В логах осталось восемь аварийных завершений рабочих процессов GitLab, четыре из которых связаны с работой эксплойта: первая стадия сработала, вторая закончилась сбоем.

Речь идёт о CVE-2026-97229 — целочисленном переполнении в Onigmo, движке регулярных выражений, который поставляется вместе с Ruby. Ошибка позволяет выполнить код без аутентификации; ранее CISA внесла её в каталог эксплуатируемых уязвимостей.

Почему обновление не помогло

22 октября администраторы подняли GitLab с 19.3.4 до 19.3.6 и были уверены, что проблема закрыта. Но исправление вошло в официальные пакеты GitLab, где Ruby идёт в комплекте, а не в сам код приложения. Alpine использовала собственный образ alpinelinux/gitlab со своим Ruby, и уязвимый движок остался на месте. Сам Ruby получил исправления 23 октября в версиях 3.3.13, 3.4.12 и 4.0.9.

Что система по-прежнему уязвима, выяснилось только 26 октября. Разбор логов показал новые попытки 25 и 26 октября. 27 октября доступ сторонних пользователей ограничили, 28 октября контейнер пересобрали с нуля, сбросили все пароли и заменили ключи доступа, 29 октября сервер снова открыли.

Что осталось неизвестным

Сторонних файлов, подозрительных процессов, необычных обращений к API и всплесков нагрузки не нашли; содержимое aports и пакетов сверили с внешними сборочными серверами и копиями у разработчиков. Но полностью исключить успешную эксплуатацию нельзя: логов исходящих соединений нет, часть журналов удалена при ротации, а веб-сервер не фиксирует детали, если эксплойт сработал без падения. Если бы атака удалась, под угрозой были хеши паролей, e-mail и IP пользователей, переменные окружения и токены CI, приватные репозитории. Ключи подписи релизов на этом сервере не хранились.

It started on 20 and 21 October. An attacker registered an account on gitlab.alpinelinux.org — the platform where apk, the build tooling and the aports repository are maintained — and tried to push modified CI settings. The logs show eight crashes of GitLab worker processes, four of them tied to the exploit: the first stage worked, the second failed.

The flaw is CVE-2026-97229, an integer overflow in Onigmo, the regular-expression engine bundled with Ruby. It allows unauthenticated remote code execution, and CISA had already added it to its known-exploited catalog.

Why the update did not help

On 22 October the administrators upgraded GitLab from 19.3.4 to 19.3.6 and believed the problem was closed. But the fix shipped in GitLab’s official packages, which bundle Ruby, not in the application code itself. Alpine runs its own alpinelinux/gitlab image with its own Ruby build, so the vulnerable engine stayed in place. Ruby itself was fixed on 23 October in 3.3.13, 3.4.12 and 4.0.9.

That the system was still vulnerable became clear only on 26 October. Log review showed new attempts on 25 and 26 October. Access for outside users was restricted on 27 October, the container was rebuilt from scratch on 28 October with all passwords reset and access keys replaced, and the server reopened on 29 October.

What remains unknown

No third-party files, suspicious processes, unusual API calls or load spikes were found, and the contents of aports, packages and release files were compared with external build servers and developers’ copies. A successful compromise still cannot be ruled out: there are no logs of outbound connections, some logs were removed during rotation, and the web server does not record detail when an exploit succeeds without crashing. Had the attack worked, password hashes, emails and IP addresses, CI environment variables and tokens, and private repositories would have been exposed. Release signing keys were not stored on that server.

Сюжет

  1. GitLab: критический патч закрывает RCE без аутентификации с CVSS 10.0GitLab critical patch fixes an unauthenticated RCE rated CVSS 10.0
  2. RCE в GitLab с CVSS 10.0 эксплуатируют: CISA внесла CVE-2026-97229 в KEVGitLab's CVSS 10.0 RCE is being exploited: CISA adds CVE-2026-97229 to KEV
  3. Alpine Linux пересобрала свой GitLab после попытки взлома через CVE-2026-97229Alpine Linux rebuilt its GitLab after an attempted CVE-2026-97229 intrusion

Источники