The HTTP/2 implementation in Apache Tomcat 9.0.0.M1 to 9.0.14 and 8.5.0 to 8.5.37 accepted streams with excessive numbers of SETTINGS frames and also permitted clients to keep streams open without reading/writing request/response data. By keeping streams open for requests that utilised the Servlet API's blocking I/O, clients were able to cause server-side threads to block eventually leading to thread exhaustion and a DoS.
{
"versions": [
{
"introduced": "8.5.0"
},
{
"last_affected": "8.5.37"
},
{
"introduced": "9.0.1"
},
{
"last_affected": "9.0.14"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone1"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone10"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone11"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone12"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone13"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone14"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone15"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone16"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone17"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone18"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone19"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone2"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone20"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone21"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone3"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone4"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone5"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone6"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone7"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone8"
},
{
"introduced": "0"
},
{
"last_affected": "9.0.0-milestone9"
}
]
}