A vulnerability was found in the ping functionality of the ws module before 1.0.0 which allowed clients to allocate memory by sending a ping frame. The ping functionality by default responds with a pong frame and the previously given payload of the ping frame. This is exactly what you expect, but internally ws always transforms all data that we need to send to a Buffer instance and that is where the vulnerability existed. ws didn't do any checks for the type of data it was sending. With buffers in node when you allocate it when a number instead of a string it will allocate the amount of bytes.
The code transmits data to another actor, but a portion of the data includes sensitive information that should not be accessible to that actor.
The product performs operations on a memory buffer, but it reads from or writes to a memory location outside the buffer's intended boundary. This may result in read or write operations on unexpected memory locations that could be linked to other variables, data structures, or internal program data.
Link | Tags |
---|---|
https://github.com/websockets/ws/releases/tag/1.0.1 | third party advisory release notes |
https://nodesecurity.io/advisories/67 | third party advisory |
https://gist.github.com/c0nrad/e92005446c480707a74a | third party advisory patch |