CVE-2026-42440
Açıklama
Apache OpenNLP AbstractModelReader'da Sınırsız Dizi Tahsisi Yoluyla OOM Hizmet Reddi Etkilenen Versiyonlar: 1.9.5 öncesi 2.5.9 öncesi 3.0.0-M3 öncesi Açıklama: AbstractModelReader içerisindeki getOutcomes(), getOutcomePatterns() ve getPredicates() metodlarının her biri, ikili bir model akışından 32 bit imzalı tam sayı türünde bir sayım alanı okur ve bu değeri, değerin negatif olmadığını veya makul bir sınır içinde olduğunu doğrulamadan doğrudan bir dizi tahsisine (new String[numOutcomes], new int[numOCTypes][], new String[NUM_PREDS]) aktarır. Bu nedenle, model dosyası güvenilmeyen bir kaynaktan geldiğinde, sayım miktarı tamamen saldırganın kontrolündedir. Bu sayım alanlarından herhangi birinin Integer.MAX_VALUE (veya mevcut yığını tüketecek kadar büyük herhangi bir değere) ayarlandığı özel olarak hazırlanmış bir .bin model dosyası, ilgili etiket veya desen verileri akıştan tüketilmeden önce, dizi tahsisi sırasında bir OutOfMemoryError tetikler. Hata, serileştirmenin çok erken aşamalarında meydana gelir: Bir GIS modeli için getOutcomes() metoduna yalnızca model tipi dizesi, düzeltme sabiti ve düzeltme parametresi okunduktan sonra ulaşılır; böylece saldırgan, yükü silahlandırmak için anlamlı bir boyut maliyeti ödemez ve tek bir küçük dosya, kendisini yükleyen bir JVM'yi çökertebilir. GenericModelReader'ın doğrudan kullanımı ve model yükleme sırasında ona yetki veren tüm üst düzey bileşenler dahil olmak üzere, .bin modelini serileştiren tüm kod yolları etkilenmektedir. Pratik etkisi, model dosyalarını güvenilmeyen veya yarı güvenilir kaynaklardan yükleyen işlemlere karşı hizmet reddidir. Azaltma: * 2.x kullanıcıları 2.5.9 sürümüne yükseltmelidir. * 3.x kullanıcıları 3.0.0-M3 sürümüne yükseltmelidir. Not: Düzeltme, üç sayım alanının her biri için dizi tahsisinden önce kontrol edilen bir üst sınır getirir; negatif olan veya sınırı aşan sayımlar bir IllegalArgumentException fırlatılmasına neden olur ve okuma işlemi büyük bir tahsis yapılmadan hızla başarısız olur. Varsayılan sınır, meşru OpenNLP modellerinin giriş sayılarının oldukça üzerinde ancak yığın tükenmesini tehdit edecek herhangi bir değerin çok altında olan 10.000.000'dir. Varsayılandan daha fazla girişe sahip modelleri yüklemesi gereken dağıtımlar, OPENNLP_MAX_ENTRIES sistem özelliğini istenen pozitif tam sayıya ayarlayarak (örneğin -DOPENNLP_MAX_ENTRIES=50000000) limiti JVM başlangıcında artırabilir; geçersiz veya pozitif olmayan değerlerde varsayılan değere dönülür. Hemen yükseltme yapamayan kullanıcılar, kaynağı doğrulanmadığı sürece tüm .bin model dosyalarını güvenilmeyen girdi olarak değerlendirmeli ve son kullanıcılar tarafından sağlanan veya bütünlük kontrolleri yapılmadan üçüncü taraf depolardan alınan modelleri yüklemekten kaçınmalıdır.
Nasıl düzeltilir
- apache opennlp2.5.9 ya da sonraki bir sürüm
- org.apache.opennlp:opennlp-tools2.5.9, 3.0.0-M3, 1.9.5 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| apache opennlp | v < 2.5.9, 3.0.0 | 2.5.9 |
| org.apache.opennlp:opennlp-toolsMaven | v < 2.5.9, 3.0.0-M1 ≤ v < 3.0.0-M3, 2.0.0 ≤ v < 2.5.9, v < 1.9.5 | 2.5.9, 3.0.0-M3, 1.9.5 |
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.