Strawberry GraphQL's WebSocket subscription handlers for both the graphql-transport-ws and legacy graphql-ws protocols allocate an asyncio.Task and associated Operation object for every incoming subscribe message without enforcing any limit on the number of active subscriptions per connection.
An unauthenticated attacker can open a single WebSocket connection, send connection_init, and then flood subscribe messages with unique IDs. Each message unconditionally spawns a new asyncio.Task and async generator, causing linear memory growth and event loop saturation. This leads to server degradation or an OOM crash.
{
"github_reviewed": true,
"github_reviewed_at": "2026-04-06T18:00:29Z",
"severity": "HIGH",
"nvd_published_at": null,
"cwe_ids": [
"CWE-400",
"CWE-770"
]
}