Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft PKCS#12 with cyclic AKI issuer links
-
DeliveryDeliver keystore to target application
-
ExploitApplication loads store and requests certificate chain
-
ExecutionChain-builder loops endlessly over the issuer cycle
-
ImpactCPU/memory exhausted, OutOfMemoryException denial of service
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Loop termination conditions
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the application (1) loads an attacker-controlled PKCS#12 file into a bc-csharp Pkcs12Store and (2) subsequently calls GetCertificateChain for a key entry - the malicious file must contain certificates whose AuthorityKeyIdentifier extensions reference each other to form an issuer cycle (or otherwise link cyclically). The signature of the linked issuers is never checked, so no valid CA trust is needed. Limiting factors: the UI:P requirement means a trigger is needed - an application or operator must actually import the untrusted keystore and request its chain; deployments that only process trusted/internal PKCS#12 files, or that never call GetCertificateChain, are not exposed. No authentication is required (PR:N). |
| Impact | This is a genuine but bounded denial-of-service issue, not a code-execution or data-exposure threat. The CVSS 4.0 base score of 7.1 is driven entirely by availability impact (VA:H) with no confidentiality or integrity effect (VC:N/VI:N), reflecting CWE-835 (infinite loop) exhausting CPU and memory until an OutOfMemoryException. The vector shows AV:N, AC:L, AT:N, PR:N but UI:P (passive user interaction) - exploitation is network-reachable and needs no attacker privileges, but it is NOT fully automatic: an application must actually load the attacker-supplied PKCS#12 file and then call GetCertificateChain on a key entry. No EPSS score, CISA KEV listing, or public POC was provided in the input, so exploitation probability signals are absent; a regression test (ChainCycle) was committed with the fix but a reproducing keystore in a vendor test is not the same as a weaponized public exploit. Weighing these signals together: real-world priority is MODERATE - easy to trigger and remotely reachable where untrusted PKCS#12 files are processed, but limited to availability and gated on the application invoking the vulnerable chain-building path. Prioritize patching in services that ingest user-supplied keystores; deprioritize where PKCS#12 input is trusted/internal only. |
| Exploit ScenarioDerived | An attacker crafts a PKCS#12 keystore containing two certificates whose AuthorityKeyIdentifier extensions each name the other as issuer, forming a cycle, and submits it to an application (e.g., a certificate-upload or keystore-import endpoint) built on bc-csharp. When the application loads the file and calls Pkcs12Store.GetCertificateChain, the chain-building loop follows the key-identifier links indefinitely because it keeps no record of visited certificates, never returning and consuming CPU and memory until the process throws an OutOfMemoryException. A vendor regression test demonstrates the cyclic keystore, but no independent public exploit was identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 02, 2026
Denial of service in the Legion of the Bouncy Castle C
library (bc-csharp) before 2.7.0: Pkcs12Store.GetCertificateChain follows AuthorityKeyIdentifier issuer links without tracking already-visited certificates, so a crafted PKCS#12 file containing certificates that reference each other in a cycle drives the chain-building loop to run indefinitely, consuming CPU and memory until an OutOfMemoryException is thrown. Applications are affected only if they load an attacker-supplied PKCS#12 keystore and then request a key entry's certificate chain; the assessed vector (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H) indicates no authentication is needed but some user or process interaction is required to feed in the malicious file, and the impact is confined to availability. No public exploit identified at time of analysis, and the upstream fix commit ships a crafted cyclic keystore as a regression test fixture rather than as released exploit tooling.
RemediationAI
Vendor-released patch: upgrade to bc-csharp 2.7.0 or later (fix commit 1b8fad04df4953230c9951c57678ee45c8aead85, advisory https://github.com/bcgit/bc-csharp/wiki/CVE-2026-63570), which records visited certificates and terminates on a detected issuer cycle. If upgrading immediately is not possible, the most effective compensating control is to stop untrusted data from reaching the vulnerable code path: reject or quarantine externally supplied PKCS#12/PFX files before loading them into Pkcs12Store, and operate only on keystores from trusted internal sources - the trade-off is loss of legitimate third-party certificate-import functionality. Where external imports are business-critical, pre-validate the container (for example by walking AuthorityKeyIdentifier links yourself with a visited-set and a depth cap, and rejecting any chain containing a cycle or exceeding a sane length) before calling GetCertificateChain; this duplicates chain-building logic and can drift from library behavior over time. As a containment measure, invoke Pkcs12Store loading and GetCertificateChain in an isolated worker process or thread with a hard wall-clock timeout, a memory ceiling, and the ability to be force-terminated, so a runaway loop is killed before it exhausts host memory - the side effect is that genuinely large but valid keystores may be aborted and must be retried or migrated to the patched library. Note that signature verification is not performed when following key-identifier links, so signature/trust checks alone are not a mitigation for this cycle condition.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
PKCS#12 (.p12/.pfx) is a container format that bundles private keys, certificates, and their certificate chains, and Pkcs12Store is bc-csharp's parser/accessor for it; GetCertificateChain(alias) reconstructs a key entry's chain by iteratively matching a certificate's AuthorityKeyIdentifier against candidate issuers' SubjectKeyIdentifier values. The root cause class is CWE-835 (loop with unreachable exit condition): the loop as written terminates only when no issuer is found or when a certificate links to itself, and it keeps no record of certificates already visited, so two certificates whose AuthorityKeyIdentifier extensions each identify the other's public key form an infinite issuer cycle. Notably, the key-identifier links are followed without verifying signatures, so an attacker does not need any trusted CA or valid signature relationship - only self-consistent, controllable extension values. This is a flaw in the pure-managed bc-csharp codebase (CPE cpe:2.3:a:legion_of_the_bouncy_castle_inc.:bc-csharp:*:*:*:*:*:*:*:* matches all versions via wildcard, with the fixed boundary being 2.7.0), meaning impact follows wherever the affected library version is consumed by a .NET application, independent of host OS. The patch commit 1b8fad04df4953230c9951c57678ee45c8aead85 adds a visited-certificate set so a cycle is detected and the chain walk terminates, and adds a ChainCycle regression test that loads a crafted cyclic PKCS#12 blob and asserts termination.
Know when Bc Csharp gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
File is network-deliverable with no privileges (AV:N/PR:N), but the app must load the untrusted keystore and request a chain (UI:R); impact is availability-only (A:H).
Primary rating from Vendor (bcorg).
CVSS VectorVendor: bcorg
DescriptionCVE.org
Loop with unreachable exit condition in Pkcs12Store.GetCertificateChain in Legion of the Bouncy Castle Inc. bc-csharp before 2.7.0 allows an attacker who can supply a crafted PKCS#12 file to an application that loads it and requests a key entry's certificate chain to cause a denial of service, in which the call never returns and consumes CPU and memory until an OutOfMemoryException, via certificates whose issuer links form a cycle, for example two certificates whose AuthorityKeyIdentifier extensions each identify the other's public key. This happens because the chain-building loop stops only when no issuer is found or a certificate links to itself, and keeps no record of certificates already visited. The key-identifier links are followed without checking signatures.
Executive ViewAI
Applications built on the Bouncy Castle C
cryptography library (bc-csharp) prior to version 2.7.0 can be driven into an unrecoverable resource-exhaustion state when they load an externally supplied PKCS#12 keystore and then read a key entry's certificate chain. The exposure is unauthenticated but requires a user or process action to introduce the crafted file, and the resulting impact is confined to availability, with no data disclosure or modification. Leadership should care because affected .NET services that ingest customer- or partner-supplied keystores could be hung or crashed, degrading service availability until the library is upgraded.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Crafted small-order or out-of-range Diffie-Hellman values passed to DHAgreement.CalculateAgreement in Bouncy Castle C# (
Memory exhaustion in Bouncy Castle C# (bc-csharp) before 2.7.0 allows a remote, unauthenticated attacker to cause a deni
Memory-exhaustion denial of service in the C# DTLS implementation of Bouncy Castle (bc-csharp) before 2.7.0 lets a remot
Denial of service in Legion of the Bouncy Castle's C# cryptography library (bc-csharp) before 2.7.0 lets an unauthentica
Uncontrolled recursion in Bouncy Castle C# (bc-csharp) before 2.7.0 allows unauthenticated remote attackers to crash or
Denial of service in Legion of the Bouncy Castle Inc. bc-csharp before 2.7.0 allows unauthenticated remote attackers to
Denial of service in the Legion of the Bouncy Castle C# library (bc-csharp) affects all versions before 2.7.0, where qua
Authentication-tag forgery in Legion of the Bouncy Castle Inc. bc-csharp (Bouncy Castle C#) before 2.7.0 lets a remote,
Forged X.509 attribute certificates are accepted as valid by Legion of the Bouncy Castle Inc. bc-csharp versions before
Observable padding discrepancy in the IES/ECIES decryption path of Bouncy Castle C# (bc-csharp) before 2.7.0 lets an una
RSA PKCS#1 v1.5 key transport in the Bouncy Castle C# (bc-csharp) CMS implementation before 2.7.0 is vulnerable to a Ble
Information disclosure in Bouncy Castle C# (bc-csharp) versions before 2.7.0 allows unauthenticated remote attackers to
EUVD-2026-91221
GHSA-g2c8-ppvq-rq73
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB