Skip to main content

bc-csharp CVE-2026-103601

| EUVDEUVD-2026-91231 HIGH
Improper Validation of Integrity Check Value (CWE-354)
2026-10-02 bcorg GHSA-v84x-v65q-m82v
8.2
CVSS 4.0 · Vendor: bcorg
View

Attack ChainAIDerived

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

  1. Access
    Identify app exposing failed-decryption output buffer
  2. Delivery
    Forge chosen ciphertext for CCM/KCcm mode
  3. Exploit
    Submit forged message for decryption
  4. Execution
    Observe unverified plaintext left in reused buffer
  5. Impact
    Recover target plaintext via repeated queries

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

Requires an application that decrypts attacker-influenced data using CcmBlockCipher (CCM) or KCcmBlockCipher (DSTU 7624 CCM) via the decryption path that writes into a CALLER-SUPPLIED output buffer, AND that lets the contents of that buffer be observed after a FAILED authentication-tag check - for example through buffer reuse across calls or by logging the output of a failed decryption. The attacker must be able to send forged ciphertexts to that decryption routine. LIMITING FACTORS: methods that return a newly allocated array are NOT affected; applications that discard the output buffer on a thrown InvalidCipherTextException are not exploitable; only the CCM and KCcm modes are in scope. These preconditions mean typical/default usage patterns that return arrays or do not expose the failed buffer are not vulnerable, significantly narrowing the realistic attack surface despite the network-facing CVSS vector.

Impact

Signals are mixed and lean toward 'elevated but conditional' rather than 'drop-everything urgent.' The vendor-assigned CVSS 4.0 score of 8.2 (High) reflects a network-reachable, unauthenticated chosen-ciphertext plaintext-recovery weakness (VC:H, with no integrity or availability impact). Crucially, the vector carries AT:P (Attack Requirement: Present), and the description makes that requirement concrete: exploitation only works against applications that both decrypt into a caller-supplied output buffer in CCM/KCcm modes AND let that buffer be observed after a failed authentication check (via buffer reuse or logging). This is effectively a padding-oracle-style weakness gated on a non-default application integration pattern, which materially lowers real-world exploitability versus the raw score. Exploitation status: no public exploit identified at time of analysis, and the issue is not listed in CISA KEV. No EPSS score and no SSVC decision data were provided in the input, so probabilistic and decision-framework signals cannot be weighed - this gap should be noted rather than assumed benign. Net: a genuine cryptographic defect worth patching promptly for any .NET application using Bouncy Castle CCM/KCcm decryption into reused buffers, but the deployment-specific precondition means it is not a blanket mass-exploitation risk.

Exploit ScenarioDerived

An application uses bc-csharp CcmBlockCipher (or KCcmBlockCipher) to decrypt attacker-supplied messages into a caller-supplied output buffer that is subsequently reused, logged, or otherwise observable even when the authentication tag check fails. A remote, unauthenticated attacker repeatedly submits forged ciphertexts and reads the recovered-but-unverified plaintext left in that buffer, acting as a decryption oracle to recover the plaintext of ciphertexts of their choosing. No public exploit code was identified in the provided data, but the technique is a well-understood release-of-unverified-plaintext (CWE-354) attack.

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

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

Alert me

AnalysisAIv1 – Oct 02, 2026

Information disclosure in Bouncy Castle C

(bc-csharp) versions before 2.7.0 allows unauthenticated remote attackers to obtain plaintext from forged ciphertexts when an application decrypts into a caller-supplied buffer and subsequently observes that buffer after a failed authentication-tag check (e.g., through buffer reuse or logging). The vulnerability affects CcmBlockCipher and KCcmBlockCipher (DSTU 7624 CCM) only; methods returning newly allocated arrays are not vulnerable. No public exploit code or active exploitation has been identified, and the practical risk is conditional on the application exposing the failed decryption buffer, narrowing the attack surface despite the vendor-assigned CVSS 4.0 score of 8.2.

RemediationAI

Upgrade to bc-csharp 2.7.0 or later, which contains the vendor patch (refer to advisory https://github.com/bcgit/bc-csharp/wiki/CVE-2026-103601 and patch commits https://github.com/bcgit/bc-csharp/commit/e0868323645a063cb2479646e93c1449dc338de5 and https://github.com/bcgit/bc-csharp/commit/4ddb1d0bfeae3a81b18f4446d8cc8a7871bd2d9f). If immediate upgrade is not possible, avoid using CcmBlockCipher or KCcmBlockCipher for decryption into caller-supplied buffers; instead, use decryption methods that return a newly allocated array (not affected) or ensure that any caller-supplied output buffer is cleared (e.g., zeroed) or discarded immediately after an InvalidCipherTextException is caught, and never log or reuse its contents. Note that changing to array-returning methods may have performance implications due to additional allocations, and ensuring buffer hygiene requires code review of all call sites. The patch also enforces nonce uniqueness for CCM encryption, which may surface latent nonce-reuse bugs in applications that incorrectly reused nonces; this is a security improvement but could require application 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

The vulnerability (CWE-354: Improper Validation of Integrity Check Value) resides in the CCM (Counter with CBC-MAC) and DSTU 7624 CCM AEAD modes implemented in bc-csharp's CcmBlockCipher and KCcmBlockCipher classes. In affected versions, during decryption into a caller-supplied output buffer, the cipher wrote the recovered plaintext into that buffer before verifying the authentication tag; when the tag check failed and an InvalidCipherTextException was thrown, the unverified plaintext remained in the buffer. This violates the AEAD security guarantee (NIST SP 800-38C section 6.2) that decryption must return FAIL without revealing plaintext. An attacker who can send forged ciphertexts to a vulnerable decryption routine and then observe the buffer contents (via buffer reuse across calls, logging, or similar) can obtain decryptions of chosen ciphertexts. The patch (commits e086832 and 4ddb1d0) changes decryption to use a private temporary buffer, verifies the MAC, and only copies plaintext to the caller's buffer upon success, zeroing the temporary buffer in a finally block; it also adds a defensive check against nonce reuse for CCM encryption, mirroring GcmBlockCipher.

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:H/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 5.9 MEDIUM

Unauthenticated remote forged messages (AV:N/PR:N), but exploitation depends on the app exposing the failed-decryption buffer, mapping the 4.0 AT:P to AC:H; confidentiality-only plaintext recovery, no integrity/availability impact.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/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
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Release of unverified plaintext in the CCM (CcmBlockCipher) and DSTU 7624 CCM (KCcmBlockCipher) AEAD modes in Legion of the Bouncy Castle Inc. bc-csharp before 2.7.0 allows a remote attacker to obtain decryptions of ciphertexts of their choosing via forged messages sent to an application that lets the output buffer of a failed decryption be observed, for example through buffer reuse or logging, because decryption wrote the recovered plaintext into the caller-supplied output buffer before checking the authentication tag and left it there when the check failed. Only decryption into a caller-supplied buffer is affected; methods that return a newly allocated array are not.

Executive ViewAI

Why It Matters

Bouncy Castle C

(bc-csharp) versions before 2.7.0 are vulnerable to an information disclosure flaw that could allow attackers to extract plaintext from forged ciphertexts in applications using specific cipher modes and buffer handling. This poses a risk of sensitive data exposure for organizations relying on affected versions, potentially leading to regulatory penalties and reputational damage. No public exploit identified at time of analysis, yet leadership should ensure timely patching to version 2.7.0 or later.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 81% exploitable
Prevalence
High
Bouncy Castle is a widely deployed .NET cryptographic library across many applications
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.3%
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-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