- CWE-1333
CVE-2026-118772
Joi kütüphanesinde e-posta doğrulamasında hizmet reddi (ReDoS) açığı
- Yayımlandı
- Güncellendi
- 4 Kas 2026
- Açık yaşı
- 8 gün
- Kaydı açan
- GitHub_M
Yönetici özeti
Bu açık, kullanıcıdan gelen e-posta alanlarını doğrulayan Joi tabanlı uygulamaların hizmet dışı kalmasına neden olabilir. Tek bir kötü niyetli istek bile sistemi kısa süreliğine yavaşlatabilir veya durdurabilir. Etkilenen uygulamaların hızlıca güncellenmesi, müşteri deneyimi ve hizmet sürekliliği açısından önemlidir.
ÖzetTürkçe
Joi, JavaScript için şema tanımlama ve veri doğrulama kütüphanesidir. 17.1.1 ile 17.13.9 arası sürümlerde (ayrıca 18.3.1 sürümünde) Joi.string.email({ multiple: true }) kuralı, ayırıcı için kullanılan düzenli ifadede verimsiz bir yapı içerir. Ayırıcı içermeyen uzun boşluk dizilerinde bu yapı konumdan konuma yeniden denendiğinden, split işlemi karesel zaman alır. Bu durum hem varsayılan ayırıcı hem de özel ayırıcılar için geçerlidir.
Saldırgan ne yapabilir?
Saldırgan, uzunluğu sınırlanmamış ve özel olarak hazırlanmış bir değer göndererek Node.js olay döngüsünü saniyeler boyunca bloke edebilir; bu da aynı süreçteki diğer isteklerin işlenmesini engeller.
Kaynaktaki açıklama (İngilizce)
joi is a schema description language and data validator for JavaScript. From 17.1.1 until 17.13.9 and 18.3.1, the Joi.string().email({ multiple: true }) rule uses a separator regular expression whose leading whitespace quantifier is retried at every position in a long whitespace run that contains no separator, causing quadratic work during String.prototype.split. The behavior applies to the default separator and every custom separator. Applications that validate attacker-controlled values with the multiple option and no effective prior length limit can have the Node.js event loop blocked for seconds by one request, preventing other work. A .max() rule is not sufficient when abortEarly: false allows the email rule to run after the maximum-length check fails. This vulnerability is fixed in versions 17.13.9 and 18.3.1.
Ne yapmalı?
- Joi kütüphanesini düzeltilmiş sürüm olan 17.13.9 veya 18.3.1 sürümüne yükseltin. Genel öneri
- Yükseltme yapamıyorsanız, multiple seçeneğiyle doğrulanan değerlere uygulama katmanında makul bir üst uzunluk sınırı koyun ve bu kontrolü e-posta kuralından önce çalıştırın; .max kuralının tek başına yeterli olmadığını unutmayın, çünkü abortEarly: false ayarı e-posta kuralının yine çalışmasına izin verebilir. Genel öneri
- Yükseltme sonrasında bağımlılık ağacını kontrol edin; Joi'yi kullanan alt bağımlılıkların da güncellendiğinden emin olun. Genel öneri
Ek önlemler
- Dış kaynaklardan gelen metin alanlarına, doğrulama başlamadan önce istek gövdesi ve alan bazında boyut limitleri uygulayın. Genel öneri
- Olay döngüsü gecikmelerini ve yanıt sürelerindeki ani artışları izleyerek olası hizmet reddi girişimlerini erken fark edin. Genel öneri
Etkilenen sürümler2 yazılım
| Yazılım | Etkilenen | Düzeltildiği sürüm |
|---|---|---|
| @hapi joi | Sürüm belirtilmemiş | – |
| hapijs joi | Sürüm belirtilmemiş | – |
Kaynaklar9 kaynak
- CVE.org kaydı
- NVD kaydı
- github.com/…js/joi/security/advisories/GHSA-4528-x5fx-h6hg Diğer
- github.com/hapijs/joi/pull/3162 Diğer
- github.com/hapijs/joi/pull/3163 Diğer
- github.com/…ommit/03dc1d909818503b06240dadc81e9227ed2649cf Diğer
- github.com/…ommit/807858d7480f5075b0610817e3e44230890fb18e Diğer
- github.com/hapijs/joi/releases/tag/v17.13.9 Diğer
- github.com/hapijs/joi/releases/tag/v18.3.1 Diğer
Kayıt geçmişi
- Yayımlandı
İlgili açıklar
Türkçe metin, resmi kayıtlardaki bilgilerle yapay zekâ yardımıyla yazıldı ve yayından önce otomatik kontrollerden geçti. Bir değişikliği uygulamadan önce üreticinin duyurusuna mutlaka bakın.