Skip to main content

Bouncy Castle C# CVE-2026-16001

| EUVDEUVD-2026-91206 HIGH
Improper Validation of Integrity Check Value (CWE-354)
2026-10-02 bcorg GHSA-43qj-h4fh-p2h4
8.2
CVSS 4.0 · Vendor: bcorg
View

Attack ChainAIDerived

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

  1. Access
    Observe one encrypted message with known plaintext
  2. Delivery
    Recover keystream revealing embedded MAC key
  3. Exploit
    Craft shorter ciphertext and forge valid MAC tag
  4. Execution
    Submit forged message to recipient
  5. Impact
    Recipient accepts forgery as authentic

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Integrity verification
Exploitation Conditions

Exploitation requires a very specific configuration: IesEngine must be constructed WITHOUT a block cipher (stream mode) AND initialized in static-static mode - the Init entry point that supplies static keys on both sides with no ephemeral sender component (the patch's security note confirms this makes encryption effectively deterministic). The attacker must additionally have observed at least one genuine encrypted message AND know its plaintext to recover the keystream. Forgery is LIMITED to messages strictly shorter than the observed message, since only that portion of the keystream (and thus the MAC key) is revealed. Applications using the standard ECIES mode with ephemeral sender keys, or stream mode with a block cipher, are not affected. These constraints (AT:P, shorter-message-only, known-plaintext requirement) meaningfully narrow realistic exploitation despite the network, unauthenticated vector.

Impact

This is a genuine cryptographic integrity flaw rather than an inflated high-CVSS issue, but its real-world priority is constrained by a narrow precondition set. The vendor-assigned CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N) scores 8.2 with VI:H and crucially VC:N/VA:N - the impact is message forgery/integrity loss, not confidentiality or availability. The AT:P (attack requirements present) metric correctly captures that exploitation is not trivial: the attacker must first observe a legitimate encrypted message AND know its plaintext, and can only forge messages strictly shorter than that observed message. No EPSS score was provided, there is no CISA KEV listing, and no public exploit code was referenced, so exploitation status is 'no public exploit identified at time of analysis.' The flaw was reported by the vendor itself (bcorg) and a patch is available, indicating responsible coordinated disclosure rather than active in-the-wild abuse. One signal worth flagging: the input Tags label this 'Information Disclosure,' which conflicts with the CVSS impact profile (VC:N, VI:H) and CWE-354 (improper validation of integrity check value) - the true impact is authentication forgery, not confidentiality loss. Overall this is a real, verify-and-patch-level issue for the specific vulnerable configuration, not an emergency for the typical BouncyCastle deployment.

Exploit ScenarioDerived

An attacker passively captures one ciphertext produced by an application using IesEngine in stream mode (no block cipher) with a static-static key configuration, and happens to know that message's plaintext. Because the MAC key is drawn from the key-derivation output immediately after a keystream only as long as the message, the captured keystream reveals the MAC key for any shorter message, letting the attacker craft a bogus ciphertext plus a valid MAC tag that the recipient accepts as authentic. No public proof-of-concept was referenced, and the attack is network-reachable (AV:N) with low computational complexity but requires the known-plaintext precondition (AT:P).

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

Forgery of encrypted messages is possible in Legion of the Bouncy Castle Inc.'s bc-csharp (Bouncy Castle C#) before 2.7.0 when an IesEngine is constructed without a block cipher and initialised in static-static mode, because the keystream produced by the key-derivation function reveals the message authentication key for any message shorter than one the attacker has already observed. An unauthenticated remote attacker who possesses one ciphertext together with its known plaintext can therefore compute the MAC key and submit a crafted ciphertext and tag that the recipient accepts as authentic, although the forgery is confined to messages strictly shorter than the observed message and applications using standard ECIES with ephemeral sender keys or a block-cipher mode are unaffected. Vendor patch available: the defect is corrected in bc-csharp 2.7.0 via upstream commit f881400b761134160ec2a05fd27c3e569453788d, and no public exploit code was identified at time of analysis.

RemediationAI

