Skip to content
Heist/ feed
High

OpenPGP certification accepted from a subkey without certification authority

Type: advisorySource: Official CVE List1 source record

In Bouncy Castle for Java before 1.86, the high-level OpenPGP certificate API accepted a third-party certification or trust delegation from any component key of the issuing certificate, without requiring that component to have been granted the authority to certify. OpenPGPCertificate.getCertificationBy() and getDelegationBy() resolve a third-party signature by matching its issuer key identifier against every key of the third-party certificate, then verify the issuing component's binding chain and the signature itself; nothing checked that the issuing component carried the RFC 9580 sec. 5.2.3.29 certification key flag (CERTIFY_OTHER) when the signature was created. A subkey bound only with SIGN_DATA - the online signing subkey of exactly the offline-primary arrangement those key flags exist to express - could therefore issue a positive User ID certification over an attacker-controlled identity, or a full-trust depth-one direct-key delegation of introducer trust, and the API returned it as a valid signature chain attributed to the third-party certificate. An application treating getCertificationBy(...).isValid() or getDelegationBy(...) as an identity or trusted-introducer decision would attribute the attacker's assertion to the offline primary key. The same held for a legacy RSA subkey bound only for encryption, whose algorithm is nonetheless able to sign. This does not forge the primary key's signature or recover any private key; it promotes an already-compromised restricted s

Announced Group revision 1
Original source ↗

CVE-2026-71886

Primary source · Revision 1

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: cve:CVE-2026-71886

BC-JAVA

Source reference: /containers/cna/affected/0/product

Affected versions
Not stated in this record
Fixed versions
Not stated in this record
Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "repo": "https://github.com/bcgit/bc-java",
    "vendor": "Legion of the Bouncy Castle Inc.",
    "modules": [
      "pg"
    ],
    "product": "BC-JAVA",
    "versions": [
      {
        "status": "affected",
        "version": "1.81",
        "lessThan": "1.86",
        "versionType": "maven"
      }
    ],
    "platforms": [
      "all"
    ],
    "packageURL": "pkg:maven/org.bouncycastle/bcpg-jdk18on",
    "packageName": "bcpg",
    "programFiles": [
      "OpenPGPCertificate"
    ],
    "collectionURL": "https://www.bouncycastle.org/download/bouncy-castle-java/",
    "defaultStatus": "unaffected"
  }
]
Related CVEs
CVE-2026-71886

Source reference: /cveMetadata/cveId

Publisher severity

high

Source reference: /containers/cna/metrics

Event
#8772 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement