Directus: Unauthenticated Denial of Service via GraphQL Alias Amplification of Expensive Health Check Resolver
Platform
nodejs
Component
directus
Opgelost in
11.17.0
## Samenvatting De GraphQL specificatie staat het toe dat een enkele query hetzelfde veld meerdere keren herhaalt met behulp van aliases, waarbij elke alias standaard onafhankelijk wordt opgelost. Directus dedupliceerde resolver invocaties binnen een enkele request niet, wat betekende dat elke alias een volledige, onafhankelijke uitvoering van de onderliggende resolver triggerde. De health check resolver voerde alle backend checks uit (database connectiviteit, cache, storage writes en SMTP verificatie) bij elke invocatie. Gecombineerd met ongeauthenticeerde toegang tot het systeem GraphQL endpoint, maakte dit het mogelijk voor een aanvaller om het resourceverbruik aanzienlijk te vergroten vanaf een enkele HTTP request, waardoor de database connection pool, storage I/O en SMTP verbindingen uitgeput werden. ## Fix Een request-scoped resolver deduplicatiemechanisme is geïntroduceerd en breed toegepast op alle GraphQL read resolvers, zowel systeem als items endpoints. Wanneer meerdere aliases in een enkele request dezelfde resolver met identieke argumenten aanroepen, wordt alleen de eerste aanroep uitgevoerd; alle volgende aliases delen het resultaat. Dit elimineert de amplificatiefactor, ongeacht hoeveel aliases een aanvaller in een query opneemt. ## Impact - **Service degradatie of uitval:** Database
Hoe te verhelpen
Geen officiële patch beschikbaar. Zoek naar tijdelijke oplossingen of monitor updates.
Bewaak uw afhankelijkheden automatisch
Ontvang meldingen wanneer nieuwe kwetsbaarheden uw projecten beïnvloeden.
Gratis beginnen