ReDoS in Sec-Websocket-Protocol header
Published 28 May 2021 · Updated 8 Jul 2026
Affected packages
- Affected
- >=7.0.0 <7.4.6
- Fixed in
- 7.4.6
npm install ws@7.4.6- Affected
- >=6.0.0 <6.2.2
- Fixed in
- 6.2.2
npm install ws@6.2.2- Affected
- >=5.0.0 <5.2.3
- Fixed in
- 5.2.3
npm install ws@5.2.3Details
Impact
A specially crafted value of the Sec-Websocket-Protocol header can be used to significantly slow down a ws server.
Proof of concept
for (const length of [1000, 2000, 4000, 8000, 16000, 32000]) {
const value = 'b' + ' '.repeat(length) + 'x';
const start = process.hrtime.bigint();
value.trim().split(/ *, */);
const end = process.hrtime.bigint();
console.log('length = %d, time = %f ns', length, end - start);
}Patches
The vulnerability was fixed in ws@7.4.6 (https://github.com/websockets/ws/commit/00c425ec77993773d823f018f64a5c44e17023ff) and backported to ws@6.2.2 (https://github.com/websockets/ws/commit/78c676d2a1acefbc05292e9f7ea0a9457704bf1b) and ws@5.2.3 (https://github.com/websockets/ws/commit/76d47c1479002022a3e4357b3c9f0e23a68d4cd2).
Workarounds
In vulnerable versions of ws, the issue can be mitigated by reducing the maximum allowed length of the request headers using the `--max-http-header-size=size` and/or the `maxHeaderSize` options.
Credits
The vulnerability was responsibly disclosed along with a fix in private by Robert McLaughlin from University of California, Santa Barbara.
Is GHSA-6fc8-4gx4-v693 in any of your client repos?
Checking one package by hand is fine. Checking it across forty client projects is not. NPMscan reads the lockfiles in every GitHub repo you pick, finds each project with an affected ws, and gives you the command that fixes it.
References
- Linkgithub.com/websockets/ws/security/advisories/GHSA-6fc8-4gx4-v693
- Advisorynvd.nist.gov/vuln/detail/CVE-2021-32640
- Linkgithub.com/websockets/ws/issues/1895
- Linkgithub.com/websockets/ws/commit/00c425ec77993773d823f018f64a5c44e17023ff
- Packagegithub.com/websockets/ws
- Linklists.apache.org/thread.html/rdfa7b6253c4d6271e31566ecd5f30b7ce1b8fb2c89d52b8c4e0f4e30@%3Ccommits.tinkerpop.apache.org%3E
- Linksecurity.netapp.com/advisory/ntap-20210706-0005
Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.