- Viele Apps integrieren AI-Modelle direkt auf dem Gerät. Das ist vorteilhaft, wenn schnelle Inferenz und Offline-Zugriff wichtig sind
- Das Vorhandensein der Modelldatei auf dem Gerät bedeutet jedoch auch, dass Nutzer diese Datei extrahieren und analysieren können
Ziel
- Microsofts Seeing AI-App ist eine „sprechende Kamera“ für sehbehinderte Menschen, die Objekte, Dokumente, Geldscheine und mehr erkennt und per Sprache beschreibt
- Insbesondere die Währungserkennung unterstützt mehr als 17 Währungen und erkennt 225 eindeutige Banknoten
- Das Modell ist zwar im APK-Paket der App enthalten, liegt dort aber als verschlüsselte Datei (
currency) vor - Wenn die Datei nur einfach verschlüsselt ist, kann man ihren Speicherbereich oder den Entschlüsselungsprozess während der App-Ausführung verfolgen und die Datei extrahieren
Erste Untersuchung
- Android-Apps werden als APK-Dateien verteilt, also Archive, die alles enthalten, was zum Ausführen der App nötig ist
- AI-Modelle werden in der Regel zusammen mit diesen Assets gespeichert
- Mit
apktoollässt sich eine APK dekompilieren und ihre Struktur analysieren - Im Ordner
assetswurde eine Datei namenscurrencygefunden, die jedoch verschlüsselt ist
Einen Schritt weiter
- Es ist möglich, per Reverse Engineering nachzuvollziehen, wie die App die Datei
currencyentschlüsselt - Es wurde bestätigt, dass TensorFlow Lite in
com.microsoft.seeingaiverwendet wird - Mit
org.tensorflow.lite.NativeInterpreterWrapperlassen sich*.tflite-Modelle laden
Frida verwenden
- Frida ist ein Dynamic-Instrumentation-Tool, das auf nahezu allen Betriebssystemen läuft und sich an laufende Prozesse anhängen kann, um ihr Verhalten zu verändern
- Während der Prozess läuft, kann man Methodenaurufe verfolgen, Argumente und Rückgabewerte prüfen oder den Methodeninhalt durch eigene Logik ersetzen
- Beispiel:
checkKey(key)könnte so geändert werden, dass es immertruezurückgibt
- Beispiel:
- Objection ist ein CLI-Tool, das Frida-Skripte bündelt und für die Untersuchung mobiler Apps nützlich ist
- Durch das Verfolgen von Funktionsaufrufen von
org.tensorflow.lite.NativeInterpreterWrapperwurde das Modell auf die Festplatte gedumpt- Beim Start der App wird
.createModelWithBuffer(java.nio.ByteBuffer, long)aufgerufen; das dabei übergebeneByteBufferist sehr wahrscheinlich das entschlüsselte.tflite-Modell - Ersetzt man diese Methode per Hooking durch Code zum Dumpen, kann das Modell auf die Festplatte geschrieben werden
- Beim Start der App wird
- Mit dem Befehl
adb pullwurde das extrahierte.tflite-Modell (currency.tflite) auf ein lokales Gerät kopiert - Mit Tools wie Netron wurde geprüft, ob es sich tatsächlich um ein TensorFlow-Lite-Modell handelt (Layer, Gewichte, Biases usw.)
- Der vollständige Dump des Währungserkennungsmodells war erfolgreich
CTRL + C; CTRL + V
- Dieser Angriff lässt sich gegen Apps einsetzen, die TensorFlow Lite verwenden
- Ein Beispiel ist Adobe Scan, eine wirklich großartige App, die ich selbst oft nutze; ihre beste Funktion ist das Scannen von Dokumenten mit der Handykamera
- Jemand..
Hinweise
- Das extrahierte Modell ist urheberrechtlich geschützt; eine Nutzung oder Modifikation ohne rechtmäßige Genehmigung sollte vermieden werden
- Die in diesem Beitrag beschriebene Methode dient Forschungszwecken; bei einer praktischen Anwendung müssen einschlägige Gesetze und Fragen des geistigen Eigentums berücksichtigt werden
3 Kommentare
Und auch Modelle werden zurückentwickelt,,
Wow, die Weight-Datei aus einer APK-Datei extrahieren??
Zwar auf bestimmte Bibliotheken beschränkt, aber trotzdem beeindruckend..
Hacker-News-Kommentare
tflitein Betracht ziehen, ist es sicherer, Modelle auf Firebase zu hosten und sie nach Abschluss der Aufgabe zu löschen.