Description
In Bouncy Castle for Java before 1.86, NTRU reduced secret values with the % operator in three helpers whose reference implementations are deliberately division-free, so each reduction was carried out by an integer division whose latency depends on the secret operand. Polynomial.modQ divided by a variable divisor, which a compiler cannot strength-reduce to a multiply the way it can a constant one, so it emitted a division on every call including on the decapsulation path where the dividend derives from the private key; Polynomial.mod3 and NTRUSampling.mod3 divided the secret key polynomials f and g during key generation, the message polynomials r and m during encapsulation, and coefficients recovered during decapsulation. An attacker able to measure that timing can recover information about the NTRU private key. modQ now masks, which is exact because q is always a power of two, and mod3 uses the reference implementation's division-free fold and select; the results are unchanged.
Published: 2026-10-02
Score: 8.2 High
EPSS: < 1% Very Low
KEV: No
Impact: Private Key Leakage
Action: Immediate Patch
AI Analysis

Impact

In the Bouncy Castle Java library before version 1.86, the NTRU cryptographic routine reduced secret polynomial values by using the % operator, which the compiler turned into an integer division whose latency depends on the secret operand. This non‑constant‑time operation creates a measurable timing side channel that an attacker can exploit to recover information about the private key, exposing confidentiality of all data protected by that key. The weakness is classified as CWE‑208.

Affected Systems

The vulnerability affects the Bouncy Castle Java cryptography library (BC‑JAVA) on all versions prior to 1.86, specifically the NTRU implementation used during key generation, encapsulation, and decapsulation. Any application that imports this library and performs these operations is potentially exposed.

Risk and Exploitability

The CVSS score of 8.2 indicates a high impact on confidentiality. The EPSS score is not available, and the vulnerability is not listed in the CISA KEV catalog, suggesting that a public exploit has not yet been documented. However, the attack vector requires precise timing measurements, which is feasible for an adversary with direct or controlled access to the system’s execution environment. Successful exploitation would allow the attacker to recover the private key and compromise all cryptographic functions relying on it.

Generated by OpenCVE AI on October 2, 2026 at 09:50 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade to Bouncy Castle Java 1.86 or later, where the modQ and mod3 routines are protected against timing leaks.
  • Regenerate all private keys that were created with older library versions, ensuring that future key material is free from the timing side‑channel.
  • Implement sandbox isolation for cryptographic operations to reduce the risk of timing side‑channel measurements.

Generated by OpenCVE AI on October 2, 2026 at 09:50 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 03 Oct 2026 06:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Fri, 02 Oct 2026 14:30:00 +0000

Type Values Removed Values Added
First Time appeared Legion Of The Bouncy Castle Inc.
Legion Of The Bouncy Castle Inc. bc-java
Vendors & Products Legion Of The Bouncy Castle Inc.
Legion Of The Bouncy Castle Inc. bc-java

Fri, 02 Oct 2026 08:00:00 +0000

Type Values Removed Values Added
Description In Bouncy Castle for Java before 1.86, NTRU reduced secret values with the % operator in three helpers whose reference implementations are deliberately division-free, so each reduction was carried out by an integer division whose latency depends on the secret operand. Polynomial.modQ divided by a variable divisor, which a compiler cannot strength-reduce to a multiply the way it can a constant one, so it emitted a division on every call including on the decapsulation path where the dividend derives from the private key; Polynomial.mod3 and NTRUSampling.mod3 divided the secret key polynomials f and g during key generation, the message polynomials r and m during encapsulation, and coefficients recovered during decapsulation. An attacker able to measure that timing can recover information about the NTRU private key. modQ now masks, which is exact because q is always a power of two, and mod3 uses the reference implementation's division-free fold and select; the results are unchanged.
Title NTRU leaks private key information by reducing secret values with a non-constant-time integer division
Weaknesses CWE-208
References
Metrics cvssV4_0

{'score': 8.2, 'vector': 'CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/U:Amber'}


Subscriptions

Legion Of The Bouncy Castle Inc. Bc-java
cve-icon MITRE

Status: PUBLISHED

Assigner: bcorg

Published:

Updated: 2026-10-02T17:42:56.393Z

Reserved: 2026-07-28T08:28:40.900Z

Link: CVE-2026-18036

cve-icon Vulnrichment

Updated: 2026-10-02T17:42:49.497Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-02T08:17:01.660

Modified: 2026-10-02T18:17:03.507

Link: CVE-2026-18036

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-02T14:15:14Z

Weaknesses
  • CWE-208

    Observable Timing Discrepancy