GitHub Advisoryadvisory · npm

GHSA-8q6v-474h-whgg The Thinbus Javascript Secure Remote Password (SRP) Client Generates Fewer Bits of Entropy Than Intended

MEDIUM Published 2025-08-06 Modified 2025-08-07 Official page ↗
Aliases
CVE-2025-54885
Ecosystem
npm
Packages
thinbus-srp
Severity
Moderate
CVSS vector
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:U
Weaknesses
CWE-331
Reviewed
2025-08-06

Affected packages

• npm thinbus-srp: < 2.0.1 → fixed in 2.0.1

Description

Impact A protocol compliance bug in thinbus-srp-npm versions prior to 2.0.1 causes the client to generate a fixed 252 bits of entropy instead of the intended bit length of the safe prime (defaulted to 2048 bits). RFC 5054 states in section 2.5.4 Client Key Exchange > The client key exchange message carries the client's public value (A). The client calculates this value as A = g^a % N, where a is a random number that SHOULD be at least 256 bits in length. The client public value is being generated from a private value that is 4 bits below the specification. This reduces the protocol's designed security margin it is now practically exploitable. The servers full sized 2048 bit random number is used to create the shared session key and password proof. Patches The issue is fixed in versions >= 2.0.1 Workarounds It is possible to patch a legacy version: ```javascript // WRONG var hexLength = this.toHex(N).length; // CORRECT var hexLength = this.toHex(this.N()).length; ```

Related

Alias · CVE (1)

  • CVE-2025-54885 Thinbus Javascript Secure Remote Password is a browser SRP6a implementation for zero-knowledge password authentication. vulnerability

Weakness · CWE (1)

  • CWE-331 Insufficient Entropy weakness

References