CVE-2026-85515

Yüksek

Açıklama

1.86 öncesindeki Bouncy Castle for Java sürümünde, kesilmiş bir OpenPGP şifreli mesajı herhangi bir hata raporlanmadan kabul ediliyordu ve SEIPD versiyon 1 yolunda hiçbir bütünlük kontrolü gerçekleştirilmiyordu. RFC 9580 bölüm 13.7, akış sırasında tam olarak kimliği doğrulanmış parçaların açık metninin yayınlanmasına izin verir ancak kesilme tespit edilir edilmez net bir hata belirtilmesini ve değiştirilebilir şifreli metin keşfedildiğinde şüpheli bütünlüğün raporlanmasını gerektirir. Kesilme tespit edilmiş ancak ardından göz ardı edilmiştir: Bir mesaj kesildiğinde ancak çevreleyen paketin uzunluk alanı değişmeden kaldığında, BCPGInputStream.PartialInputStream eksik şifreli metin için bir EOFException fırlatır ve BCPGInputStream.nextPacketTag() temiz bir mesaj sonu olarak bir EOFException bildirir, böylece üzerindeki paket akışı sanki hiç paket kalmamış gibi dururdu. AEAD yolunda (SEIPD versiyon 2 ve versiyon 5 AEAD paketi), literal veri paketi bir AEAD parça sınırında sona erdiğinde ve tüketici bir parçadan daha küçük artışlarla okuma yaptığında, literalden sonraki paket için yapılan ön bakış kesilmiş parça okumasını tetiklerdi; bu nedenle BcAEADUtil ve JceAEADUtil, toplam açık metin uzunluğunu doğrulayan bölüm 5.13.2'deki sondaki mesaj etiketine asla ulaşamazdı; çağırıcı, tam olarak kimliği doğrulanmış parçaların açık metnini alır, literali takip eden her paket sessizce düşürülür ve hiçbir istisna fırlatılmazdı, böylece imzalı ve şifreli bir mesaj, düzgün biçimlendirilmiş imzasız bir mesaj olarak okunurdu. Bu yolda yayınlanan her bayt bireysel olarak doğrulanmaya devam ettiğinden, bu durum bir sahtecilikten ziyade eksik bir kesilme hatasıdır ve dış paket uzunluğunu düzelten bir saldırgan için aynı sonucu kapatan CVE-2026-12817'nin bir kalıntısıdır. SEIPD versiyon 1 yolundaki sonuç daha ciddiydi: IntegrityProtectedInputStream, close() fonksiyonundan gelen değişiklik algılama kodunu doğrular ve close()'a yalnızca kendisinden yapılan bir okuma -1 döndürdüğünde kendini kapatarak ulaşırdı; kesilmiş bir mesaj ise bunu asla üretmez, dolayısıyla PGPEncryptedData.verify() hiçbir zaman çalışmazdı ve alıcıya üzerinde hiçbir türde bütünlük kontrolü yapılmamış olan CFB ile çözümlenmiş açık metin sunulurdu. Bu şekilde kesilmiş bir mesaj üzerinde yapılan ölçümlerde, şifreli metne yapılan 136 farklı tek baytlık değişiklik, hiçbir istisna fırlatılmadan kabul edilen değiştirilmiş açık metinler üretmiştir. Erişilebilirlik, saldırgan tarafından sağlanan girdiden ziyade mesajın bir özelliğidir: AEAD yapısı ölçülen 131 ardışık yük uzunluğundan 3'ü için geçerliydi ve SEIPD versiyon 1 yapısı, yük uzunluğuyla birlikte hareket etmeyen bir kesilme ofsetinde on altıda bir yük uzunluğu için geçerliydi. Düşük seviyeli API etkilenmemiştir; PGPEncryptedData.verify() fonksiyonunu doğrudan çağıran bir çağırıcı kontrole her durumda ulaşır, aynı şekilde tüm bir AEAD parçası veya daha fazlası şeklinde okuma yapan tüketiciler de etkilenmemiştir. AEAD şifre çözme akışları artık böyle bir EOFException'ı düz bir IOException olarak yeniden fırlatmaktadır ve nextPacketTag() bunu gizlememektedir; OpenPGPMessageInputStream.close() artık o akışın verilerinin sonuna geldiğine güvenmek yerine kendi katmanının bütünlük korumalı akışını kendisi kapatmaktadır; ve IntegrityProtectedInputStream.close(), java.io.Closeable'ın gerektirdiği üzere idempotent hale getirilmiştir çünkü akış normal yolda gerçekten iki kez kapatılır ve PGPEncryptedData.verify() arkasındaki özet durumunu tükettiği için ikinci kez çalıştırılamaz. Bu sorun ayrıca 2.73.13 öncesindeki Bouncy Castle for Java LTS sürümünü sadece AEAD rotasında etkilemektedir, çünkü bu sürüm SEIPDv1 rotasının üzerinden geçtiği yüksek seviyeli OpenPGP API'sini içermez. Ayrıca Bouncy Castle for Java FIPS (BC-FJA) sürümlerini bcpg-fips 1.0.14 (1.0.X serisi), 2.0.14.1 (2.0.X serisi) ve 2.1.14 (2.1.X serisi) öncesinde, yine sadece AEAD rotasında etkilemektedir, çünkü bu sürümler yüksek seviyeli OpenPGP API'sini içermez.

ÖnemYüksek
CVSS8.2
İstismar olasılığı—
ÜrünBC-FJA
Yayın3 Eki 2026
İlk görülme3 Eki 2026

Nasıl düzeltilir

Güncelleyin
  • Legion of the Bouncy Castle Inc. BC-FJA1.0.14, 2.0.14.1, 2.1.14 ya da sonraki bir sürüm
  • Legion of the Bouncy Castle Inc. BC-JAVA1.86 ya da sonraki bir sürüm
  • Legion of the Bouncy Castle Inc. BC-LTS-JAVA2.73.13 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
Legion of the Bouncy Castle Inc. BC-FJA1.0.7 ≤ v < 1.0.14, 2.0.7 ≤ v < 2.0.14.1, 2.1.0 ≤ v < 2.1.141.0.14, 2.0.14.1, 2.1.14
Legion of the Bouncy Castle Inc. BC-JAVA1.74 ≤ v < 1.861.86
Legion of the Bouncy Castle Inc. BC-LTS-JAVA2.73.0 ≤ v < 2.73.132.73.13

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.

Intelligence 360 paketinde

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.

CVE-2026-85515 · BC-FJA · Dark Radar