14 points par GN⁺ 2025-01-06 | 3 commentaires | Partager sur WhatsApp
  • De nombreuses applications intègrent directement des modèles d’IA sur l’appareil. C’est avantageux lorsque l’inférence rapide et l’accès hors ligne sont importants
  • Mais la présence du fichier modèle sur l’appareil signifie aussi que l’utilisateur peut potentiellement l’extraire et l’analyser

Objectif

  • L’application Seeing AI de Microsoft est une « caméra parlante » pour les personnes malvoyantes, capable de reconnaître des objets, des documents, des billets, etc., puis de les décrire à voix haute
  • Sa fonction de reconnaissance de devises prend notamment en charge plus de 17 monnaies et reconnaît 225 billets uniques
  • Le modèle est inclus dans le fichier APK de distribution de l’application, mais sous la forme d’un fichier chiffré (currency)
  • Si le fichier n’est protégé que par un chiffrement simple, il est possible de l’extraire en suivant la mémoire ou le processus de déchiffrement pendant l’exécution de l’application

Enquête initiale

  • Les applications Android sont distribuées sous forme de fichiers APK, des archives qui contiennent tout le nécessaire à leur exécution
  • Les modèles d’IA sont généralement stockés avec ces ressources
  • apktool permet de décompiler un APK et d’en analyser la structure
  • Dans le dossier assets, un fichier nommé currency a été trouvé, mais il est chiffré

Aller plus loin

  • Il est possible de faire de la rétro-ingénierie pour comprendre comment l’application déchiffre le fichier currency
  • Il a été confirmé que TensorFlow Lite est utilisé dans com.microsoft.seeingai
  • org.tensorflow.lite.NativeInterpreterWrapper peut être utilisé pour charger des modèles *.tflite

Utiliser Frida

  • Frida est un outil d’instrumentation dynamique qui fonctionne sur presque tous les systèmes d’exploitation et permet de se connecter à un processus en cours d’exécution pour en modifier le comportement
  • On peut s’attacher à un processus pendant son exécution pour suivre les appels de méthodes, inspecter les arguments et les valeurs de retour, ou remplacer le contenu d’une méthode par la logique de son choix
    • Exemple : on peut modifier checkKey(key) pour qu’elle renvoie toujours true
  • Objection est un outil CLI qui regroupe des scripts Frida et s’avère utile pour l’analyse d’applications mobiles
  • En traçant les appels de fonction de org.tensorflow.lite.NativeInterpreterWrapper, il est possible de dumper le modèle sur le disque
    • Lors de l’exécution de l’application, .createModelWithBuffer(java.nio.ByteBuffer, long) est appelé, et le ByteBuffer transmis a de fortes chances d’être le modèle .tflite déchiffré
    • En remplaçant cette méthode via un hook par du code de dump, on peut enregistrer le modèle sur le disque
  • La commande adb pull permet ensuite de récupérer en local le modèle .tflite extrait (currency.tflite)
  • On peut le charger avec un outil comme Netron pour vérifier qu’il s’agit bien d’un véritable modèle TensorFlow Lite (couches, poids, biais, etc.)
  • Dump complet du modèle de reconnaissance de devises réussi

CTRL + C; CTRL + V

  • Cette attaque peut être appliquée à des applications qui utilisent TensorFlow Lite
  • Par exemple, Adobe Scan est une excellente application que j’utilise souvent, et sa meilleure fonctionnalité est la numérisation de documents avec l’appareil photo du téléphone
    • Quelqu’un...

Points d’attention

  • Les modèles extraits sont protégés par le droit d’auteur ; il faut éviter toute utilisation ou modification non autorisée sans permission légale appropriée
  • La méthode présentée dans ce billet est destinée à la recherche ; en pratique, il faut tenir compte des lois applicables et des questions de propriété intellectuelle

3 commentaires

 
yangeok 2025-01-14

Et les modèles aussi, reverse engineering,,

 
jhj0517 2025-01-06

Waouh, extraire le fichier de poids à partir d’un APK ??
C’est limité à certaines bibliothèques, mais c’est impressionnant..

 
GN⁺ 2025-01-06
Commentaires Hacker News
  • Extraire des modèles de ML n’est que la première étape ; la seconde consiste à gérer les transformations avant l’entrée des données et le format de sortie
  • L’utilisation du ML sur l’appareil présente le grand avantage d’améliorer la confidentialité des utilisateurs
  • Pour les développeurs d’apps qui envisagent tflite, il est plus sûr d’héberger les modèles sur Firebase puis de les supprimer une fois le travail terminé
    • Firebase offre des fonctionnalités comme la gestion des versions des mises à jour de modèles, les tests A/B et la réduction de la taille de l’APK
  • Gboard utilise le chiffrement homomorphe pour apprendre les mots courants du grand public et fournir des suggestions chiffrées
    • Par exemple, il existe deux orthographes courantes de « bizarre » dans Gboard
  • Les modèles d’IA sont considérés comme de la propriété intellectuelle, et leur utilisation ou modification nécessite l’autorisation explicite de leur propriétaire
  • C’est une bonne chose d’avoir libéré un modèle ouvert entraîné sur des données ouvertes pour les personnes malvoyantes
    • L’article, le code, les données d’entraînement et le modèle peuvent être téléchargés sur GitHub
    • Ils sont publiés sous licences MIT et CDLA-Permissive-2.0
  • Selon la position des principaux acteurs, télécharger des modèles à grande échelle et entraîner des modèles de ML n’enfreint pas les droits de propriété intellectuelle
  • Il existe un article de recherche intéressant sur l’extraction de modèles à grande échelle depuis des apps Android
  • L’outil Frida est très utile, et beaucoup de gens s’intéressent aux questions de propriété intellectuelle
    • Cela semble être une tentative de ne pas faire la promotion de méthodes pour « voler » des modèles afin d’éviter des problèmes juridiques