Read the docs

Strawberry GraphQL permission check can bypass with awaitable results

Priority HIGH 72CWE-863Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
Low
Impact type
Security bypass
Confidentiality · integrity · availability
High · None · None
Fix status
Partial Red Hat: 1 without a fix

Attack profile from CVSS 3.1 · CNA. Fix status from CNA, GitHub and Red Hat. Impact type from CWE-863.

Summary

Strawberry GraphQL from 0.217.0 before 0.326.1 evaluates permission results incorrectly on synchronous field resolvers. When a custom permission declares a normal function that returns an awaitable, the awaitable is not awaited and is treated as true, so the protected resolver runs even when the permission should deny access (CWE-863). A remote attacker without privileges can reach data that the permission was meant to protect. The flaw affects both execute_sync() and execute().

Written with Claude Haiku 5.5 from the sources below · 2026-10-29

Description from the CNA

Strawberry GraphQL is a library for creating GraphQL APIs. From 0.217.0 until 0.326.1, PermissionExtension.resolve() on a synchronous field resolver evaluates the result of has_permission() for truthiness. When a custom permission declares has_permission() as a normal function but returns an awaitable, supports_sync does not classify it as asynchronous, the awaitable is not awaited, and its inherently truthy object value permits the protected resolver to run even when the result would resolve to false. This affects synchronous field resolvers under both execute_sync() and execute(); permissions declared with async def has_permission() and synchronous permissions returning a boolean are not affected. This issue is fixed in version 0.326.1.

Why it matters now

Exploitation Proof of concept CISA SSVC · not in CISA KEV
EPSS 0.00449 39th percentileScored 2026-11-07
Fix Partial strawberry (strawberry-graphql): 0.326.1strawberry-graphql (PyPI): 0.326.1Red Hat: 1 without a fix

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
Poc
Automatable
Yes
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
strawberry-graphqlstrawberry0.217.0 to before 0.326.10.326.1Patch availableCNA
—strawberry-graphql (PyPI)0.217.0 to before 0.326.10.326.1Patch availableGHSA-pfvf-fwfp-25mp
  • strawberry Vendorstrawberry-graphql Affected 0.217.0 to before 0.326.1 Fixed in 0.326.1 Patch available CNA
  • strawberry-graphql (PyPI) Vendor— Affected 0.217.0 to before 0.326.1 Fixed in 0.326.1 Patch available GHSA-pfvf-fwfp-25mp

Remediation

Upgrade strawberry-graphql on PyPI to version 0.326.1, which fixes this issue.

Written with Claude Haiku 5.5 from the sources below · 2026-10-29

  • Fix · CNA strawberry (strawberry-graphql) Fixed in 0.326.1
  • Fix · GHSA-pfvf-fwfp-25mp strawberry-graphql (PyPI) Fixed in 0.326.1 Advisory →

Vendor assessments

Red Hat

Red Hat rating: Important. Red Hat's page for this CVE →

ProductStatusPlan or fix
Exploit IntelligenceAffectedNo fix yet

Timeline

  1. 2026-10-09 Threatist record created from CVE-2026-107728
  2. 2026-10-09 Alias added: GHSA-pfvf-fwfp-25mp
  3. 2026-10-09 Fix available: PyPI/[email protected] · GHSA-pfvf-fwfp-25mp
  4. 2026-10-09 CVSS score added · GHSA-pfvf-fwfp-25mp
  5. 2026-10-09 Weakness changed · GHSA-pfvf-fwfp-25mp
  6. 2026-10-09 6 new references · GHSA-pfvf-fwfp-25mp
  7. 2026-10-10 Priority changed: MEDIUM → LOW
  8. 2026-10-14 CISA SSVC decision points changed
  9. 2026-10-14 Priority changed: LOW → HIGH

References

  • TI-2026-35210 Strawberry GraphQL's Bypass of MaxAliasesLimiter via Fragment Spreads leading to GraphQL Alias Amplification CVSS 3.1MEDIUM 5.3
  • TI-2026-35209 Strawberry GraphQL has a Circular Fragment Reference DOS CVSS 3.1MEDIUM 5.3
  • TI-2009-01689 Directory traversal vulnerability in plugins/ddb/foot.php in Strawberry 1.1.1 allows… CVSS 2.0HIGH 9.3
  • TI-2026-69807 Strawberry legacy graphql-ws retains completed subscription slots CVSS 3.1LOW 3.7
  • TI-2026-27641 Strawberry GraphQL affected by a Denial of Service via unbounded WebSocket subscriptions CVSS 3.1HIGH 7.5
  • TI-2026-27639 Authentication bypass in strawberry-graphql via legacy graphql-ws WebSocket subprotocol CVSS 3.1HIGH 7.5
See all 9 →

Sources