Konuyu Okuyanlar: 1 Ziyaretçi

Ruby Onigmo Regex Motorundaki Üç Hata: GitLab RCE CVE'lerinin Kök Nedeni

Ruby Onigmo Regex Motorundaki Üç Hata: GitLab RCE CVE'lerinin Kök Nedeni
[Resim: attachment.php?aid=395]

Selamlar,

Dün GitLab'ın CVSS 10 kimlik doğrulamasız RCE açığını (CVE-2026-110264) konuşmuştuk. 23 Ekim'de Ruby projesi asıl kök nedeni açıkladı: Onigmo regex motorundaki üç bellek bozulması hatası. Ruby 4.0.9, 3.4.12 ve 3.3.13 bu hataları kapatıyor. GitLab sunucusu işletmeseniz bile kullanıcı girdilerinden regex derleyen her Ruby uygulaması için bu konu önemli.

Konuda anlatılacaklar
  1. Hangi GitLab CVE'leri hangi Ruby hatalarına dayanıyor?
  2. Kimler etkileniyor?
  3. Neden Regexp.timeout yetmiyor?
  4. Yükseltme ve geçici önlem
  5. Kendi kodunuzda kontrol

1. CVE eşlemesi
Ruby resmi duyurusuna göre:
Kod:
CVE-2026-89078 -> Cift free (alternation sonrasi parse hatasi) CVE-2026-93577 -> Derlenmis desen boyutu tasmasi CVE-2026-97229 -> Ayni tasma (CI/CD baglami) CVE-2026-110264 -> Cok sayida tekrar iceren desende ID tasmasi
Tam düzeltmeler: Ruby 4.0.9, 3.4.12, 3.3.13. Ruby kendi adına şimdilik ayrı CVE istemedi; takip için GitLab kimliklerini kullanın.

2. Kimler etkileniyor?
Yalnızca saldırganın kontrol ettiği bir dizgeden regex derleyen uygulamalar:
Kod:
Regexp.new(kullanici_girdisi) Regexp.compile(...) Regexp.union(...) /#{kullanici_girdisi}/
Geliştiricinin yazdığı sabit desenler etkilenmez. GitLab bunu CI yapılandırması gibi kullanıcı desenlerinde yapıyordu; benzer desen başka SaaS ürünlerinde de olabilir.

3. Regexp.timeout yetmiyor
Ruby açıkça yazıyor: Regexp.timeout bu hatalara karşı korumaz. Desen uzunluğunu sınırlamak da güvenilir değil; bazı hatalar kısa desenlerle tetiklenebiliyor. Tek sağlam yol: Ruby'yi yükseltmek veya güvenilmeyen girdiden regex derlememek.

4. Yükseltme
Kod:
ruby -v # Hedef: 4.0.9+ veya 3.4.12+ veya 3.3.13+ rbenv install 3.4.12 && rbenv local 3.4.12 # ornek # GitLab Omnibus: resmi yamali surume gecin
Ruby 3.2 ve daha eski dallar bu düzeltmeleri almayacak; yükseltme veya girdiyi sıkı doğrulama şart.

5. Kendi kodunuzda kontrol
Kod:
# projede Regexp.new / Regexp.compile arayin rg -n "Regexp\.(new|compile|union)" --type ruby
Bulduğunuz yerlerde girdinin saldırgan kontrolünde olup olmadığını gözden geçirin. Mümkünse beyaz liste, sabit desen veya güvenli bir eşleme tablosu kullanın.

Uygulamalarınızda kullanıcıdan regex alıyor musunuz? Nasıl sınırlıyorsunuz?

Yasal uyarı
Bu yazı bilgilendirme ve savunma amaçlıdır. Anlatılan kontrolleri yalnızca kendi sistemlerinizde veya yazılı izinle yapın. İzinsiz erişim, tarama ve sömürü girişimleri TCK 243-245 kapsamında suçtur. TurkTeam white-hat bir topluluktur; çalıntı veri, hesap, combo/log paylaşımı ve hack hizmeti talepleri forum kurallarına aykırıdır.

Kaynaklar


Ek DosyalarEkran Görüntüleri
   
Cevapla



Hızlı Menü: