CVE-2026-35523 Overview
CVE-2026-35523 is an authentication bypass vulnerability affecting Strawberry GraphQL, a popular library for creating GraphQL APIs. The vulnerability exists in the legacy graphql-ws subprotocol handler, which fails to verify that a connection_init handshake has been completed before processing start (subscription) messages. This flaw allows a remote attacker to completely bypass the on_ws_connect authentication hook by connecting with the graphql-ws subprotocol and sending a start message directly, without ever sending the required connection_init message.
Critical Impact
Remote attackers can bypass authentication entirely on WebSocket subscription endpoints, potentially gaining unauthorized access to protected GraphQL subscriptions and sensitive data without providing any credentials.
Affected Products
- Strawberry GraphQL versions prior to 0.312.3
- Applications using the legacy graphql-ws subprotocol for WebSocket subscriptions
- GraphQL APIs relying on the on_ws_connect hook for authentication
Discovery Timeline
- 2026-04-07 - CVE-2026-35523 published to NVD
- 2026-04-08 - Last updated in NVD database
Technical Details for CVE-2026-35523
Vulnerability Analysis
This vulnerability is classified as CWE-306 (Missing Authentication for Critical Function). The core issue lies in the state management of the WebSocket connection handler within Strawberry GraphQL's implementation of the legacy graphql-ws protocol.
In a properly functioning GraphQL WebSocket implementation, the connection lifecycle should enforce a strict handshake sequence: the client must first send a connection_init message, which triggers the on_ws_connect authentication hook. Only after this hook validates the connection should the server accept start messages that initiate subscriptions. However, the vulnerable implementation in Strawberry GraphQL fails to maintain proper connection state tracking, allowing start messages to be processed before any authentication has occurred.
The attack is particularly dangerous because it requires no special privileges or user interaction—an attacker simply needs network access to the WebSocket endpoint to exploit this flaw and access potentially sensitive subscription data.
Root Cause
The root cause stems from insufficient state validation in the legacy graphql-ws subprotocol handler. The handler does not enforce that the connection_init handshake has been completed before processing subscription requests. This design oversight means the authentication callback (on_ws_connect) is never invoked when an attacker directly sends a start message, effectively rendering any authentication logic defined in that hook completely useless.
Attack Vector
The attack is network-based and requires no authentication or user interaction. An attacker exploits this vulnerability by:
- Establishing a WebSocket connection to the GraphQL subscription endpoint using the graphql-ws subprotocol
- Skipping the standard connection_init message that would normally trigger authentication
- Directly sending a start message with a subscription query
- Receiving subscription data without ever authenticating
This attack pattern is straightforward to execute using standard WebSocket client libraries or tools. The vulnerability allows unauthorized access to any data exposed through GraphQL subscriptions, which may include real-time updates, sensitive notifications, or other protected information streams.
Detection Methods for CVE-2026-35523
Indicators of Compromise
- WebSocket connections using the graphql-ws subprotocol that send start messages without a preceding connection_init message
- Subscription data being delivered to connections that never completed authentication handshakes
- Anomalous WebSocket traffic patterns where clients skip the standard connection initialization sequence
Detection Strategies
- Implement WebSocket connection logging that tracks the state of each connection and flags any that receive start messages before connection_init
- Monitor GraphQL subscription endpoints for connections using the legacy graphql-ws protocol, especially from unusual source IPs or with atypical connection patterns
- Deploy application-layer firewalls or API gateways capable of inspecting WebSocket message sequences for protocol violations
Monitoring Recommendations
- Enable detailed logging for all WebSocket connections to GraphQL endpoints, capturing the full message sequence for forensic analysis
- Set up alerts for authentication hook bypasses or connections that access subscription data without valid authentication tokens
- Review access logs for GraphQL subscription endpoints to identify potentially unauthorized access patterns
How to Mitigate CVE-2026-35523
Immediate Actions Required
- Upgrade Strawberry GraphQL to version 0.312.3 or later immediately
- Audit existing applications for any use of the legacy graphql-ws subprotocol and consider migrating to the newer graphql-transport-ws protocol
- Review access logs to determine if this vulnerability has been exploited against your systems
Patch Information
The vulnerability has been fixed in Strawberry GraphQL version 0.312.3. Organizations should update their dependencies to this version or later. The fix ensures that the connection_init handshake is properly enforced before any subscription messages are processed, restoring the intended authentication flow.
For detailed patch information and security advisory, refer to the GitHub Security Advisory.
Workarounds
- Implement additional authentication at the application or network layer that does not rely solely on the on_ws_connect hook
- Deploy an API gateway or reverse proxy that validates WebSocket handshake sequences before forwarding traffic to the GraphQL server
- Consider temporarily disabling WebSocket subscriptions on critical endpoints until the patch can be applied
# Update Strawberry GraphQL to patched version
pip install --upgrade strawberry-graphql>=0.312.3
# Verify installed version
pip show strawberry-graphql | grep Version
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


