Хакери са направили опит да експлоатират критична уязвимост в GitLab в инфраструктурата за разработка на Alpine Linux на 20–21 октомври, което накара проекта с отворен код да изгради наново своя GitLab сървър и да нулира всички пароли поради опасения от евентуално компрометиране.

Атаките са били насочени към CVE-2026-97229 – уязвимост за отдалечено изпълнение на код с максимална степен на критичност, като многократно са причинявали срив на процесите в GitLab, а някои от опитите са били близо до успех.

Въпреки че Alpine Linux не откри доказателства атакуващите да са изпълнили код или да са манипулирали софтуерните пакети и издания на проекта, екипът не успя да изключи успешно компрометиране поради липсващи системни журнали и отсъствие на записи за изходящи връзки.

изображение

„Тъй като не можем да изключим изпълнение на код, а доказателствата, които биха ни трябвали, за да го потвърдим, вече не съществуват, избрахме по-трудния път и изградихме инстанцията на GitLab от нулата“, обясниха от екипа на Alpine Linux.

Alpine Linux е малка, лека операционна система, широко използвана като основа за Docker контейнерни образи, които стартират приложения и услуги.

Тяхната GitLab инстанция хоства хранилища за разработка, прегледи на код и CI задачи, включително рецептите за компилиране „aports“, използвани за създаването на софтуерните пакети на Alpine.

Това я прави ценна мишена за атака по веригата на доставки, тъй като манипулирането на тяхната GitLab среда може да засегне софтуера надолу по веригата.

CVE-2026-97229 е уязвимост от тип целочислено препълване (integer overflow) с максимална степен на критичност в компилатора за регулярни изрази Onigmo в CI/CD на GitLab, включен в пакета на Ruby, която може да позволи на неавтентикирани атакуващи да изпълнят произволен код на сървъра.

GitLab разкри проблема и пусна корекции за сигурност на 12 октомври, предупреждавайки, че атакуващите могат да го задействат при определени условия чрез подаване на специално конструиран регулярен израз в конфигурация на CI/CD конвейер (pipeline).

Първоначално Alpine инсталира GitLab 19.3.4 вместо версията с корекция за сигурност – 19.3.5. По-късното обновяване до 19.3.6 също не успя да отстрани уязвимостта, тъй като поправката изискваше корекция за сигурност в Ruby, която GitLab включи в официалните си пакети, но персонализираният контейнерен образ на Alpine не съдържаше.

На 20–21 октомври атакуващият е изпратил злонамерени CI конфигурации, насочени към уязвимостта, причинявайки осем срива на работни процеси (workers); четири от тях са били частично успешни, въпреки че нито един не изглежда да е стигнал докрай.

Екипът на Alpine Linux установи, че атакуващите са изтеглили неговия GitLab контейнерен образ, което предполага, че може да са подготвяли атака по веригата на доставки.

След разследване Alpine не откри манипулации в подадените промени (commits) в хранилищата, пакетите или изданията до 27 октомври. Освен това не е възможно да са били изложени на риск ключове за подписване, тъй като те не се съхраняват на GitLab сървъра.

Хронология на инцидента
Хронология на инцидента Източник: Alpine Linux

Ако експлоатирането е било успешно, потенциално изложената информация включва потребителски данни, хешове на пароли, тайни за двуфакторна автентикация (2FA), CI/CD тайни, идентификационни данни за интеграции и съдържание на частни проекти, въпреки че не е потвърдено компрометиране на горепосоченото.

Alpine съветва потребителите да нулират своите пароли в GitLab и да изтеглят образа alpinelinux/gitlab:19.3.6, публикуван на 27 октомври, който съдържа Ruby 3.3.13 и отстранява уязвимостта CVE-2026-97229.