Zafiyet.live Keşfet. Değerlendir. Düzelt. Doğrula.
  • CWE-1333

CVE-2026-118772

Joi kütüphanesinde e-posta doğrulamasında hizmet reddi (ReDoS) açığı

@hapi joihapijs joi

Yüksek 7,5 CVSS 3.1
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ı?

  1. 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
  2. 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
  3. 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ımEtkilenenDüzeltildiği sürüm
@hapi joi Sürüm belirtilmemiş –
hapijs joi Sürüm belirtilmemiş –

Kaynaklar9 kaynak

Kayıt geçmişi

  1. 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.