Skip to main content

Bouncy Castle C# EUVDEUVD-2026-91217

| CVE-2026-63566 HIGH
Memory Allocation with Excessive Size Value (CWE-789)
2026-10-02 bcorg GHSA-496x-2f25-59fj
8.7
CVSS 4.0 · Vendor: bcorg
View

Attack ChainAIDerived

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

  1. Access
    Reach exposed DTLS endpoint over UDP
  2. Delivery
    Initiate unauthenticated DTLS handshake
  3. Exploit
    Send fragments declaring ~16MB 24-bit length with empty payload
  4. Execution
    Reassembler pre-allocates buffers for up to 16 pending messages
  5. Impact
    Exhaust server/client memory causing denial of service

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory allocation limits
Exploitation Conditions

The target must be using the DTLS protocol handlers (DtlsServerProtocol or DtlsClientProtocol) in bc-csharp before 2.7.0 and be reachable on its DTLS/UDP endpoint; both DTLS servers and DTLS clients are affected. No authentication, no special configuration, and no user interaction are required - the flawed allocation happens on default DTLS handshake processing before the peer is authenticated. The key LIMITING factor is that the deployment must actually use DTLS: pure TLS usage of bc-csharp is explicitly NOT affected, so consumers not exposing a DTLS endpoint are not exploitable via this flaw.

Impact

This is a genuine availability risk but not a top-tier emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N, impact VA:H with VC:N/VI:N) is internally consistent and matches the description: a remote, unauthenticated DTLS peer can trigger memory exhaustion with low complexity and no user interaction, but there is NO confidentiality or integrity impact - purely denial of service. The vendor-assigned 8.7 (CVSS 4.0 'High') is defensible because exploitation occurs before the handshake is authenticated and amplification is significant (~16 MB per message × up to 16 pending messages ≈ 256 MB per handshake from tiny, empty-payload fragments). Tempering signals: no EPSS score is provided, this is NOT in CISA KEV, and no public POC is referenced, so there is no public exploit identified at time of analysis and no evidence of active exploitation. The real-world blast radius is also constrained because only DTLS deployments are affected - TLS is explicitly not - so the exposure is limited to the subset of bc-csharp consumers that actually use DtlsServerProtocol/DtlsClientProtocol. Net: a real priority for anyone running bc-csharp DTLS on exposed UDP endpoints (where low-effort amplification DoS is attractive), but lower urgency for the much larger population using only TLS.

Exploit ScenarioDerived

An attacker who can reach a bc-csharp (<2.7.0) DTLS server or client on its UDP port initiates a handshake and sends crafted handshake-message fragments whose 24-bit length header declares a near-maximum size (~16 MB) while carrying little or no payload. Because the reassembly buffer is allocated at the declared length before any signature/Finished verification, each of up to 16 pending messages forces a large allocation, exhausting memory and denying service. No public exploit is identified at time of analysis, but the technique is simple and the attack is unauthenticated.

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

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

Alert me

AnalysisAIv1 – Oct 02, 2026

Memory-exhaustion denial of service in the C

DTLS implementation of Bouncy Castle (bc-csharp) before 2.7.0 lets a remote, unauthenticated DTLS peer crash or stall a process by driving unbounded handshake-fragment reassembly buffers. A crafted fragment header can declare a message length of nearly 16 MB; because the reassembler is sized from that attacker-controlled 24-bit length before any check against the negotiated maximum handshake message size, a payload-free fragment forces an allocation of roughly 16 MB, and up to 16 pending messages per handshake multiply this toward hundreds of MB per unauthenticated connection, all before the handshake is authenticated. DTLS servers and DTLS clients built on bc-csharp are both affected, while pure TLS usage is explicitly not; no public exploit code has been identified at time of analysis, and the issue is rated CVSS 4.0 8.7 / CVSS 3.1 8.7 (AV:N/AC:L/PR:N/UI:N, availability-only impact).

RemediationAI

