CVE-2026-85515
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W Bouncy Castle dla języka Java przed wersją 1.86 obcięta wiadomość zaszyfrowana w formacie OpenPGP została zaakceptowana bez zgłaszania błędów, a w ścieżce SEIPD w wersji 1 nie przeprowadzono żadnego sprawdzania integralności. RFC 9580 sek. Wersja 13.7 pozwala implementacji na uwolnienie jawnego tekstu w pełni uwierzytelnionych fragmentów podczas przesyłania strumieniowego, ale wymaga wskazania wyraźnego błędu natychmiast po wykryciu obcięcia i zgłoszenia podejrzanej integralności po wykryciu plastycznego tekstu zaszyfrowanego. Obcięcie zostało wykryte, a następnie odrzucone: gdy wiadomość zostanie obcięta, ale pole długości otaczającego pakietu pozostanie niezmienione, BCPGInputStream.PartialInputStream zgłasza wyjątek EOFException dla brakującego tekstu zaszyfrowanego, a BCPGInputStream.nextPacketTag() zgłasza wyjątek EOFException jako czysty koniec wiadomości, więc strumień pakietu powyżej zatrzymał się, jak gdyby nie pozostały żadne pakiety. Na ścieżce AEAD (pakiet AEAD SEIPD w wersji 2 i wersji 5), gdy dosłowny pakiet danych zakończył się na granicy fragmentu AEAD, a konsument czytał w odstępach mniejszych niż jeden fragment, wyczekiwanie pakietu po literale wyzwoliło odczyt obciętego fragmentu, więc BcAEADUtil i JceAEADUtil nigdy nie osiągnęły końcowego znacznika komunikatu o sekundach. 5.13.2, który uwierzytelnia całkowitą długość tekstu jawnego; osoba wywołująca otrzymała zwykły tekst w pełni uwierzytelnionych fragmentów, każdy pakiet następujący po literale został po cichu odrzucony i nie został zgłoszony żaden wyjątek, więc podpisana i zaszyfrowana wiadomość została odczytana jako dobrze uformowana, niepodpisana. Każdy bajt uwolniony na tej ścieżce pozostał indywidualnie uwierzytelniony, co oznacza raczej brakujący błąd obcięcia niż fałszerstwo i stanowi pozostałość CVE-2026-12817, który zamknął ten sam wynik dla atakującego, który korygował zewnętrzną długość pakietu. Na ścieżce SEIPD w wersji 1 konsekwencje były poważniejsze: IntegrityProtectedInputStream weryfikuje kod wykrywania modyfikacji z metody Close() i osiąga funkcję Close() tylko poprzez zamknięcie się, gdy jego odczytanie zwróciło wartość -1, czego obcięta wiadomość nigdy nie generuje, zatem funkcja PGPEncryptedData.verify() nigdy nie została uruchomiona, a odbiorca otrzymał zwykły tekst odszyfrowany za pomocą CFB, na którym nie przeprowadzono żadnego sprawdzania integralności. Zmierzone w wiadomości obciętej do tego kształtu, 136 odrębnych jednobajtowych modyfikacji otrzymanego tekstu zaszyfrowanego zaakceptowało zmieniony tekst jawny bez żadnych wyjątków. Osiągalność jest właściwością komunikatu, a nie danych wejściowych dostarczonych przez atakującego: kształt AEAD utrzymywany jest dla 3 ze 131 kolejnych zmierzonych długości ładunku, a kształt SEIPD w wersji 1 dla jednej długości ładunku na szesnaście, przy przesunięciu obcięcia, które nie zmienia się wraz z długością ładunku. Nie ma to wpływu na niskopoziomowy interfejs API, obiekt wywołujący wywołujący PGPEncryptedData.verify() bezpośrednio otrzymuje sprawdzenie, niezależnie od tego, podobnie jak konsumenci czytający w przyrostach całego fragmentu AEAD lub więcej. Strumienie deszyfrujące AEAD zgłaszają teraz taki wyjątek EOFException jako zwykły wyjątek IOException, którego funkcja nextPacketTag() nie prasuje; OpenPGPMessageInputStream.close() zamyka teraz sam strumień chroniony integralnością swojej warstwy, zamiast polegać na tym, że strumień zobaczył koniec swoich danych; i IntegrityProtectedInputStream.close() stała się idempotentna, zgodnie z wymaganiami Java.io.Closeable, od czego to zależy, ponieważ strumień jest rzeczywiście zamykany dwukrotnie na zwykłej ścieżce, a PGPEncryptedData.verify() zużywa znajdujący się za nim stan podsumowania i nie można go uruchomić po raz drugi. Ten problem dotyczy również Bouncy Castle dla Java LTS przed wersją 2.73.13, tylko na trasie AEAD, ponieważ ta edycja nie dostarcza wysokiego poziomu interfejsu API OpenPGP, przez który przebiega trasa SEIPDv1. Dotyczy to również Bouncy Castle dla Java FIPS (BC-FJA) przed bcpg-fips 1.0.14 (seria 1.0.X), 2.0.14.1 (seria 2.0.X) i 2.1.14 (seria 2.1.X), tylko na trasie AEAD, ponieważ te edycje nie dostarczają wysokiego poziomu API OpenPGP.
>_ Słabości (CWE)
>_ Referencje
Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.
This product uses the NVD API but is not endorsed or certified by the NVD.
Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org