Die Art von Sicherheitslücke, die Prakash gefunden hat, wird oft mit dem klangvollen Namen IDOR bezeichnet. IDOR steht für Insecure Direct Object Reference.
Bei einer IDOR-Schwachstelle handelt es sich in der Regel um eine Website oder einen Dienst, der einer Person, die die Anwendung ausführt, den Zugriff auf Daten ermöglicht, auf die sie Zugriff hat…
…um herauszufinden, wie man ohne Anmeldung oder gar Authentifizierung auf die Daten anderer zugreifen kann. In der Regel werden Sie feststellen, dass eine Anwendung oder ein Dienst eine URL oder ein Webformular verwendet, das Ihre eigene Benutzer-ID, Seriennummer oder eine andere nicht sehr geheime Kennung enthält, ohne dass Sie auf andere Weise sicher sein können, dass es sich um Sie handelt. Wenn Sie zum Beispiel eine Anfrage mit der ID einer anderen Person, der nächsten Nummer in der Reihe oder einem anderen möglichen Hinweis auf eine andere Person stellen, wird das System die Daten direkt für Sie abrufen, obwohl es sich nicht um Ihren Datensatz handelt und Sie ihn nicht einsehen dürfen.
Theoretisch können viele ausnutzbare IDOR-Schwachstellen rein analytisch durch Reverse Engineering der verdächtigen Anwendung gefunden werden, ohne dass die Erstellung eines gefälschten Kontos und die Ausführung der Anwendung selbst erforderlich sind. In der Praxis ist es oft einfacher und schneller, einige grundlegende Reverse Engineering-Schritte durchzuführen, um eine Vorstellung davon zu bekommen, wonach Sie suchen müssen. Anschließend führen Sie die verdächtige Anwendung aus und beobachten sie dabei. Sie müssen nicht tagelang eine App in einem Decompiler statisch analysieren, wenn Sie die Fehler direkt aus dem Verhalten der App ableiten können: Sie lassen die App einfach ihre eigene Cybersicherheit kochen, während Sie sich Notizen machen.
In diesem Fall hieß die App “Acr call recorder” – für das iPhone, wie viele Apps im App Store, ist sie (oder war es zum Zeitpunkt unserer Überprüfung) mit Hunderten, wenn nicht Tausenden von begeisterten 5-Sterne-Bewertungen übersät.
Wohin das führt, können Sie sich wahrscheinlich denken: Viele dieser 5-Sterne-Bewertungen empfehlen in ihrem Text seltsamerweise eine ganz andere App. Oder sie loben die App mit seltsamen Wendungen, die unwahrscheinliche und sogar beunruhigende Aussagen enthalten.
Zum Beispiel versichert jemand namens Earnest, dass “es definitiv eine Verschwendung ist, diese App nicht auszuprobieren”, während Christopher.1966 sagt, dass er “dieses kleine Ding fast benutzt, seit er in den Zug gestiegen ist”, und Brenda etwas unheimlich, wenn auch redundant, ihre Freude darüber ausdrückt, dass sie jetzt “aufzeichnen kann, was sie und ihre Freundin gesagt haben”. (Ein Anrufrekorder, der keine Anrufe aufzeichnen kann, wäre schlichtweg falsch benannt.)
Auch wenn sich herausstellt, dass Brenda sich auf eine ganz andere App bezieht, die ein Sprachwechsel-Feature beinhaltet, fragt man sich, ob Brendas Freundin wusste, mit wem sie sprach, als sie aufgezeichnet wurde. Brendas 5-Sterne-Bewertung liegt immer noch im attraktiven Durchschnitt von 4,2/5 für die oben erwähnte Anrufaufnahme-App.
Allerdings gibt es auch viele 1-Sterne-Bewertungen, die davor warnen, dass es sich um eine dieser “kostenlosen Test-Apps” handelt, die automatisch in Rechnung gestellt werden, wenn man sie nicht innerhalb von drei Tagen kündigt. Diese Art von kostenlosen Apps hat Elizafish in ihrer Bewertung sehr treffend beschrieben: “FREE ????? Lächerlich”. Aber die vielleicht treffendste Bewertung, zumindest bis die App aktualisiert wurde, nachdem der Entwickler den Fehlerbericht von Anand Prakash erhalten hatte, war die 5-Sterne-Bewertung von Leanne, die schrieb: “Ich kann nicht nur meine Aufnahmen verwalten, sondern sie auch einfach teilen, wenn ich sie brauche. Das ist so praktisch!
Was Leanne jedoch nicht erkannte, war, dass die Cloud-Speicherfunktion der App nicht nur für sie, sondern für jeden auf der Welt praktisch war, selbst für diejenigen, die nicht im Besitz der App oder eines iPhones waren. Es stellte sich heraus, dass es viel einfacher war, ihre Anrufe mit anderen zu teilen, als sie gedacht hatte.
Prakash dekompilierte die App, um nach wahrscheinlichen URLs zu suchen, mit denen sie sich verbinden könnte, überwachte die Ausführung der App und fand heraus, dass eine ihrer Call-Home-Anforderungen ein JSON-Datenblock war, der ungefähr so aussah:
POST /fetch-sinch-recordings.php HTTP/1.1
Host: [REDACTED]
Content-Type: application/json
Connection: close
[. . .more headers, no unique cookies or tokens. . .]
{
“UserID”: “xxxxxx”,
“AppID”: “xxx”
}
Da es keine Möglichkeit gibt, diese Anfrage mit einem bestimmten Benutzer zu verknüpfen, der sich bereits authentifiziert hat, und da der Server keine Möglichkeit hat, zu entscheiden, ob der Absender der Anfrage das Recht hat, Daten anzufordern, die dem durch UserID…… identifizierten Benutzer gehören, kann jemand die UserID eines beliebigen Benutzers in eine gefälschte Anfrage einsetzen, sodass die Daten eines jeden Benutzers vor niemandem sicher sind. Diese Art von Schwachstelle wird IDOR genannt, da sie es Angreifern ermöglicht, ihre Opfer auf unsichere und direkte Weise zu identifizieren, indem sie einfach eine neue UserID direkt in die Anfrage einfügen.