Alpine пересобрала GitLab с нуля после попытки взлома через уязвимость в Ruby
GitLab Security Incident: Attempted Exploitation of CVE-2026-97229
20–21 октября неизвестный атаковал GitLab-инстанс Alpine Linux, используя критическую уязвимость CVE-2026-97229 в обработке регулярных выражений в CI. Хотя исправление вышло 12 октября, инстанс оставался уязвимым: обновление GitLab не помогло, так как патч находится в Ruby. Атакующий скачал контейнерный образ Alpine, чтобы подогнать эксплойт. Прямых доказательств успеха нет, но и исключить его нельзя, поэтому GitLab полностью пересобран, все пароли сброшены. Пакеты и релизы не изменены.
Атака почти сработала. Мы не нашли доказательств, что она удалась, но не можем это исключить, поэтому мы посчитали инстанс скомпрометированным и пересобрали его с нуля.
- JLO64
> Обновление до GitLab 19.3.6 22 октября не исправило уязвимость. Исправление находится не в собственном коде GitLab, а в патче к Ruby, который GitLab применяет только в своих официальных пакетах. Наш образ использовал стандартный Ruby, поэтому патч в него не попал.
> Баг находится в движке регулярных выражений Ruby, так что уязвима любая программа, которая компилирует регулярные выражения из недоверенного ввода, а не только GitLab.
У меня такое ощущение, что эта эпоха постоянных эксплойтов/патчей действительно плохо сказывается на тех, кто собирает из исходников или делает собственные образы, по сравнению с теми, кто полагается на предоставленные образы и часто их обновляет. Я правда не могу придумать достойного решения для этих людей, кроме как быть подключённым к последним новостям 24/7, что очень прискорбно и, должно быть, выматывает...
- akersten
> Если вы используете наш контейнерный образ alpinelinux/gitlab, заново стяните alpinelinux/gitlab:19.3.6. Образ, опубликованный 27 октября, содержит Ruby 3.3.13. Любой образ 19.3.6, который вы стянули до 27 октября, а также все более старые теги уязвимы.
Разве им не стоит пометить новую версию вместо повторного выпуска исправленного 19.3.6, если более ранние 19.3.6 уязвимы?
- rurban
Вот что происходит, когда вы не доверяете существующим хорошо поддерживаемым пакетам, а вместо этого переписываете их сами. Onigmo не должен существовать.
В Linux тот же самый тревожный синдром «изобретено не здесь»: переписывают хорошие возможности по-своему, делая их хуже.
- cowlevel
Баг — это целочисленное переполнение в случайной C-библиотеке обработки данных (конкретно в регулярных выражениях), приводящее к RCE.
Кто ещё устал от C-библиотек за эту неделю?
- jtchang
Это фантастический разбор инцидента безопасности. Почти любой подобный инцидент будет содержать неизвестные. Хорошо, что их явно обозначают. Мне особенно понравилась часть о том, что было бы утечено, если бы атакующий добился успеха. Может быть, они могли бы указать, какой тип хеша использовался.