Upgrade bc-csharp to version 2.7.0, which is the first release containing the fix; the change is visible in the upstream commits 212d06474166d5e85be72c2dd4898313aa5dd5f3 and 99afef612458f70f28e7824a09719bfc3a169bda, where the negotiated maximum handshake message size is passed into DtlsReliableHandshake and oversized declared lengths are dropped. If an immediate library upgrade is not possible, compensating controls must be applied at the network layer because vulnerable releases expose no configuration switch that enforces the missing bound: restrict the DTLS/UDP listener or client egress to trusted peers with a firewall or security-group rule, or disable DTLS entirely if the application does not require it - the trade-off being that both measures break legitimate DTLS peers and the latter removes DTLS functionality. Additional partial mitigations include rate-limiting or connection-capping DTLS associations at a fronting proxy and monitoring process memory for spikes tied to handshake traffic, though these reduce rather than eliminate the risk and can degrade legitimate handshake throughput. Apply the primary upgrade as soon as feasible and consult the vendor advisory at https://github.com/bcgit/bc-csharp/wiki/CVE-2026-63566 for confirmation of the fixed release and any further guidance.

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

DTLS runs a TLS-style handshake over UDP, so handshake messages can arrive out of order and must be reliably reassembled from fragments by DtlsReliableHandshake and DtlsReassembler. Each handshake message header carries a 24-bit declared length, giving a theoretical maximum of 16,777,215 bytes, and the vulnerable code allocated the per-message reassembly buffer at that declared length on receipt of the first fragment. The TLS code path already bounded this using the peer's configured maximum handshake message size, but the DTLS path did not, which is the classic CWE-789 (memory allocation with excessive size value) pattern: an allocation size taken from untrusted input without an upper-bound validation. The DTLS protocol's allowance for multiple concurrently pending messages (up to 16 per handshake) turns a single oversized allocation into an amplification vector, and because reassembly happens before signature or Finished verification, an unauthenticated peer suffices. The vendor fix threads the negotiated maximum handshake message size (TlsUtilities/TlsContext GetMaxHandshakeMessageSize, floored at 1024 bytes via Math.Max) into the DtlsReliableHandshake constructor from both DtlsClientProtocol.ClientHandshake and DtlsServerProtocol.ServerHandshake, and ProcessRecord now breaks out of record processing when the declared length exceeds that bound instead of committing an attacker-sized buffer.

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 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Remote unauthenticated DTLS peer with low complexity and no interaction (AV:N/AC:L/PR:N/UI:N); pre-auth memory exhaustion yields A:H only, with no confidentiality or integrity impact and unchanged scope.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/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
None
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

Memory allocation with excessive size value in the DTLS handshake reassembly (DtlsReliableHandshake, DtlsReassembler) in Legion of the Bouncy Castle Inc. bc-csharp before 2.7.0 allows a remote unauthenticated DTLS peer to cause a denial of service through memory exhaustion via crafted handshake message fragments, because the reassembly buffer for each incoming handshake message was allocated at the 24-bit length declared in the fragment header, without the check against the peer's maximum handshake message size that TLS already applied. A fragment carrying no payload can force an allocation of almost 16 MB, for each of up to 16 pending messages per handshake, before the handshake is authenticated. DTLS servers and DTLS clients are both affected; TLS is not.

Executive ViewAI

Why It Matters

Bouncy Castle C

(bc-csharp) DTLS implementations before 2.7.0 are exposed to an unauthenticated remote memory-exhaustion denial of service that can crash or stall processes handling DTLS connections. This puts DTLS servers and clients built on bc-csharp at risk of availability outages, potentially disrupting secure communications and dependent services. No public exploit identified at time of analysis, and a vendor patch is available.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 71% exploitable
Prevalence
High
widely-used .NET cryptographic library, though only DTLS consumers are affected
Data Quality
6 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.4%
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
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
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-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

CVE-2026-103602 HIGH
8.2 Oct 02

Certificates that should be rejected by PKIX name constraints are accepted by Legion of the Bouncy Castle Inc. bc-csharp

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