- 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
apktoolpermet de décompiler un APK et d’en analyser la structure- Dans le dossier
assets, un fichier nommécurrencya é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.NativeInterpreterWrapperpeut ê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 toujourstrue
- Exemple : on peut modifier
- 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 leByteBuffertransmis a de fortes chances d’être le modèle.tflitedéchiffré - En remplaçant cette méthode via un hook par du code de dump, on peut enregistrer le modèle sur le disque
- Lors de l’exécution de l’application,
- La commande
adb pullpermet ensuite de récupérer en local le modèle.tfliteextrait (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
Et les modèles aussi, reverse engineering,,
Waouh, extraire le fichier de poids à partir d’un APK ??
C’est limité à certaines bibliothèques, mais c’est impressionnant..
Commentaires Hacker News
tflite, il est plus sûr d’héberger les modèles sur Firebase puis de les supprimer une fois le travail terminé