Skip to main content

Bouncy Castle C# CVE-2026-63570

| EUVDEUVD-2026-91221 HIGH
Loop with Unreachable Exit Condition (Infinite Loop) (CWE-835)
2026-10-02 bcorg GHSA-g2c8-ppvq-rq73
7.1
CVSS 4.0 · Vendor: bcorg
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Craft PKCS#12 with cyclic AKI issuer links
  2. Delivery
    Deliver keystore to target application
  3. Exploit
    Application loads store and requests certificate chain
  4. Execution
    Chain-builder loops endlessly over the issuer cycle
  5. Impact
    CPU/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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

bc-csharp 0 <2.7.0

Affected Packages

euvd bc_csharp fix: 2.7.0

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

Vendor (bcorg) PRIMARY 7.1 HIGH
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
vuln.today AI 6.5 MEDIUM

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).

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (bcorg).

CVSS VectorVendor: bcorg

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

Why It Matters

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.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 89% exploitable
Prevalence
High
BouncyCastle bc-csharp is a widely-deployed crypto library across the .NET ecosystem
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
Medium
Technical Impact
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2026-63569 CRITICAL
9.1 Oct 02

Crafted small-order or out-of-range Diffie-Hellman values passed to DHAgreement.CalculateAgreement in Bouncy Castle C# (

CVE-2026-103603 HIGH
8.7 Oct 02

Memory exhaustion in Bouncy Castle C# (bc-csharp) before 2.7.0 allows a remote, unauthenticated attacker to cause a deni

CVE-2026-63566 HIGH
8.7 Oct 02

Memory-exhaustion denial of service in the C# DTLS implementation of Bouncy Castle (bc-csharp) before 2.7.0 lets a remot

CVE-2026-63568 HIGH
8.7 Oct 02

Denial of service in Legion of the Bouncy Castle's C# cryptography library (bc-csharp) before 2.7.0 lets an unauthentica

CVE-2026-103600 HIGH
8.7 Oct 02

Uncontrolled recursion in Bouncy Castle C# (bc-csharp) before 2.7.0 allows unauthenticated remote attackers to crash or

CVE-2026-63574 HIGH
8.7 Oct 02

Denial of service in Legion of the Bouncy Castle Inc. bc-csharp before 2.7.0 allows unauthenticated remote attackers to

CVE-2026-103604 HIGH
8.7 Oct 02

Denial of service in the Legion of the Bouncy Castle C# library (bc-csharp) affects all versions before 2.7.0, where qua

CVE-2026-16000 HIGH
8.7 Oct 02

Authentication-tag forgery in Legion of the Bouncy Castle Inc. bc-csharp (Bouncy Castle C#) before 2.7.0 lets a remote,

CVE-2026-63571 HIGH
8.7 Oct 02

Forged X.509 attribute certificates are accepted as valid by Legion of the Bouncy Castle Inc. bc-csharp versions before

CVE-2026-63567 HIGH
8.2 Oct 02

Observable padding discrepancy in the IES/ECIES decryption path of Bouncy Castle C# (bc-csharp) before 2.7.0 lets an una

CVE-2026-63573 HIGH
8.2 Oct 02

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

CVE-2026-103601 HIGH
8.2 Oct 02

Information disclosure in Bouncy Castle C# (bc-csharp) versions before 2.7.0 allows unauthenticated remote attackers to

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy