graphql-core, eine Python-Portierung der GraphQL.js-Referenzimplementierung, verliert Speicher, wenn ein GraphQL-Dokument mehr als 100 Validierungsfehler erzeugt. Jede abgebrochene Validierung hängt Frames an ein gemeinsam genutztes Exception-Objekt an, sodass Dokumente und Validierungskontexte für die gesamte Laufzeit des Prozesses im Speicher bleiben. Ein nicht authentifizierter Angreifer kann wiederholt eine kleine Abfrage senden, bis der Speicher des Workers vor der Ausführung erschöpft ist. Dies führt zu einem Denial of Service, ohne dass Daten offengelegt oder verändert werden.
graphql-python · graphql-core
graphql-core, eine Python-Portierung der Referenzimplementierung GraphQL.js, zählt Kommentar-Tokens nicht zum Limit max_tokens. Ein nicht authentifizierter Angreifer aus dem Netz kann ein stark komprimierbares, mit Kommentaren aufgefülltes GraphQL-Dokument senden, das das Token-Limit passiert, während der Parser viele Token-Objekte allokiert und behält. Dadurch kann der Arbeitsspeicher des Worker-Prozesses erschöpft werden, bevor die AST-basierten Kontrollen zu Tiefe oder Komplexität greifen, was zu einem Denial of Service führt. Voraussetzung ist nur, dass die Anwendung unvertrauenswürdige GraphQL-Eingaben parst.
graphql-python · graphql-core
graphql-core, eine Python-Portierung der Referenzimplementierung GraphQL.js, enthält eine Schwachstelle in der Validierungsregel OverlappingFieldsCanBeMerged. Speziell aufgebaute, stark komprimierbare GraphQL-Abfragen können die Validierung in quadratischen oder noch höheren CPU-Aufwand treiben, bevor eine Tiefen- oder Komplexitätskontrolle greift. Ein nicht authentifizierter Angreifer aus dem Netzwerk kann mit einer kleinen Abfrage einen Worker-Prozess blockieren und einen Dienst mit mehreren Workern überlasten. Die Regel ist standardmässig aktiviert, daher sind GraphQL-Endpunkte auf betroffenen Versionen exponiert.
graphql-python · graphql-core