14 Punkte von GN⁺ 2025-01-06 | 3 Kommentare | Auf WhatsApp teilen
  • 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 apktool lässt sich eine APK dekompilieren und ihre Struktur analysieren
  • Im Ordner assets wurde eine Datei namens currency gefunden, die jedoch verschlüsselt ist

Einen Schritt weiter

  • Es ist möglich, per Reverse Engineering nachzuvollziehen, wie die App die Datei currency entschlüsselt
  • Es wurde bestätigt, dass TensorFlow Lite in com.microsoft.seeingai verwendet wird
  • Mit org.tensorflow.lite.NativeInterpreterWrapper lassen 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 immer true zurückgibt
  • 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.NativeInterpreterWrapper wurde das Modell auf die Festplatte gedumpt
    • Beim Start der App wird .createModelWithBuffer(java.nio.ByteBuffer, long) aufgerufen; das dabei übergebene ByteBuffer ist 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
  • Mit dem Befehl adb pull wurde 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

 
yangeok 2025-01-14

Und auch Modelle werden zurückentwickelt,,

 
jhj0517 2025-01-06

Wow, die Weight-Datei aus einer APK-Datei extrahieren??
Zwar auf bestimmte Bibliotheken beschränkt, aber trotzdem beeindruckend..

 
GN⁺ 2025-01-06
Hacker-News-Kommentare
  • Das Extrahieren von ML-Modellen ist der erste Schritt; der zweite besteht darin, die Vorverarbeitung der Eingabedaten und das Ausgabeformat zu handhaben.
  • Der Einsatz von ML auf dem Gerät selbst hat den großen Vorteil, die Privatsphäre der Nutzer zu verbessern.
  • Für App-Entwickler, die tflite in Betracht ziehen, ist es sicherer, Modelle auf Firebase zu hosten und sie nach Abschluss der Aufgabe zu löschen.
    • Firebase bietet Funktionen wie Versionsverwaltung für Modell-Updates, A/B-Tests und eine Verringerung der APK-Größe.
  • Gboard verwendet homomorphe Verschlüsselung, um häufige öffentliche Wörter zu lernen und verschlüsselte Vorschläge bereitzustellen.
    • Zum Beispiel gibt es in Gboard zwei gebräuchliche Schreibweisen von „bizarre“.
  • AI-Modelle gelten als geistiges Eigentum, und vor ihrer Nutzung oder Veränderung ist die ausdrückliche Erlaubnis des Eigentümers erforderlich.
  • Es ist lobenswert, ein offenes, mit offenen Daten trainiertes Modell für Sehbehinderte zugänglich gemacht zu haben.
    • Das zugehörige Paper, der Code, die Trainingsdaten und das Modell können auf GitHub heruntergeladen werden.
    • Sie stehen unter den Lizenzen MIT und CDLA-Permissive-2.0.
  • Nach Ansicht großer Akteure verletzt das massenhafte Herunterladen von Modellen und das Trainieren von ML-Modellen keine Rechte am geistigen Eigentum.
  • Es gibt eine interessante Forschungsarbeit zur massenhaften Extraktion von Modellen aus Android-Apps.
  • Das Tool Frida ist sehr nützlich, und viele Menschen interessieren sich für Fragen des geistigen Eigentums.
    • Es wirkt wie ein Versuch, aus rechtlichen Gründen nicht dafür zu werben, wie man Modelle „stiehlt“.