CVE-2026-18401
Açıklama
jackson-core içindeki engellemesiz (asenkron) JSON ayrıştırıcısı, StreamReadConstraints içinde tanımlanan maxNumberLength kısıtlamasını (varsayılan: 1000 karakter) uygulamaz. Asenkron ayrıştırıcı API'sini kullanan bir uygulamaya JSON gönderebilen bir saldırgan, keyfi uzunlukta bir sayı belirteci sağlayarak aşırı bellek tahsisine ve potansiyel CPU tükenmesine yol açabilir; bu da hizmet reddi ile sonuçlanır. Senkron ayrıştırıcı bu sınırı doğru şekilde uygular; dolayısıyla kısıtlama, uygulamanın hangi ayrıştırma API'sini kullandığına bağlı olarak tutarsız biçimde uygulanır. Kök neden: NonBlockingUtf8JsonParserBase ve ilgili sınıflardaki asenkron ayrıştırma yolu, sayı uzunluğu doğrulama yöntemlerini hiçbir zaman çağırmaz. _finishNumberIntegralPart() gibi sayı ayrıştırma yöntemleri, rakamları herhangi bir uzunluk kontrolü olmadan TextBuffer içinde biriktirir ve ardından belirteci sonlandırmak için _valueComplete() çağrısını yapar. _valueComplete(), ParserBase içinde validateIntegerLength() ve validateFPLength() işlemlerinin gerçekleştirildiği yöntemler olan resetInt() veya resetFloat() çağrısını yapmaz. Bu doğrulama adımı atlandığı için maxNumberLength, asenkron kod yolunda hiçbir zaman uygulanmaz. Etki: Asenkron ayrıştırıcıyı kullanan bir uygulamaya (örneğin bir Spring WebFlux veya başka bir reaktif uygulama) keyfi uzunlukta bir sayı içeren bir JSON belgesi gönderen bir saldırgan, TextBuffer içinde sınırsız tahsise ve bir OutOfMemoryError'a neden olabilir. Uygulama daha sonra getBigIntegerValue() veya getDecimalValue() çağrısını yaparsa, JVM ek olarak O(n^2) BigInteger ayrıştırmasıyla meşgul edilebilir ve CPU tabanlı hizmet reddine yol açılabilir. Ayrıştırma için veri gönderme yeteneği dışında hiçbir ayrıcalık veya kullanıcı etkileşimi gerekmez. Bu sorun, com.fasterxml.jackson.core:jackson-core paketini 2.15.0 sürümünden 2.18.5 sürümüne kadar ve 2.19.0 sürümünden 2.21.0 sürümüne kadar, tools.jackson.core:jackson-core paketini ise 3.0.0 sürümünden 3.0.x sürümüne kadar etkiler. 2.15.0 öncesi sürümler etkilenmez; çünkü maxNumberLength ayarını tanımlayan StreamReadConstraints ilk olarak jackson-core 2.15.0 sürümünde sunulmuştur, dolayısıyla önceki sürümlerde atlatılabilecek böyle bir kısıtlama mevcut değildir. GHSA-72hv-8253-57qq kaydının, etkilenen 2.x aralığının alt sınırını 2.0.0 olarak belirttiğini unutmayın.
Nasıl düzeltilir
- tools.jackson.core:jackson-core3.1.0 ya da sonraki bir sürüm
- com.fasterxml.jackson.core:jackson-core2.21.1, 2.18.6 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| tools.jackson.core:jackson-coreMaven | 3.0.0 ≤ v < 3.1.0 | 3.1.0 |
| com.fasterxml.jackson.core:jackson-coreMaven | 2.19.0 ≤ v < 2.21.1, 2.15.0 ≤ v < 2.18.6 | 2.21.1, 2.18.6 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.