The primary fix is to upgrade the bc-csharp package to version 2.7.0 or later, the release in which the vendor patch (upstream commit f881400b761134160ec2a05fd27c3e569453788d) is incorporated; details are in the vendor advisory at https://github.com/bcgit/bc-csharp/wiki/CVE-2026-16001. If an immediate upgrade is not possible, stop using IesEngine in stream mode with the static-static Init overload and switch affected code to the ephemeral sender-key initialisation used by standard ECIES, or to the block-cipher variant of IesEngine - the trade-off being that ephemeral-key operation changes the message format/state handling and requires both peers to support it, and the block-cipher path requires a suitable cipher and key size to be configured. Because the underlying weakness is deterministic encryption, reusing a static key pair for more than one message in the vulnerable configuration must be avoided entirely; if such reuse has already occurred, treat the affected key pair as compromised and rotate it, noting that rotation limits further forgery but does not retroactively protect messages already sent. Applications that cannot change mode or version should be restricted to single-message use of the static key pair and monitored for anomalous short messages, acknowledging that these are containment measures rather than fixes.

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

IesEngine implements the Integrated Encryption Scheme (ECIES) for the C#/.NET port of Bouncy Castle, and this issue is classified as CWE-354 (Improper Validation of Integrity Check Value) because the integrity of a message can be produced by an attacker who never held the MAC key legitimately. In stream mode the engine runs a key-derivation function over an input built from the scheme's shared secret 'z' and the fixed derivation parameters, then splits the derived output into a message-length keystream followed by the MAC key. In the static-static initialisation path (the Init overload that takes static keys on both sides and supplies no ephemeral component), that derivation input is constant for every message, so the KDF output is identical each time and the construction degenerates into deterministic encryption - effectively a many-time pad. Because the MAC key is taken from the bytes of the KDF output immediately following a keystream that is only as long as the message, one observed ciphertext with known plaintext discloses the keystream prefix, which for any shorter message overlaps the region from which that message's MAC key would be drawn; the attacker can thus recompute the tag and forge truncated messages. The supplied patch reorders derivation so the MAC key is carved from a fixed-size prefix of the KDF output and the keystream from the remainder, adds handling for an encoding vector V and its length tag (L2), and retains a constant-time MAC comparison. The associated CPE cpe:2.3:a:legion_of_the_bouncy_castle_inc.:bc-csharp:*:*:*:*:*:*:*:* identifies the affected package as the Bouncy Castle C

library; the independent assessment rates the issue CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N, i.e. network-reachable and unauthenticated but with high attack complexity and integrity-only impact, while the vendor-style CVSS 4.0 vector reflects the same integrity-only outcome (VI:H) with attack requirements present (AT:P).

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

Network-reachable and unauthenticated (AV:N/PR:N) but the known-plaintext observation and shorter-message constraint make it AC:H; impact is forgery only, so I:H with C:N/A:N.

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

Primary rating from Vendor (bcorg).

CVSS VectorVendor: bcorg

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

DescriptionCVE.org

Exposure of the message authentication key through the encryption keystream in the stream mode of IesEngine (an IesEngine constructed without a block cipher) in Legion of the Bouncy Castle Inc. bc-csharp before 2.7.0 allows a remote attacker who has observed one encrypted message with known plaintext to forge shorter messages of their choosing that the recipient accepts as authentic, via a crafted ciphertext and MAC tag, because the MAC key was taken from the key derivation output directly after a keystream as long as the message, while the derivation input depends only on the static key pair and fixed parameters. The keystream revealed by that one message therefore contains the MAC key for every sufficiently shorter message.

Executive ViewAI

Why It Matters

The Bouncy Castle C

cryptographic library, used in many .NET applications for secure communications, contains a flaw that allows attackers to forge encrypted messages under specific conditions. This could enable unauthorized modifications to sensitive data or transactions, impacting data integrity and trust. No public exploit identified at time of analysis. Vendor-released patch: 2.7.0.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 94% exploitable
Prevalence
High
bc-csharp is the de facto third-party crypto library across the .NET ecosystem
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.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
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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