Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObserve one encrypted message with known plaintext
-
DeliveryRecover keystream revealing embedded MAC key
-
ExploitCraft shorter ciphertext and forge valid MAC tag
-
ExecutionSubmit forged message to recipient
-
ImpactRecipient 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). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
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
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.
Primary rating from Vendor (bcorg).
CVSS VectorVendor: bcorg
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
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.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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-91206
GHSA-43qj-h4fh-p2h4
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB