CVE-2022-24999: High-Severity qs Vulnerability Threatens Node.js/Express Applications
A critical vulnerability in the widely used `qs` parsing library can cause a complete denial-of-service in Node.js applications, particularly those built with the Express framework. The flaw, tracked as CVE-2022-24999, allows an unauthenticated remote attacker to send a specially crafted query string containing an `__proto__` key, which can cause the Node.js process to hang indefinitely. This attack vector is especially dangerous because it can be executed without authentication, making countless web applications vulnerable to simple, low-effort attacks that cripple server availability.
The vulnerability resides in versions of `qs` before 6.10.3. The library is a core dependency for parsing URL query strings and is deeply embedded in the Node.js ecosystem. In the provided example, the vulnerable version `qs-4.0.0.tgz` is a dependency of `body-parser-1.13.3.tgz`, which is itself a standard component of Express applications. This dependency chain means that many applications may be running the outdated, vulnerable version without direct knowledge, as it is pulled in transitively by other common packages.
The implications are severe for any production service using an affected version of Express or `qs`. An attacker can exploit this by simply appending a malicious payload to a URL. Successful exploitation does not require data exfiltration or code execution to cause significant damage; it simply halts the process, leading to service downtime. This places urgent pressure on development and security teams to audit their dependency trees, identify any instances of `qs` below version 6.10.3, and apply the patched version immediately to mitigate the risk of targeted DoS attacks.