Skip to content
Heist/ feed
High

NTRU leaks private key information by reducing secret values with a non-constant-time integer division

Type: advisorySource: Official CVE List1 source record

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.

Announced Source revision 1
Original source ↗

CVE-2026-18036

Primary source · Revision 1

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: cve:CVE-2026-18036

BC-JAVA

Source reference: /containers/cna/affected/0/product

Affected versions
Not stated in this record
Fixed versions
Not stated in this record
Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "repo": "https://github.com/bcgit/bc-java",
    "vendor": "Legion of the Bouncy Castle Inc.",
    "modules": [
      "core"
    ],
    "product": "BC-JAVA",
    "versions": [
      {
        "status": "affected",
        "version": "1.73",
        "lessThan": "1.86",
        "versionType": "maven"
      }
    ],
    "platforms": [
      "all"
    ],
    "packageURL": "pkg:maven/org.bouncycastle/bcprov-jdk18on",
    "packageName": "bcprov",
    "programFiles": [
      "Polynomial",
      "NTRUSampling"
    ],
    "collectionURL": "https://www.bouncycastle.org/download/bouncy-castle-java/",
    "defaultStatus": "unaffected"
  }
]
Related CVEs
CVE-2026-18036

Source reference: /cveMetadata/cveId

Publisher severity

high

Source reference: /containers/cna/metrics

Event
#8079 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement