CVE-2026-82417: CWE-248 Uncaught Exception in ljharb qs
Description
A vulnerability in the ljharb qs library causes qs.stringify to throw a TypeError when serializing objects whose own constructor property has a truthy but non-callable isBuffer member. This occurs because the isBuffer check calls obj.constructor.isBuffer without verifying it is a function. The issue affects versions from 2.2.5 up to but not including 6.16.0 and was fixed in version 6.16.0. An attacker can craft input that triggers this error, causing synchronous exceptions during serialization. In typical Node.js HTTP frameworks, this results in a 500 error response without crashing the process, but in some cases, such as async handlers or background jobs without error boundaries, it can cause process termination.
CVSS v3.1
Score 5.3medium
Affected software
ljharb
qs
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The ljharb qs library's stringify function calls utils.isBuffer on non-primitive values, which invokes obj.constructor.isBuffer without checking if it is a function. If an object has a constructor property with a truthy but non-callable isBuffer property, this leads to a TypeError being thrown. This can be triggered by attacker-controlled input parsed with qs.parse using options that preserve the constructor property (e.g., allowPrototypes: true). The vulnerability affects versions >=2.2.5 and <6.16.0. The fix, released in v6.16.0, adds a typeof check to ensure isBuffer is a function before calling it, preventing the throw. The impact is denial of service via synchronous exceptions during serialization, potentially causing process exit if unhandled.
Potential Impact
An unauthenticated attacker can cause any code path that re-serializes attacker-influenced data with qs.stringify to throw a synchronous TypeError. In typical Node.js HTTP frameworks, this results in a 500 error response for the affected request, with the process continuing to serve other requests. However, if the serialization occurs outside of error boundaries, such as in async Express 4 handlers or background jobs, the unhandled exception can cause the process to exit, leading to denial of service. There is no impact on confidentiality or integrity, only availability.
Mitigation Recommendations
A fix is available and was released in version 6.16.0 of the qs library. Users should upgrade to version 6.16.0 or later to resolve this issue. Until upgraded, applications should ensure that untrusted input is not parsed or serialized in ways that preserve or expose the constructor property with a non-callable isBuffer member. Proper error handling around qs.stringify calls can also mitigate process crashes in async or background contexts.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- harborist
- Date Reserved
- 2026-08-28T23:08:00.460Z
- Cvss Version
- 3.1
- State
- PUBLISHED
Threat ID: 6a9370c9acd9273b495c62df
Added to database: 08/29/2026, 23:52:41 UTC
Last enriched: 09/07/2026, 15:34:55 UTC
Last updated: 10/13/2026, 18:48:24 UTC
Views: 182
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.