Saldırı Nasıl Gelişti?
Alpine, 13 Ekim'de sunucuyu 19.3.5 yerine yanlışlıkla 19.3.4 sürümüne yükseltti. Sunucu, 12 Ekim'de yayımlanan yamanın dışında kalmış hâlde beklerken 20 Ekim'de yeni kaydolmuş bir hesap sunucuyu yoklamaya başladı. Bu hesap 20 ve 21 Ekim'de sunucuya özel hazırlanmış CI yapılandırmaları gönderdi; GitLab çalışan süreçleri 8 kez çöktü. 21 Ekim'deki ana saldırı aynı zamanda 502 hatalarına ve CI işlerinin başarısız olmasına neden oldu. Alpine'e göre bu çökmelerin 4'ünde saldırgan istismarın bir bölümünü tamamlayıp bir sonraki adımda başarısız oldu.Saldırganın Alpine'in GitLab konteyner imajını indirdiği de tespit edildi; Alpine bu durumun "istismarı tam olarak kendi yapılarına göre ayarladıklarına işaret ettiğini" söyledi. Hesap 23 Ekim'de engellendi. Saldırgan 25 ve 26 Ekim'de geri dönerek yeniden erişim sağlamaya çalıştı, ancak bu girişimler sonuçsuz kaldı. 26 Ekim'de Alpine, 22 Ekim'de gerçekleştirdiği 19.3.6 sürümüne yükseltmenin ardından sunucunun hâlâ savunmasız olduğunu fark etti. Ertesi gün GitLab'ı geliştiriciler ve derleme sunucuları dışında herkese kapattı ve yeniden inşa sürecini başlattı. Yeniden inşa 28 Ekim'de tamamlandı.
GitLab Yükseltmesi Açığı Neden Kapatmadı?
Açığın kaynağı, GitLab'ın CI yapılandırmalarındaki düzenli ifadeleri derlemek için kullandığı Ruby'nin içindeki Onigmo düzenli ifade motorunda bulunuyor. GitLab'ın 12 Ekim'de yayımladığı düzeltme, yalnızca GitLab'ın kendi Linux paketleri ve konteyner imajları içinde gelen Ruby'yi yamaladı. Ruby'nin kendi düzeltilmiş sürümleri ise 22 ve 23 Ekim'de çıktı.GitLab yükseltmesi, sunucunun kendi Ruby kurulumunu değiştirmiyor. Bu nedenle standart Ruby kullanan bir GitLab kurulumu, Ruby'nin kendisi güncellenmeden açık kalmaya devam ediyor. Alpine'in GitLab imajı da standart Ruby kullandığından 19.3.6 sürümüne geçiş açığı kapatmadı. Alpine bu durumu şöyle özetledi: "Kendi Ruby'si üzerinde çalışan, kaynaktan derlenen ya da kendi konteyner imajını kullanan sunucular için GitLab'ı yükseltmek yeterli değil." Bu tür kurulumların Ruby 3.3.13, 3.4.12, 4.0.9 veya daha yeni bir sürüme geçmesi gerekiyor. 29 Ekim itibarıyla GitLab'ın 12 ve 21 Ekim yamalarına ilişkin yayımladığı yazılar, kaynaktan derleme yapan yöneticilere Ruby'yi güncelleme talimatı içermiyordu. GitLab'ın kaynaktan kurulum kılavuzu ise minimum Ruby sürümü olarak hâlâ Nisan'da kullanım ömrünü tamamlayan ve artık yama almayacak olan Ruby 3.2'yi gösteriyor.
Etkilenebilecek Veriler ve Paket Bütünlüğü
Alpine, saldırının başarılı olup olmadığını kesin olarak dışlayamadığını vurguladı. "Başarılı bir istismar çökme izi ve web günlüklerinde herhangi bir iz bırakmaz" diyen Alpine, saldırı gününe ait bazı günlüklerin, arka plan iş günlükleri ve eski konteynerin dosya sistemi dahil, artık mevcut olmadığını belirtti. Hem Alpine hem de barındırma sağlayıcısı giden ağ bağlantılarını kayıt altına almamıştı.Saldırının başarılı olması hâlinde tüm kullanıcıların e-posta adresleri, adları ve IP adresleri; parola özetleri; iki faktörlü kimlik doğrulama sırrları; CI/CD değişkenleri ve çalıştırıcı token'ları; webhook, entegrasyon ve push mirror kimlik bilgileri; kişisel erişim token'ları; özel depolar ile gizli konular ve birleştirme istekleri açığa çıkmış olabilir. Alpine, parola sıfırlama ve yeni gizli anahtarlar oluşturmanın ötesinde çalıştırıcı token'larının, CI/CD değişkenlerinin, erişim token'larının ve entegrasyon kimlik bilgilerinin değiştirilip değiştirilmediğini açıklamadı.
Paket bütünlüğü açısından Alpine, 20-22 Ekim arasında aports'a eklenen her değişikliğin bilinen bir geliştirici tarafından kaydedilmiş bir push yoluyla geldiğini doğruladı. Bu doğrulamayı, saldırganın erişemeyeceğini belirttiği kaynaklara, yani bir geliştiricinin depo kopyasına ve 45 derleme sunucusunun tamamına dayanarak yaptı. Paketleri ve sürümleri imzalayan anahtarlar hiçbir zaman GitLab sunucusunda bulunmadı.
GitLab Yöneticileri ve Alpine Kullanıcıları Ne Yapmalı?
GitLab'ın Linux paketini veya resmi konteyner imajlarını kullananların ilgili dalın en yeni sürümüne yükseltmesi yeterli. Kaynaktan derleme yapan ya da kendi Ruby'sini kullanan kurulumlar için GitLab güncellemesinin yanı sıra Ruby'nin 3.3.13, 3.4.12 veya 4.0.9 ve üzeri bir sürüme güncellenmesi zorunlu; Ruby 3.2, bu açık için yama almayacak. GitLab ayrıca kendi yönetimindeki sunucular için Sigma formatında altı tespit kuralı yayımladı; bu kuralların dördü deneysel nitelikte olup CI regexp uyarılarındaki saldırgan kalıpları, olağandışı uzun dosya yolları ve Onigmo'ya işaret eden Ruby çökme raporlarını arıyor.Alpine kullanıcıları, gitlab.alpinelinux.org yeniden açıldığında "Parolanızı mı unuttunuz?" seçeneğiyle yeni bir parola belirlemek zorunda kalacak. Alpine ayrıca başka sitelerden sızdırılan parolalar kullanılarak kendi GitLab'ına otomatik giriş denemeleri yapıldığını tespit ettiğini belirtti; gitlab.alpinelinux.org parolasını başka yerlerde kullananların bu sitelerdeki parolalarını da değiştirmesi gerekiyor. alpinelinux/gitlab imajını kullananlar ise 27 Ekim'de yayımlanan ve Ruby 3.3.13 içeren 19.3.6 imajını yeniden çekmelidir; bu tarihten önce çekilen tüm imajlar savunmasız durumda. Alpine'in kendi Ruby paketleri zaten güncel: Alpine 3.22, 3.23, 3.24 ve edge'de Ruby 3.4.12, Alpine 3.21'de ise Ruby 3.3.13 mevcut; apk upgrade komutu güncellemeyi yükleyecek.
Rapid7, laboratuvar ortamında çalışan bir istismar geliştirerek 13 Ekim'de kavram kanıtı kodunu yayımladı. Bu istismar, yamalanmamış resmi GitLab 19.4.1 imajında git kullanıcısı olarak komut çalıştırmayı başardı; yamalı 19.4.2 imajında ise aynı girdi çalışmadı. Rapid7'nin test ettiği güzergâhta istismar, saldırganın önce kötü amaçlı bir .gitlab-ci.yml dosyası ve UTF-8 karakter içeren bir dosya yolu oluşturmasını gerektiriyor; yalnızca son CI lint isteği kimlik doğrulamasız. Rapid7, asıl raporun hâlâ gizli olduğunu ve bu yazma adımını atlayan yöntemi henüz bilmediğini belirtti. CVE-2026-97229, 28 Ekim'deki güncelleme itibarıyla CISA'nın Bilinen İstismar Edilen Güvenlik Açıkları kataloğunda yer almıyordu.

Yazılım ve Uygulamalar
Yazılım ve Uygulamalar
Yazılım ve Uygulamalar
Yorumlar (0)
Yorum yapmak için giriş yapmalısınız.