- Yama var
- Son 7 gün
- CWE-190
CVE-2026-104016
jackson-dataformat-protobuf: String uzunluğunda taşma, sınırsız bellek ayırma ve OutOfMemoryError
- Yayımlandı
- Güncellendi
- 28 Eki 2026
- Açık yaşı
- 0 gün
- Kaydı açan
- HeroDevs
Yönetici özeti
Protobuf verisi işleyen bazı Java uygulamalarında, tek bir kötü niyetli istekle servisin çökertilebildiği bir açık bulunmuştur. Bu, çevrimiçi hizmetlerin kesintiye uğramasına ve müşteri erişiminin aksamasına yol açabilir. Kullanılan kütüphaneyi hemen güncellemek önerilir.
ÖzetTürkçe
jackson-dataformat-protobuf kütüphanesinde ProtobufParser, uzunluk öneki taşıyan string ve bytes alanlarını işlerken 32 bit işaretli tamsayı aritmetiği kullanır. Saldırgan, Integer.MAX_VALUE değerine yakın bir uzunluk içeren varint gönderebilir; bu durumda sınır kontrolü taşma nedeniyle geçer ve kütüphane çok büyük bir dizi için bellek ayırmaya çalışır. Etkilenen sürümler 2.6.0 ile 2.18.12 öncesi, 2.19.0 ile 2.21.8 öncesi, 2.22.0 ile 2.22.4 öncesi, 3.0.0 ile 3.1.8 öncesi ve 3.2.0 ile 3.2.4 öncesidir.
Saldırgan ne yapabilir?
Saldırgan, kısa bir veri ile ayrıştırma işleminde OutOfMemoryError oluşturarak uygulamayı çökertebilir ve hizmet dışı kalmasına (DoS) neden olabilir. JVM bellek ayarları bu durumu engellemez; StreamReadConstraints ile yapılan uzunluk sınırları da bu yolu kapatmaz.
Kaynaktaki açıklama (İngilizce)
ProtobufParser parses length-prefixed protobuf string and bytes fields by checking (_inputPtr + len) <= _inputEnd and then, on the fast path, calling _finishShortText(len). Both use 32-bit signed integer arithmetic. When an attacker supplies a varint decoding to a length near Integer.MAX_VALUE, _inputPtr + len overflows to a negative value, the bounds check passes, and _finishShortText(len) reaches TextBuffer.expandCurrentSegment(len), which performs Arrays.copyOf with no cap and throws OutOfMemoryError: Requested array size exceeds VM limit.
The JVM refuses arrays larger than Integer.MAX_VALUE - 8 before consulting available heap, so -Xmx tuning does not mitigate the issue. StreamReadConstraints.maxStringLength and maxDocumentLength do not gate this path: a 33-byte payload is far below any document-length cap and the string-length check does not fire before the allocation. This was confirmed empirically against shipping artifacts with maxStringLength, maxDocumentLength and maxNestingDepth all configured.
A February 2026 hardening commit added the equivalent overflow guard to the packed-array-length and message-length paths but left the string-length call sites unguarded. No privileges or user interaction beyond the ability to submit data for parsing are required.
Ne yapmalı?
- jackson-dataformat-protobuf kütüphanesini, etkilenen dal için belirtilen düzeltilmiş sürüme yükseltin: 2.18.12, 2.21.8, 2.22.4, 3.1.8 veya 3.2.4 (kullandığınız dala uygun olan). Üretici
- Güncelleme yapılana kadar, protobuf verisini kabul eden uç noktaları güvenilmeyen kaynaklara kapatmayı ya da bu girdileri bir ters vekil sunucu veya ağ geçidi üzerinden filtrelemeyi değerlendirin. Genel öneri
- Uygulamanızın bağımlılık ağacında bu kütüphanenin hangi sürümünün kullanıldığını doğrulayın ve dağıtımları yeniden yapın. Genel öneri
Ek önlemler
- Dışarıdan alınan protobuf verilerinin boyutunu ağ katmanında ve uygulama düzeyinde sınırlandırın. Genel öneri
- OutOfMemoryError ve ani bellek artışları için izleme ve uyarı kuralları oluşturun. Genel öneri
- Güvenlik bültenlerini ve bağımlılık tarama araçlarının uyarılarını düzenli olarak takip edin. Genel öneri
Etkilenen sürümler1 yazılım
| Yazılım | Etkilenen | Düzeltildiği sürüm |
|---|---|---|
| FasterXML jackson-dataformat-protobuf | ≥ 2.6.0, < 2.18.12 | 2.18.12 |
| 2.18.12 Etkilenmiyor | – | |
| ≥ 2.19.0, < 2.21.8 | 2.21.8 | |
| 2.21.8 Etkilenmiyor | – | |
| ≥ 2.22.0, < 2.22.4 | 2.22.4 | |
| 2.22.4 Etkilenmiyor | – | |
| ≥ 3.0.0, < 3.1.8 | 3.1.8 | |
| 3.1.8 Etkilenmiyor | – | |
| ≥ 3.2.0, < 3.2.4 | 3.2.4 | |
| 3.2.4 Etkilenmiyor | – |
Kaynaklar3 kaynak
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.