Impact
If this library is used to implement a WebSocket server on top of a TCP server
(rather than an HTTP server or framework) using the WebSocket::Driver.server()
method, or, if it is used to complement a WebSocket client, then a peer can make
a single connection consume an unbounded amount of memory by sending an HTTP
request or response with a never-ending list of headers. This can lead to the
receiving process running out of memory.
Patches
The issue has been patched in version 0.8.1, by limiting the total size of HTTP
request/response lines and headers accepted by the parser to 32 kB. All users
should upgrade to this version.
Workarounds
No known workarounds exist.
Acknowledgements
This issue was discovered and reported by Pranjali Thakur, DepthFirst Security
Research Team.
Impact
If this library is used to implement a WebSocket server on top of a TCP server
(rather than an HTTP server or framework) using the
WebSocket::Driver.server()method, or, if it is used to complement a WebSocket client, then a peer can make
a single connection consume an unbounded amount of memory by sending an HTTP
request or response with a never-ending list of headers. This can lead to the
receiving process running out of memory.
Patches
The issue has been patched in version 0.8.1, by limiting the total size of HTTP
request/response lines and headers accepted by the parser to 32 kB. All users
should upgrade to this version.
Workarounds
No known workarounds exist.
Acknowledgements
This issue was discovered and reported by Pranjali Thakur, DepthFirst Security
Research Team.