Autorisation incorrecte dans strawberry-graphql (CVE-2026-107728)
Résumé
Vulnérabilité dans strawberry-graphql (CVE-2026-107728). Des informations confidentielles peuvent être exposées. Exploitable via supports_sync. Atténuation : mise à jour vers 0.326.1 ou plus.
Description d'origine
La description telle que publiée par la source (souvent en anglais).
Summary
PermissionExtension.resolve() evaluates the return value of has_permission() for truthiness on the synchronous path. supports_sync only classifies a permission as asynchronous when has_permission is declared with async def (via inspect.iscoroutinefunction), so a plain def that returns an awaitable is treated as synchronous. An awaitable is always truthy, so the check passes even when it resolves to False and the protected resolver runs.
The resolve path is chosen by the field resolver, not by the execution method, so any field with a synchronous resolver is affected under both execute_sync() and execute(). Permissions declared with async def has_permission(), or a plain def returning a boolean, are not affected.
Details
The affected code is PermissionExtension.resolve() in strawberry/permission.py. A permission attached to a field whose has_permission is a normal def returning an awaitable reaches this path; the awaitable is never awaited and its truthiness grants access. resolve_async() is not affected because it uses await_maybe().
PoC
import strawberry
from strawberry.permission import BasePermission
class DenyViaAwaitable(BasePermission):
message = "denied"
def has_permission(self, source, info, **kwargs):
async def result():
return False
return result()
@strawberry.type
class Query:
@strawberry.field(permission_classes=[DenyViaAwaitable])
def secret(sel…
Source: NIST National Vulnerability Database NVD GitHub Advisory
Résumé généré automatiquement
Assemblé par SecPulse à partir des données sources (CVSS, CWE, versions affectées) à l'aide de modèles, sans IA. Vérifiez la description d'origine et les références ci-dessous.
Une vulnérabilité référencée CVE-2026-107728 a été découverte dans strawberry-graphql.
Des attaquants peuvent cibler un point d'entrée spécifique comme supports_sync à distance pour détourner le produit.
Des informations confidentielles peuvent être exposées. Score CVSS : 7.5/10.
Action : mettez à jour strawberry-graphql vers 0.326.1 ou supérieur.
En cas de doute, contactez votre service informatique ou cherchez « strawberry-graphql CVE-2026-107728 » sur le site de l'éditeur.
CVE-2026-107728 (strawberry-graphql) — CWE-863 / CVSS v3 7.5
Vecteur d'attaque : distant (réseau) / non authentifié / sans interaction utilisateur
Surface d'attaque : supports_sync / has_permission / inspect.iscoroutinefunction / def
Correctif : 0.326.1 — appliquer immédiatement
Plan : 1) Audit SBOM, 2) Mise à jour staging→prod, 3) Surveillance WAF/proxy sur les endpoints affectés, 4) Recherche d'IOC dans les logs.
Réfs : voir GHSA / avis éditeur / version corrigée liés sur cette page.
Une autorisation incorrecte (CWE-863) affecte strawberry-graphql. Les attaquants atteignent le code vulnérable via supports_sync sans authentification.
Consultez l'avis de l'éditeur pour les versions affectées de strawberry-graphql. Surface d'attaque : supports_sync / has_permission / inspect.iscoroutinefunction / def.
Gravité : Élevée (CVSS 7.5/10). Des informations confidentielles peuvent être exposées.
Mettre à jour vers 0.326.1.
En attendant le correctif : désactivez la fonctionnalité concernée, appliquez des règles WAF, ou restreignez l'accès par ACL réseau.
Recherchez dans les logs des requêtes correspondant aux IOC connus de cette CVE. Auditez les SBOM/dépendances.
Actions de réponse
Étapes concrètes et exemples de commandes que les équipes SOC/SRE doivent exécuter dans l'ordre
-
1Identify exposure identify
grep -r 'strawberry-graphql' . | grep -v node_modulesリポジトリと本番環境の依存ファイル (package-lock.json / requirements.txt / go.sum / Gemfile.lock 等) で
strawberry-graphqlを grep し、稼働しているサービス・バージョンを把握する。 -
2Apply patch patch
Upgrade strawberry-graphql to 0.326.1ステージング環境で 0.326.1 に上げて回帰テスト → 本番反映。回帰テストはアプリの主要ハッピーパスを含めること。
-
3Post-deployment verification verify
Confirm patched version is live in productionパッチ適用後、ステージングで PoC または同等の悪用パターンを再現して脆弱性が閉じたことを確認。本番ではアクセスログ・WAF でアラート再発が無いか継続監視。