14 puntos por GN⁺ 2025-01-06 | 3 comentarios | Compartir por WhatsApp
  • Muchas apps están integrando modelos de IA directamente en el dispositivo. Esto es ventajoso cuando la inferencia rápida y el acceso sin conexión son importantes
  • Sin embargo, que el archivo del modelo exista dentro del dispositivo también significa que el usuario puede extraerlo y analizarlo

Objetivo

  • La app Seeing AI de Microsoft es una "cámara parlante" para personas con discapacidad visual, que reconoce objetos, documentos, billetes y más, y los describe por voz
  • En particular, la función de reconocimiento de billetes soporta más de 17 monedas y reconoce 225 billetes únicos
  • El modelo está incluido dentro del archivo APK, formato de distribución de la app, pero existe como un archivo cifrado (currency)
  • Si el archivo está cifrado de forma simple, es posible extraerlo rastreando la memoria o el proceso de descifrado mientras la app se ejecuta

Investigación inicial

  • Las apps de Android se distribuyen como archivos APK, que son archivos comprimidos que contienen todo lo necesario para ejecutar la app
  • Los modelos de IA normalmente se almacenan junto con estos recursos
  • Se puede usar apktool para decompilar el APK y analizar su estructura
  • En la carpeta assets se encontró un archivo llamado currency, pero está cifrado

Ir más allá

  • Se puede hacer ingeniería inversa para ver cómo la app descifra el archivo currency
  • Se confirmó que TensorFlow Lite se usa en com.microsoft.seeingai
  • Se puede cargar modelos *.tflite usando org.tensorflow.lite.NativeInterpreterWrapper

Usar Frida

  • Frida es una herramienta de instrumentación dinámica que puede ejecutarse en casi cualquier sistema operativo y conectarse a procesos en ejecución para modificar su comportamiento
  • Puedes adjuntarte a un proceso en ejecución para rastrear llamadas a métodos, revisar argumentos y valores de retorno, o sobrescribir el contenido del método con la lógica que quieras
    • Ejemplo: también podrías cambiar checkKey(key) para que siempre devuelva true
  • Objection es una herramienta CLI que reúne scripts de Frida y es útil para investigar apps móviles
  • Se rastrearon las llamadas a funciones de org.tensorflow.lite.NativeInterpreterWrapper para volcar el modelo al disco
    • Cuando la app se ejecuta, se llama a .createModelWithBuffer(java.nio.ByteBuffer, long), y en ese momento es muy probable que el ByteBuffer que se pasa sea el modelo .tflite ya descifrado
    • Si mediante hooking se reemplaza este método con código para volcado, se puede guardar ese modelo en disco
  • Con el comando adb pull se llevó el modelo .tflite extraído (currency.tflite) al dispositivo local
  • Se cargó con una herramienta como Netron para comprobar que realmente era un modelo TensorFlow Lite (capas, pesos, sesgos, etc.)
  • Se logró un volcado completo del modelo de reconocimiento de billetes

CTRL + C; CTRL + V

  • Este ataque puede aprovecharse contra apps que usan TensorFlow Lite
  • Por ejemplo, Adobe Scan es una app excelente que yo uso con frecuencia, y una de sus mejores funciones es escanear documentos con la cámara del teléfono
    • Alguien...

Precauciones

  • Los modelos extraídos están protegidos por derechos de autor, por lo que debe evitarse su uso o modificación sin autorización legal adecuada
  • El método de esta publicación es con fines de investigación, y al aplicarlo en la práctica es necesario considerar las leyes relevantes y los temas de propiedad intelectual

3 comentarios

 
yangeok 2025-01-14

Y también hacen ingeniería inversa del modelo,,

 
jhj0517 2025-01-06

Guau, ¿extraer el archivo de pesos desde un APK?
Aunque esté limitado a ciertas bibliotecas, es impresionante..

 
GN⁺ 2025-01-06
Comentarios de Hacker News
  • Extraer modelos de ML es el primer paso; el segundo es manejar la transformación de los datos de entrada y el formato de salida
  • Usar ML en el dispositivo tiene la gran ventaja de mejorar la privacidad del usuario
  • Para los desarrolladores de apps que consideran usar tflite, una forma más segura es alojar el modelo en Firebase y eliminarlo cuando termine el trabajo
    • Firebase ofrece funciones como control de versiones para actualizaciones de modelos, pruebas A/B y reducción del tamaño del APK
  • Gboard usa cifrado homomórfico para aprender palabras comunes de uso público y ofrecer sugerencias cifradas
    • Por ejemplo, en Gboard hay dos grafías comunes de "bizarre"
  • Los modelos de IA se consideran propiedad intelectual, y se necesita el permiso explícito del propietario antes de usarlos o modificarlos
  • Bien hecho por liberar un modelo abierto entrenado con datos abiertos para personas con discapacidad visual
    • El artículo relacionado, el código, los datos de entrenamiento y el modelo se pueden descargar desde GitHub
    • Está bajo las licencias MIT y CDLA-Permissive-2.0
  • Según la postura de los actores principales, descargar modelos a gran escala y entrenar modelos de ML no infringe los derechos de propiedad intelectual
  • Hay un interesante artículo de investigación sobre la extracción masiva de modelos desde apps de Android
  • La herramienta Frida es muy útil, y a mucha gente le interesan los temas de propiedad intelectual
    • Parece un intento de no publicitar cómo "robar" modelos para evitar problemas legales