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 полностью пересобран, все пароли сброшены. Пакеты и релизы не изменены.

Атака почти сработала. Мы не нашли доказательств, что она удалась, но не можем это исключить, поэтому мы посчитали инстанс скомпрометированным и пересобрали его с нуля.
  1. JLO64

    > Обновление до GitLab 19.3.6 22 октября не исправило уязвимость. Исправление находится не в собственном коде GitLab, а в патче к Ruby, который GitLab применяет только в своих официальных пакетах. Наш образ использовал стандартный Ruby, поэтому патч в него не попал.

    > Баг находится в движке регулярных выражений Ruby, так что уязвима любая программа, которая компилирует регулярные выражения из недоверенного ввода, а не только GitLab.

    У меня такое ощущение, что эта эпоха постоянных эксплойтов/патчей действительно плохо сказывается на тех, кто собирает из исходников или делает собственные образы, по сравнению с теми, кто полагается на предоставленные образы и часто их обновляет. Я правда не могу придумать достойного решения для этих людей, кроме как быть подключённым к последним новостям 24/7, что очень прискорбно и, должно быть, выматывает...

  2. akersten

    > Если вы используете наш контейнерный образ alpinelinux/gitlab, заново стяните alpinelinux/gitlab:19.3.6. Образ, опубликованный 27 октября, содержит Ruby 3.3.13. Любой образ 19.3.6, который вы стянули до 27 октября, а также все более старые теги уязвимы.

    Разве им не стоит пометить новую версию вместо повторного выпуска исправленного 19.3.6, если более ранние 19.3.6 уязвимы?

  3. rurban

    Вот что происходит, когда вы не доверяете существующим хорошо поддерживаемым пакетам, а вместо этого переписываете их сами. Onigmo не должен существовать.

    В Linux тот же самый тревожный синдром «изобретено не здесь»: переписывают хорошие возможности по-своему, делая их хуже.

  4. cowlevel

    Баг — это целочисленное переполнение в случайной C-библиотеке обработки данных (конкретно в регулярных выражениях), приводящее к RCE.

    Кто ещё устал от C-библиотек за эту неделю?

  5. jtchang

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

Ещё за этот день

2026-10-29