GraphQLer: Enhancing GraphQL Security with Context-Aware API Testing
GraphQLer ist ein Open-Source-Framework für automatisierte Sicherheitstests, das die Sicherheit von GraphQL-APIs durch die Konstruktion typisierter Abhängigkeitsgraphen aus Live-Schemas verbessert, um mehrstufige Schwachstellenketten zu synthetisieren und dadurch bestehende Tools wie ZAP und EvoMaster bei der Erkennung komplexer, zustandsabhängiger Fehler wie IDOR, UAF und Injection-Schwachstellen übertrifft.
Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Stellen Sie sich das Internet als eine riesige, geschäftige Stadt vor, in der verschiedene Computerprogramme (Apps) ständig miteinander kommunizieren, um Informationen auszutauschen. Jahrelang folgten diese Gespräche einer strengen, vorhersehbaren Karte: Wenn man ein Bild wollte, fragte man nach dem „Bild“-Ordner; wenn man eine Nachricht wollte, fragte man nach dem „Nachricht“-Ordner. Das war wie das Bestellen von einer Speisekarte, bei der jedes Gericht einen festen Namen und einen festen Ort hat. Aber vor kurne wurde eine neue Art des Sprechens namens GraphQL populär. Anstatt einer festen Speisekarte ist GraphQL wie ein magischer, formverändernder Verkaufsautomat. Man kann genau das verlangen, was man möchte, und er versucht, es einem vor Ort zusammenzustellen. Das Problem ist, dass dieser Automat, weil er so flexibel ist, manchmal vergisst zu prüfen, wer vor ihm steht. Ein normaler Verkaufsautomat gibt vielleicht nur eine Limonade an jemanden mit einer Münze aus, aber dieser magische Automat könnte versehentlich ein privates Tagebuch oder ein Bankkonto herausgeben, wenn man auf die richtige Weise fragt. Hier kommen Sicherheitsforscher ins Spiel, die versuchen herauszufinden, wie man den Automaten dazu überreden kann, seine Geheimnisse preiszugeben, ohne dabei die ganze Stadt abzureißen.
Das Papier, das Sie gleich lesen werden, stellt einen neuen digitalen Detektiv namens GraphQLer vor. Denken Sie daran, dass die meisten Sicherheitsscanner wie tollpatschige Touristen sind, die an den Verkaufsautomaten herantreten, wahllos einen Knopf drücken und sehen, was passiert. Wenn sie „Limonade“ drücken und eine Limonade bekommen, gehen sie weiter. Wenn sie „Wasser“ drücken und eine Fehlermeldung erhalten, geben sie auf. Sie merken nie, dass man, um an den „Geheimen Vorrat“ zu gelangen, zuerst „Limonade kaufen“, dann „Quittung holen“ und dann den „Geheimen Vorrat“ drücken muss. Die alten Werkzeuge sind zu dumm, um die Punkte zu verbinden; sie testen jeden Knopf isoliert und übersehen die komplexen Sequenzen, die erforderlich sind, um das System zu knacken.
GraphQLer ist anders. Es ist wie ein Detektiv, der zuerst die Blaupausen der Maschine (das „Schema“) studiert, um zu verstehen, wie die Knöpfe miteinander verbunden sind. Er erstellt eine mentale Landkarte, die zeigt, dass „Knopf A“ ein neues Objekt erstellt, „Knopf B“ es löscht und „Knopf C“ es vielleicht immer noch sehen kann, selbst nachdem es weg ist. Mit dieser Karte drückt GraphQLer nicht einfach wahllos Knöpfe; es erstellt spezifische Ketten von Aktionen. Es simuliert ein Szenario, in dem ein Benutzer ein Objekt kauft, dann versucht, es zu stehlen, oder es löscht und dann versucht, es erneut zu lesen.
Die Forscher haben diesen neuen Detektiv an 21 verschiedenen realen und fiktiven, aber realistischen APIs (den getesteten Computersystemen) getestet. Sie fanden heraus, dass GraphQLer eine massive Verbesserung gegenüber den alten Werkzeugen darstellt. Während die besten existierenden Werkzeuge nur etwa 29 % der Knöpfe der Maschine erreichen konnten, gelang es GraphQLer, 85,52 % von ihnen zu erreichen.ت Wichtiger noch: Wenn es darum ging, die kniffligen Sicherheitslücken zu finden, fanden die alten Werkzeuge null der komplexen, mehrstufigen Probleme. GraphQLer hingegen fand alle fünf bestätigten „IDOR“-Schwachstellen (bei denen man den Kram eines anderen sehen kann, indem man einfach eine Nummer ändert) und entdeckte sogar einen „Use-After-Free“-Bug (bei dem man eine Datei sehen kann, nachdem sie gelöscht wurde).
In einem realen Test an einem Finanzsystem (das die Autoren aus Gründen der Anonymität „FinServ“ nennen) fand GraphQLer acht potenzielle Sicherheitsmängel, ohne dafür Passwörter oder geheime Dokumente zu benötigen. Es fand sogar Wege, das System zum Absturz zu bringen und dessen internen Code preiszugeben, was ein großes No-Go für die Sicherheit ist. Das Papier zeigte auch, dass GraphQLer bekannte Schwachstellen in einer populären Open-Source-Plattform namens Saleor reproduzieren konnte, was beweist, dass es an Systemen funktioniert, die bereits als defekt bekannt sind.
Die Autoren sind sehr vorsichtig mit dem Hinweis, dass ihr Werkzeug zwar exzellent darin ist, diese spezifischen Arten von Kettenreaktions-Bugs zu finden, aber kein Zauberstab ist, der alles löst. Es hat immer noch Schwierigkeiten mit einigen sehr spezifischen, komplexen Szenarien, in denen die Maschine mehrere Informationen gleichzeitig benötigt, damit sie funktioniert. Aber für die überwiegende Mehrheit der modernen Apps, die diese flexible GraphQL-Technologie nutzen, beweist GraphQLer, dass man nicht mehr nur Knöpfe einzeln testen kann. Man muss die Geschichte verstehen, die die Maschine erzählt, und erst dann kann man die Logiklücken im Plot finden.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.