Regular expression Denial of Service - ReDoS
Düzenli İfade Hizmet Dışı Bırakma - ReDoS
Düzenli İfade Hizmet Dışı Bırakma (ReDoS)
Bir Düzenli İfade Hizmet Dışı Bırakma (ReDoS), düzenli ifadelerin (metinde desenleri aramak ve eşleştirmek için bir yol) nasıl çalıştığındaki zayıflıklardan faydalanıldığında meydana gelir. Bazen, düzenli ifadeler kullanıldığında, özellikle çalıştıkları metin parçası büyüdükçe, çok yavaş hale gelebilirler. Bu yavaşlık, metin boyutunda bile küçük artışlarla hızla büyüyebilir. Saldırganlar, bu sorunu kullanarak düzenli ifadeler kullanan bir programın uzun süre düzgün çalışmasını engelleyebilir.
Sorunlu Regex Naif Algoritması
Detayları https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS adresinde kontrol edin.
Kötü Amaçlı Regexler
Kötü bir düzenli ifade deseni, bir DoS'a neden olacak şekilde oluşturulmuş girdide takılı kalabilen bir desendir. Kötü amaçlı regex desenleri genellikle tekrarlayan gruplama ve tekrarlama veya tekrarlayan grup içinde örtüşme içeren desenler içerir. Kötü desen örnekleri şunları içerir:
(a+)+
([a-zA-Z]+)*
(a|aa)+
(a|a?)+
(.*a){x} için x > 10
Tüm bunlar, aaaaaaaaaaaaaaaaaaaaaaaa!
girdisine karşı savunmasızdır.
ReDoS Yükleri
ReDoS Aracılığıyla Dize Sızdırma
Bir CTF (veya hata ödülü) sırasında, hassas bilgilerin (bayrak) eşleştiği Regex'i siz kontrol edebilirsiniz. Ardından, bir Regex eşleşirse sayfayı dondurmanız (zaman aşımı veya daha uzun işleme süresi) ve eşleşmezse dondurmamanız yararlı olabilir. Bu şekilde, dizeyi karakter karakter sızdırabilirsiniz:
Bu gönderide şu ReDoS kuralını bulabilirsiniz:
^(?=<flag>)((.*)*)*salt$
Örnek:
^(?=HTB{sOmE_fl§N§)((.*)*)*salt$
Bu çözümde şunu bulabilirsiniz:
<flag>(((((((.*)*)*)*)*)*)*)!
Bu çözümde şunu kullandı:
^(?=${flag_prefix}).*.*.*.*.*.*.*.*!!!!$
Giriş ve Regex'i Kontrol Eden ReDoS
Aşağıdakiler, girişi ve regex'i kontrol ettiğiniz ReDoS örnekleridir:
Araçlar
Referanslar
Last updated