CVE-2026-71887
Açıklama
Bouncy Castle for Java 1.86 öncesi sürümlerde, yüksek seviyeli OpenPGP API'si, alt anahtar bağlama imzasının gömülü bir Birincil Anahtar Bağlama (çapraz sertifikalandırma) imzası taşımadığı ve bu bağlamanın bir Key Flags alt paketini atladığı durumlarda, bir imzalama alt anahtarı tarafından oluşturulan veri imzasını kabul ediyordu. RFC 9580 bölüm 5.2.1.8 ve bölüm 10.1.3, imza oluşturabilen her alt anahtar üzerinde gömülü Birincil Anahtar Bağlama imzası gerektirir; bu, alt anahtarın bağlı olduğu birincil anahtara ait olduğuna dair kendi beyanıdır. OpenPGPCertificate, alt anahtarın key flag'lerini iki farklı şekilde çözümlüyordu. isSigningKey() metodu, getKeyFlags() ve getApplyingSubpacket() üzerinden işlem yapar; bağlama imzası alt paketi atladığında birincil anahtarın doğrudan anahtar veya birincil Kullanıcı Kimliği öz-imzasına geri döner, böylece alt anahtar birincilin SIGN_DATA özelliğini miras alır ve imzalama yeteneğine sahip olarak sayılır. Gereksinimi zorunlu kılan verifyEmbeddedPrimaryKeyBinding() ise bağlama imzasının kendi özetlenmiş alt paketlerini okur, orada SIGN_DATA bulamaz ve geri imzasını hiç talep etmeden imzalama yetkisi olmayan bir anahtar olarak erken dönüş yapar. Bu nedenle aynı alt anahtar, GnuPG'nin aynı sertifika ve mesajı reddettiği çapraz sertifikasyondan muaf kalırken, imzalama yeteneğine sahip görünüyordu; dolayısıyla imzaları sertifikaya atfediliyor ve OpenPGPSignature.OpenPGPDocumentSignature.isValid() true değerini döndürüyordu. Bir saldırganın yalnızca kurbanın herkese açık olan imzalama alt anahtarına ihtiyacı vardır: Saldırgan bunu, herhangi bir Key Flags ve (alt anahtarın özel anahtarı olmadan oluşturamayacakları) gömülü Birincil Anahtar Bağlama imzası içermeyen, kendilerinin oluşturabildiği bir Alt Anahtar Bağlama imzası ile kendi birincil anahtarlarına bağlar. Kurbanın gerçekten imzalanmış mesajlarından birini bu sertifikaya karşı doğrulayan güvenilir bir taraf, imzanın geçerli olduğu bilgisini alır ve yayıncı olarak saldırganın sertifikası sunulur. Sertifikanın Kullanıcı Kimlikleri kendi beyanına dayandığından, kimliği çevreleyen sertifikadan alırken alt anahtarın parmak izine veya anahtar kimliğine odaklanan bir doğrulayıcı, gerçek bir imzayı saldırgan tarafından seçilen bir kimlik altında raporlar. Bu durum yeni bir imzanın taklidi değil, gerçek bir imzanın yanlış atfedilmesidir: hiçbir özel anahtar ele geçirilmez ve imza, eklenen alt anahtarın gerçekten oluşturduğu bir imza olmalıdır. Düşük seviyeli PGPSignature / PGPPublicKeyRing API'si tasarım gereği hiçbir bağlama kontrolü yapmaz ve etkilenmez. Key Flags, taşıyan imzanın referans verdiği anahtar hakkında bir beyandır (RFC 9580 bölüm 5.2.3.29), bu nedenle bir alt anahtar artık bunları birincil anahtarın sertifika genelindeki imzalarından miras almaz: alt paketi atlayan bir Alt Anahtar Bağlama imzası, artık alt anahtarı birincilin yetenekleriyle değil, hiçbir yetenekle bırakır; bu da bayrakların, çapraz sertifikasyon kontrolünün danıştığı bayraklarla diğer tüm kararların danıştığı bayrakların aynı olmasını sağlar. Tercihler ve doğrudan anahtar imzasının taşıdığı diğer alt paketler eskiden olduğu gibi miras alınmaya devam eder ve bayrakları meşru olarak kendi doğrudan anahtar veya Kullanıcı Kimliği öz-imzasından gelen birincil anahtarın kendisi etkilenmez.
Nasıl düzeltilir
- Legion of the Bouncy Castle Inc. BC-JAVA1.86 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Legion of the Bouncy Castle Inc. BC-JAVA | 1.81 ≤ v < 1.86 | 1.86 |
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.