CVE-2026-85515
Təsvir
Java üçün Bouncy Castle versiya 1.86-dan əvvəlki versiyalarda kəsilmiş OpenPGP şifrəli mesajı heç bir xəta olmadan qəbul edilirdi və SEIPD versiya 1 yolunda heç bir bütövlük yoxlaması aparılmırdı. RFC 9580 bölmə 13.7 tətbiqin axın zamanı tam autentifikasiya edilmiş hissələrin açıq mətnini təqdim etməsinə icazə verir, lakin kəsim aşkar edildiyi an aydın xətanın göstərilməsini və dəyişdirilə bilən şifrəli mətn aşkar edildikdə şübhəli bütövlüyün bildirilməsini tələb edir. Kəsim aşkar edilir və sonra gözardı edilirdi: mesaj kəsilmiş olsa da, onu əhatə edən paketinin uzunluq sahəsi dəyişməzdən qaldıqda, BCPGInputStream.PartialInputStream çatışmayan şifrəli mətn üçün EOFException xətası verir və BCPGInputStream.nextPacketTag() EOFException xətasını mesajın normal sonu kimi bildirir, beləliklə onun üzərindəki paket axını sanki heç bir paket qalmamış kimi dayanır. AEAD yolunda (SEIPD versiya 2 və versiya 5 AEAD paketi), hərfi məlumat paketi AEAD hissə sərhədində bitdikdə və istehlakçı bir hissədən kiçik artımlarla oxuduqda, hərfi mətndən sonrakı paket üçün öncədən baxış kəsilmiş hissənin oxunmasını tetikləyirdi, buna görə də BcAEADUtil və JceAEADUtil ümumi açıq mətn uzunluğunu autentifikasiya edən bölmə 5.13.2-nin sonuncu mesaj teginə heç vaxt çatmırdı; çağırıcı tam autentifikasiya edilmiş hissələrin açıq mətnini alırdı, hərfi mətndən sonrakı hər bir paket səssizcə atılırdı və heç bir istisna (exception) törətmirdi, nəticədə imzalanmış və şifrələnmiş mesaj düzgün formalaşdırılmış imzalanmamış mesaj kimi oxunurdu. Həmin yolda təqdim olunan hər bir bayt fərdi olaraq autentifikasiya olunmuşdur, bu da bunu saxtakarlıqdan ziyada çatışmayan kəsim xətası edir və bu, xarici paket uzunluğunu düzəldən hücumçu üçün eyni nəticəni bağlayan CVE-2026-12817 boşluğunun qalıqdır. SEIPD versiya 1 yolunda nəticə daha ciddi idi: IntegrityProtectedInputStream close() funksiyasından modifikasiyanın aşkarlanma kodunu yoxlayır və close() funksiyasına yalnız oxuma əməliyyatı -1 qaytardıqda özünü bağlamaqla çatırdı, lakin kəsilmiş mesaj heç vaxt bunu törətmirdi, buna görə də PGPEncryptedData.verify() heç vaxt işləmirdi və qəbul edənə heç bir növ bütövlük yoxlaması aparılmamış CFB-dekripsiya edilmiş açıq mətn verilirdi. Bu formada kəsilmiş mesajda aparılan ölçümlərdə, şifrəli mətnə edilən 136 müxtəlif tək-baytlıq dəyişikliklər heç bir istisna törətmədən qəbul edilmiş dəyişdirilmiş açıq mətn yaratdı. Əlçatanlıq hücumçu tərəfindən təqdim edilən girişdən çox, mesajın xüsusiyyətidir: ölçülən 131 ardıcıl yük uzunluğundan 3-ündə AEAD forması, on altı yükləmə uzunluğundan birində isə SEIPD versiya 1 forması müşahidə edildi və kəsim ofseti yük uzunluğu ilə birlikdə dəyişmədi. Aşağı səviyyəli API-yə təsir etmir; PGPEncryptedData.verify() funksiyasını birbaşa çağıran şəxs yoxlamanı hər halda alır, habelə bütün AEAD hissəsi və ya daha böyük artımlarla oxuyan istehlakçılara təsir etmir. AEAD dekripsiya axınları artıq belə bir EOFException xətasını adi IOException kimi yenidən atır və nextPacketTag() bunu gizlətmir; OpenPGPMessageInputStream.close() artıq həmin axının məlumatlarının sonunu gördüyünə güvənmək əvəzinə, öz layerinin bütövlüyü qorunan axınını özü bağlayır; və IntegrityProtectedInputStream.close() java.io.Closeable tələbinə uyğun olaraq idempotent edildi, çünki axın adi yolda həqiqətən iki dəfə bağlanır və PGPEncryptedData.verify() onun arxasındakı dayest (digest) vəziyyətini istifadə edir və ikinci dəfə işlədilə bilməz. Bu problem həmçinin Java üçün Bouncy Castle LTS versiya 2.73.13-dən əvvəlki versiyalara yalnız AEAD marşrutunda təsir edir, çünki həmin nəşr SEIPDv1 marşrutunun keçdiyi yüksək səviyyəli OpenPGP API-ni təmin etmir. O, həmçinin Java üçün Bouncy Castle FIPS (BC-FJA) bcpg-fips 1.0.14 (1.0.X seriyası), 2.0.14.1 (2.0.X seriyası) və 2.1.14 (2.1.X seriyası) versiyalarından əvvəlkilərə yalnız AEAD marşrutunda təsir edir, çünki həmin nəşrlər yüksək səviyyəli OpenPGP API-ni təmin etmir.
Necə düzəltmək olar
- Legion of the Bouncy Castle Inc. BC-FJA1.0.14, 2.0.14.1, 2.1.14 və ya daha yeni versiya
- Legion of the Bouncy Castle Inc. BC-JAVA1.86 və ya daha yeni versiya
- Legion of the Bouncy Castle Inc. BC-LTS-JAVA2.73.13 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Legion of the Bouncy Castle Inc. BC-FJA | 1.0.7 ≤ v < 1.0.14, 2.0.7 ≤ v < 2.0.14.1, 2.1.0 ≤ v < 2.1.14 | 1.0.14, 2.0.14.1, 2.1.14 |
| Legion of the Bouncy Castle Inc. BC-JAVA | 1.74 ≤ v < 1.86 | 1.86 |
| Legion of the Bouncy Castle Inc. BC-LTS-JAVA | 2.73.0 ≤ v < 2.73.13 | 2.73.13 |
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.