GitHub Advisoryadvisory · PyPI

GHSA-vpwc-v33q-mq89 strawberry-graphql: Authentication bypass via legacy graphql-ws WebSocket subprotocol

HIGH Published 2026-04-06 Modified 2026-06-08 Official page ↗
Aliases
CVE-2026-35523
Ecosystem
PyPI
Packages
strawberry-graphql
Severity
High
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Weaknesses
CWE-306
Reviewed
2026-04-06

Affected packages

• PyPI strawberry-graphql: < 0.312.3 → fixed in 0.312.3

Description

Strawberry up until version `0.312.3` is vulnerable to an authentication bypass on WebSocket subscription endpoints. The legacy graphql-ws subprotocol handler does not verify that a `connection_init` handshake has been completed before processing start (subscription) messages. This allows a remote attacker to skip the `on_ws_connect` authentication hook entirely by connecting with the graphql-ws subprotocol and sending a start message directly, without ever sending `connection_init`. The graphql-transport-ws subprotocol handler is not affected, as it correctly gates subscription operations on a connection_acknowledged flag. However, both subprotocols are enabled by default in all framework integrations that support websockets, and the subprotocol is selected by the client via the Sec-WebSocket-Protocol header. Any application relying on `on_ws_connect` for authentication or authorization is affected. Mitigation: Upgrade to the patched version, or explicitly disable the legacy graphql-ws subprotocol by setting `subscription_protocols=[GRAPHQL_TRANSPORT_WS_PROTOCOL]` on your GraphQL view/router.

Related

Alias · CVE (1)

  • CVE-2026-35523 Strawberry GraphQL is a library for creating GraphQL APIs. vulnerability

Weakness · CWE (1)

  • CWE-306 Missing Authentication for Critical Functionality weakness

References