exploit paylaşım grubumuz: t.me/HTTPwnn

Regular Expression Denial of Service(ReDoS) Teknik anlatım

  • Konu başlatıcı Konu başlatıcı moriarty
  • Başlangıç Tarihi Başlangıç Tarihi
Katılım
13 Haz 2026
Mesaj
160
Reaksiyon
233
Puan
43
xentr_thread_starter

Redos Nedir​

Karakter kombinasyonlarını eşleştirmek için kullanılan (regex) kusurlarını istismar eden bir DOS (Hizmet dışı bırakma) saldırısı türüdür.Kötü yazılmış regex ler sistemde ciddi bir yavaşlamaya neden olacak şekilde istismar edilebilir. Bu zafiyeti anlamak için regex motorlarını anlamamız gerekir.

Regex Motoru Nasıl Çalışır​

Regex Motorları 2 ye ayrılır Deterministik ve Non-deterministik. Burda kafanızı çok karıştırmayacagım şunu bilmeniz yeterlidir:Deterministik -> tek yol -> hızlı ve güvenliNon-deterministik -> birçok yol -> güçlü ama suistimale açıkyani Deterministik olan motor yapısı geregi redos a karşı korumalıdır bizde bugun Non-deterministik olan motorda redosun nasıl olustugunu inceleyecegiz.burdaki en onemli fikir motor karar veremiyor. Bir karakteri nasıl yorumlayacağına emin olamıyor ,Motor bir karakteri kabul etmek için ilk olası yolu dener ve ilerler eğer bir sonraki karakterde eşleşme başarısız olursa "backtrack" (geriye dönme) yapar ve önceki karakteri işlemenin başka bir yolu olup olmadıığına bakar.Burda ki anahtar kelime backtrack butun olay burda kopuyor hadi bir onrek ustunden inceliyelim

ReDoS Güvenlik Açığı Örnekler​

Evil regex , ReDoS saldırılarına karşı hassas olan regex patternlerine kullanılan bir terimdir.Bunlar tipik olarak yoğun backtracking e neden olabilen patternlerdir.Örneğin ^(a+)+$ desenini ele alalım bu desen tamamen 'a' harflerinden oluşan inputları eşleşmeyi hedefler , ancak aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa! boyle bir input verdigimizde motor asla bulamayacağı bir eşleşme için backtracking yapmaya başlar ve buda ReDoS a sebep olucaktırOWASP tarafından paylaşılan ve aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa! gibi girdilere karşı savunmasız olan diğer örnekler:
  1. (a+)+
  2. ([a-zA-Z]+)*
  3. (a|aa)+
  4. (a|a?)+

videolu kısa bir örneklendirme:
https://streamable.com/jjuj8k

video da gordugunuz uzere ilk olarak a! veriyorum burdaki ! herhangibi birşey olabilir olay eşleşmemesini saglamak ve sadece 8 adım da regex ile inputun uyuşmadıgını gosteriyor fakat a harfini arttırdıgımda katastrofik bir şekilde adım sayısının arttıgını goruyoruz bu gordugumuz şey backtracking olarak adlandırılıyor ve bunun bir sunucuya ne kadar zarar verebilecegini duşunuyor musunuz.Bazı regex pattern leri ReDoS a karşı savunmasızdır. genellikle nested repetitions içerirler:
  • * (zero or more)
  • + (one or more)
  • {n,} (n or more)
işte redosa karşı savunmasız olan dil ve kütüphane listesi: Python: re PHP: PCRE JavaScript: RegExp Java: java.util.regex Perl: Standart Regex Motoru Ruby: Onigmo / Oniguruma C# / .NET: System.Text.RegularExpressions C++: std::regex Swift: NSRegularExpression R: base::grep (PCRE seçeneğiyle)

Kapanış​

Minik bir bilgi​

Stack Overflow Kesintisi2016 yılında Stack Overflow 34 dakika boyunca erişilemez oldu. bunun tek sebebi şu regex ti:^[\s\u200c]+|[\s\u200c]+$Bu regex, hatalı biçimlendirilmiş bir gönderi üzerinde çalıştırıldı ve web sunucularında yüksek CPU kullanımına neden oldu. neyse ki kesinti uzun sürmedi.

Guvenlik araştırmacıları​

Online Repository lerde zafiyetli Regex lerÇevrimiçi kod depoları, ReDoS zafiyeti arayan hackerlar için adeta bir hazine niteliğindedir. birçok açık kaynak proje çeşitli amaçlarla regex kullanır ve bunların hepsi regex yazımında en iyi pratikleri takip etmez.gitHub üzerindeki binlerce popüler projeyi inceleyen yakın tarihli bir çalışma projelerin %10 undan fazlasının ReDoS saldırılarına karşı savunmasız olduğunu ortaya koymuştur. saldırganlar da benzer araştırmalar yaparak zafiyetli repository leri bulabilir ve bu kütüphaneleri kullanan sistemlere saldırabilir.
 
Geri
En Üst