CVE-2026-67211
Təsvir
Apache OpenNLP SymSpellModelSerializer-də məhdudiyyətsiz Map ön-ölçüləndirməsi vasitəsilə OOM Xidmətdən İmtina (DoS) Təsirə məruz qalan versiyalar: - 3.0.0-M4 - 3.0.0-M5 (opennlp-spellcheck genişlənməsi 3.0.0-M4 versiyasında təqdim edilmişdir. 1.x və 2.x buraxılışları təsirlənən kodu ehtiva etmir.) Təsvir: SymSpellModelSerializer.create() metodu ikili SymSpell model axınından iki 32-bitlik imzalı tam ədəd say sahəsini (unigramCount və bigramCount) oxuyur və yalnız onların mənfi olmadığını yoxladıqdan sonra hər bir dəyəri birbaşa LinkedHashMap.newLinkedHashMap() metoduna ötürür. Heç bir yuxarı hədd tətbiq edilmədiy üçün, model faylı etibarsız mənbədən gəldikdə, bu say tamamilə hücum edənin nəzarətində olur. Hər hansı bir say sahəsinin Integer.MAX_VALUE (və ya mövcud heap yaddaşını tükətmək üçün kifayət qədər böyük hər hansı bir dəyər) olaraq təyin edildiyi xüsusi hazırlanmış .bin model faylı, xəritənin (map) tutumunun 2^30 girişə öncədən ölçülməsinə səbəb olur. Həddindən artıq böyük olan dayaq massivi həmin xəritəyə ilk put() əməliyyatı zamanı ayrılır; sıxılmış oops-ların aktiv olub-olmamasından asılı olaraq 4–8 QB yaddaş tələb olunur və yükləmə prosesi OutOfMemoryError ilə uğursuz olur. Say sahələri sabit ölçülü başlıqdan (magic, format versiyası, üç UTF sətiri, konfiqurasiya sahələri və redaktə məsafəsi identifikatoru) dərhal sonra yerləşdiyi üçün, hücum edən zərərli fayl yaratmaq üçün əhəmiyyətli ölçü xərci çəkmir: 100 baytdan çox az olan bir fayl və tək bir real giriş onu yükləyən JVM-ni çökdürmək üçün kifayətdir. SymSpell modelini deserializasiya edən bütün kod yolları, o cümlədən SymSpellModels.deserialize(InputStream), SymSpellModels.fromBytes(byte[]), SymSpellModelResolver.resolveByLanguage(String) vasitəsilə classpath model yükləməsi, CorrectTextTool komanda sətri aləti və qeydiyyatdan keçmiş ArtifactSerializer vasitəsilə model-arxiv yükləməsi buna təsirlənir. opennlp-spellcheck genişlənməsi rəsmi OpenNLP ikili distribyusiyasında təqdim olunur. Praktiki təsir, etibarsız və ya yarı-etibarlı mənbələrdən SymSpell model fayllarını yükləyən proseslərə qarşı xidmətdən imtina (denial of service) şəklindədir. Yüngülləşdirmə: - 3.x istifadəçiləri 3.0.0-M6 versiyasına yüksəltmə etməlidirlər. Qeyd: Düzəliş, xəritə ön-ölçüləndirmədən əvvəl yoxlanılan hər iki say sahəsinə yuxarı hədd tətbiq edir; mənfi olan və ya həddi aşan saylar IOException xətasının atılmasına və böyük yaddaş ayırmadan oxuma prosesinin sürətli şəkildə uğursuz olmasına səbəb olur. Bu hədd, daha əvvəl təqdim edilmiş mövcud AbstractModelReader.MAX_ENTRIES limitidir ki, cari dəyişiklik öz ikili formatını tətbiq edən serializer-lərin ondan istifadə edə bilməsi üçün onu public görünürlüyə gətirir. Defolt hədd 10,000,000-dır ki, bu da legitim SymSpell lüğətlərinin giriş saylarından xeyli yüksək, lakin heap yaddaşının tükənməsinə təhlükə törədəcək hər hansı bir dəyərdən çox aşağıdır. Daha böyük lüğətləri yükləməyə ehtiyacı olan sistemlərdə JVM startında OPENNLP_MAX_ENTRIES sistem xassəsini istənilən müsbət tam ədədə təyin etməklə (məsələn, -DOPENNLP_MAX_ENTRIES=50000000) limiti artırmaq mümkündür; etibarsız və ya qeyri-müsbət dəyərlər defolta qayıdır. Qeyd edin ki, bu xassə model-reader limiti ilə ortaqdır və onun artırılması hər iki limiti yumşaldır. Təcili yüksəltmə edə bilməyən istifadəçilər, mənşəyi təsdiqlənmədikcə bütün SymSpell .bin model fayllarına etibarsız giriş kimi baxmalı və son istifadəçilər tərəfindən təqdim edilən və ya bütövlük yoxlamaları olmadan üçüncü tərəf repozitoriyalarından götürülən modellərin yüklənməsindən qaçmalıdırlar.
Necə düzəltmək olar
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| apache opennlp | 3.0.0 | — |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.