Joi E-posta Doğrulamasında ReDoS Açığı: CVE-2026-118772
Joi kütüphanesinin e-posta doğrulama özelliğinde ciddi bir Regular Expression Denial of Service (ReDoS) açığı keşfedildi. Sürüm 17.13.9 ve 18.3.1 öncesi tüm versiyonlar etkileniyor.
Sorun şu: `Joi.string().email({ multiple: true })` kullanarak birden fazla e-postayı doğrularken, kütüphane ayırıcı regex'i yanlış derliyor. Başında sabitleme olmayan greedy whitespace quantifier yer alıyor. Saldırgan uzun bir boşluk dizisi gönderdiğinde, `String.prototype.split()` işlemi ikinci dereceden (quadratic) zaman karmaşıklığıyla çalışıyor. Bu da Node.js'nin tek iş parçacığını tamamen bloke ediyor ve sunucu yanıt vermez hale geliyor.
Praktik örnek: Eğer senin Node.js uygulaması form aracılığıyla e-posta listesi kabul ediyorsa ve Joi doğrulaması yapıyorsa, bir saldırgan 10.000+ boşluk karakteri içeren bir payload göndererek sunucunu dondurabilir. Kimlik doğrulama gerekmiyor; herkese açık bir endpoint yeterli.
CVE-2026-118772 detaylı analizi burada mevcut.
Çözüm basit: Joi'yi 17.13.9 veya 18.3.1 ve üzeri sürümlere güncelle. Eğer hemen güncelleyemiyorsan, e-posta doğrulamasında `{ multiple: true }` seçeneğini geçici olarak devre dışı bırak ya da gelen veriyi uzunluk sınırıyla kontrol et. Boşluk karakterlerinin ardışık sayısını sınırlamak da işe yarar.
0 yorum