Video: 10 Seltsame Entdeckungen, die niemand erklären kann (Dezember 2024)
Digitale Signatur nicht defekt
Der springende Punkt beim digitalen Signieren eines Dokuments oder einer Datei ist der Nachweis, dass die Datei nicht geändert wurde. Der Prozess verwendet eine Form der Public-Key-Kryptographie. Sie signieren eine Datei digital, indem Sie sie mit Ihrem privaten Schlüssel verschlüsseln. Die Tatsache, dass die verschlüsselte Datei mit Ihrem öffentlichen Schlüssel entschlüsselt werden kann, ist ein Beweis dafür, dass keine Manipulationen vorgenommen wurden. Hätte BlueBox eine Möglichkeit gefunden, eine Datei tatsächlich zu ändern, ohne ihre digitale Signatur zu ändern, wäre dies ein schwerer Schlag für die gesamte Kryptoindustrie gewesen. Aber sie haben es nicht getan.
BlueBox wird in wenigen Wochen auf der Black Hat-Konferenz über alle Details ihrer Forschung berichten. ViaForensics-Forscher Pau Oliva Fora hat jedoch einen Proof-of-Concept-Code veröffentlicht, der die Vorgehensweise veranschaulicht.
In Wahrheit ist es sehr, sehr einfach. APK-Dateien werden mit einer Version des weit verbreiteten ZIP-Archivierungsalgorithmus gepackt. Die meisten ZIP-Implementierungen erlauben nicht zwei gleichnamige Dateien in einem Archiv, aber der Algorithmus selbst verbietet diese Möglichkeit nicht. Beim Überprüfen der digitalen Signatur einer App überprüft das Android-Betriebssystem die erste übereinstimmende Datei. Beim Ausführen und Starten der Datei wird jedoch die letzte Datei erfasst. Um eine App zu trojanisieren, müssen Sie lediglich Ihren bösartigen Code unter Verwendung eines in der App bereits vorhandenen Namens einschleusen. Foras Demonstration besteht nur aus ein paar Dutzend Zeilen Java-Code.
Ein weiterer struktureller Angriff
Ein chinesischer Forscher, der als Android Security Squad bloggte, fand die Demonstration faszinierend und suchte nach anderen Wegen, um den Überprüfungsprozess zu untergraben. Das Lesen des von Google übersetzten Beitrags ist etwas schwierig, aber es scheint, dass der Angriff auf einem Computer Science 101-Konzept beruht.
Computerprogramme speichern Zählzahlen in Bit-Sammlungen fester Größe. Mit acht Bits können Sie beispielsweise Zahlen von 0 bis 255 darstellen. Wenn es erforderlich ist, negative Zahlen darzustellen, besteht die langjährige Konvention darin, dass das Bit ganz links eine negative Zahl angibt. Mit acht Bits können Sie also auch Zahlen von -128 bis 127 darstellen. Die Binärzahl 11111111 stellt entweder 255 oder -1 dar, je nachdem, ob es sich um eine vorzeichenlose oder eine vorzeichenbehaftete Zahl handelt.
Android Security Squad hat das Header-Format der APK-Datei durchforstet und ein Datenfeld gefunden, das als positiver Versatz angenommen wird, das jedoch als Ganzzahl mit Vorzeichen gespeichert ist. Das Erzwingen eines bestimmten negativen Werts für dieses Feld führt dazu, dass der APK-Loader den schädlichen Code ausführt und nicht den bereits überprüften, digital signierten Code. OK, es ist etwas komplexer, aber ungefähr so funktioniert es.
Bleiben Sie bei Google Play
Keiner dieser Hacks untergräbt tatsächlich den Mechanismus der digitalen Signatur von Android. Vielmehr nutzen beide die Macken in der APK-Struktur, um die digitale Signatur irrelevant zu machen. Keiner von beiden ermöglicht es einer trojanisierten App, sich an Googles Analyse vorbei zu schleichen. Google hat Google Play speziell aktualisiert, um trojanisierte Apps mithilfe des "Hauptschlüssel" -Angriffs herauszufiltern. Selbst ohne diesen Schritt würde die Standardsicherheit mit ziemlicher Sicherheit jede Art von trojanisierter App blockieren.
Die Lektion ist klar. Beziehen Sie Ihre Apps immer aus legitimen Quellen, überprüfen Sie immer, ob der Name des Entwicklers gültig ist, und konfigurieren Sie Ihr Telefon so, dass die Installation von Apps aus "unbekannten Quellen" nicht möglich ist. Achten Sie darauf, welche Berechtigungen eine App anfordert, und brechen Sie eine verdächtig aussehende Installation ab. Wenn Ihr Mobilfunkanbieter ein Android-Update anbietet, installieren Sie es immer. Es ist nur gesunder Menschenverstand!