An attacker can craft malicious WebSocket frames that cause an integer overflow in a variable which tracks the number of bytes remaining. This may cause the server or client to get stuck attempting to read frames in a loop, which can be used as a denial of service vector.
{
"url": "https://pkg.go.dev/vuln/GO-2020-0019",
"review_status": "REVIEWED"
}{
"imports": [
{
"path": "github.com/gorilla/websocket",
"symbols": [
"Conn.Close",
"Conn.NextReader",
"Conn.NextWriter",
"Conn.ReadJSON",
"Conn.ReadMessage",
"Conn.WriteControl",
"Conn.WriteJSON",
"Conn.WriteMessage",
"Conn.WritePreparedMessage",
"Conn.advanceFrame",
"Dialer.Dial",
"Dialer.DialContext",
"NewClient",
"NewPreparedMessage",
"ReadJSON",
"Subprotocols",
"Upgrade",
"Upgrader.Upgrade",
"WriteJSON",
"flateReadWrapper.Read",
"flateWriteWrapper.Close",
"flateWriteWrapper.Write",
"httpProxyDialer.Dial",
"messageReader.Read",
"messageWriter.Close",
"messageWriter.ReadFrom",
"messageWriter.Write",
"messageWriter.WriteString",
"netDialerFunc.Dial",
"proxy_direct.Dial",
"proxy_envOnce.Get",
"proxy_socks5.Dial",
"truncWriter.Write"
]
}
]
}