Skip to main content

pyquorum CVE-2026-44368

MEDIUM
Observable Timing Discrepancy (CWE-208)
2026-05-06 https://github.com/svvqt/pyquorum GHSA-7r92-3jgr-r65q
6.9
CVSS 4.0 · GitHub Advisory
Share

Severity by source

GitHub Advisory PRIMARY
6.9 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
3.7 LOW

Network-exposed timing oracle requires no auth (PR:N) but demands low-jitter conditions and many samples (AC:H); confidentiality impact only (C:L), no integrity or availability effect.

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

Primary rating from GitHub Advisory.

CVSS VectorGitHub Advisory

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
X

Lifecycle Timeline

4
Source Code Evidence Fetched
Jul 23, 2026 - 23:08 vuln.today
Analysis Generated
Jul 23, 2026 - 23:08 vuln.today
CVSS changed
May 13, 2026 - 21:22 NVD
6.9 (MEDIUM)
CVE Published
May 06, 2026 - 22:40 nvd
MEDIUM

DescriptionGitHub Advisory

Impact

The mul_mod function implements multiplication via a binary expansion loop whose execution time depends on the Hamming weight of the second operand (the exponent). An attacker who can measure the time of secret‑sharing operations (e.g., via a remote service) could progressively recover the values of shares, ultimately leading to secret reconstruction.

Patches

https://github.com/svvqt/pyquorum/releases/tag/v0.2.1

AnalysisAI

Timing side-channel in pyquorum's modular multiplication allows remote attackers to recover Shamir secret-sharing values by measuring operation latency. The mul_mod function in all versions prior to 0.2.1 uses a binary expansion loop whose iteration count and branch path vary with the Hamming weight of the secret-derived operand, creating a measurable timing oracle. Given sufficient query volume and low-latency network access to an exposed secret-sharing service, an attacker can statistically correlate timing measurements to progressively reconstruct protected secrets. No public exploit code has been identified at time of analysis; EPSS is 0.07% (21st percentile) and the vulnerability is not in CISA KEV.

Technical ContextAI

The vulnerability resides in the Rust extension module of pyquorum (pkg:pip/pyquorum < 0.2.1), a Python Shamir secret-sharing library. The affected mul_mod function implemented modular multiplication via a classic double-and-add binary expansion: for each bit of the exponent operand it conditionally accumulated a partial product, causing total execution time to scale with the Hamming weight (number of set bits) of the secret-derived second operand. CWE-208 (Observable Timing Discrepancy) precisely captures this root cause: the algorithm leaks internal state through a measurable external channel. The fix in commit 1e9ac41 replaces the variable-time loop entirely with a constant-time path: a branchless widening_mul performing 128×128-bit multiplication via four 64-bit products, followed by a branchless mersenne_reduce operating on a hardcoded 127-bit Mersenne prime (2^127+1), and a constant-time final subtraction using a borrow-derived bitmask. The lazy_static crate was added to cache the prime constant. All internal callers of mul_mod within shamir_split, shamir_combine, and solve_system are updated to the new constant-time path.

RemediationAI

Upgrade pyquorum to version 0.2.1 or later using pip install --upgrade pyquorum; this is the vendor-confirmed fix as documented in GHSA-7r92-3jgr-r65q and released at https://github.com/svvqt/pyquorum/releases/tag/v0.2.1. The patch replaces the variable-time mul_mod with a constant-time Mersenne reduction implementation that eliminates data-dependent branching. If an immediate upgrade is not feasible, the primary compensating control is to avoid exposing shamir_split or shamir_combine operations over any network interface where an adversary can obtain precise timing measurements; isolating these calls to local, non-networked contexts removes the remote timing oracle entirely. Introducing artificial uniform latency padding around secret-sharing endpoints can degrade the timing signal but does not eliminate the root cause, adds latency overhead, and is easily bypassed with additional query volume. Aggressive rate-limiting on secret-sharing API endpoints (e.g., token bucket limiting to a few requests per second per client) reduces the attacker's ability to gather the thousands of samples required for statistical recovery but again is not a substitute for patching. Monitoring for abnormally high query rates to secret-sharing endpoints can serve as a detection signal.

Share

CVE-2026-44368 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy