14 pontos por GN⁺ 2025-01-06 | 3 comentários | Compartilhar no WhatsApp
  • Muitos aplicativos estão integrando modelos de IA diretamente no dispositivo. Isso é vantajoso quando inferência rápida e acesso offline são importantes
  • Mas a existência do arquivo do modelo dentro do dispositivo também significa que o usuário pode extraí-lo e analisá-lo

Objetivo

  • O aplicativo Seeing AI, da Microsoft, é uma “câmera falante” para pessoas com deficiência visual, que reconhece objetos, documentos, dinheiro e mais, descrevendo-os por voz
  • Em especial, o recurso de reconhecimento de moeda (currency) oferece suporte a mais de 17 moedas e reconhece 225 cédulas únicas
  • O modelo está incluído dentro do arquivo APK, formato de distribuição do app, mas existe como um arquivo criptografado (currency)
  • Se o arquivo estiver apenas criptografado de forma simples, é possível extraí-lo rastreando a memória ou o processo de descriptografia durante a execução do app

Investigação inicial

  • Aplicativos Android são distribuídos como arquivos APK, que são arquivos compactados contendo tudo o que é necessário para executar o app
  • Modelos de IA normalmente são armazenados junto com esses recursos
  • É possível usar apktool para descompilar o APK e analisar sua estrutura
  • Na pasta assets, foi encontrado um arquivo chamado currency, mas ele está criptografado

Indo além

  • É possível fazer engenharia reversa de como o app descriptografa o arquivo currency
  • Foi confirmado que o TensorFlow Lite é usado em com.microsoft.seeingai
  • É possível carregar modelos *.tflite usando org.tensorflow.lite.NativeInterpreterWrapper

Usando Frida

  • Frida é uma ferramenta de instrumentação dinâmica que roda em praticamente qualquer sistema operacional e pode se conectar a um processo em execução para alterar seu comportamento
  • Você pode se anexar ao processo durante a execução para rastrear chamadas de método, verificar argumentos e valores de retorno, ou sobrescrever o conteúdo do método com a lógica que quiser
    • Exemplo: também seria possível alterar checkKey(key) para sempre retornar true
  • Objection é uma ferramenta CLI que reúne scripts do Frida e é útil para pesquisa de aplicativos móveis
  • Ao rastrear chamadas de função de org.tensorflow.lite.NativeInterpreterWrapper, foi possível fazer dump do modelo em disco
    • Quando o app é executado, .createModelWithBuffer(java.nio.ByteBuffer, long) é chamado, e o ByteBuffer passado nesse momento provavelmente contém o modelo .tflite já descriptografado
    • Ao substituir esse método por código de dump via hooking, é possível salvar esse modelo em disco
  • O modelo .tflite extraído (currency.tflite) foi copiado para o dispositivo local com o comando adb pull
  • Ele foi carregado em uma ferramenta como o Netron para verificar se realmente era um modelo TensorFlow Lite, com camadas, pesos, vieses etc.
  • Dump completo do modelo de reconhecimento de moeda realizado com sucesso

CTRL + C; CTRL + V

  • Esse ataque pode ser aplicado a aplicativos que usam TensorFlow Lite
  • Por exemplo, o Adobe Scan é um ótimo app que eu realmente uso com frequência, e seu melhor recurso é escanear documentos com a câmera do celular
    • Alguém...

Observações

  • O modelo extraído é protegido por direitos autorais, então seu uso ou modificação sem a devida permissão deve ser evitado
  • O método deste post é para fins de pesquisa, e sua aplicação prática exige considerar as leis relevantes e questões de propriedade intelectual

3 comentários

 
yangeok 2025-01-14

E o modelo também foi alvo de engenharia reversa,,

 
jhj0517 2025-01-06

Uau, extrair o arquivo de weights a partir de um APK??
Mesmo que seja limitado a uma biblioteca específica, é impressionante..

 
GN⁺ 2025-01-06
Comentários do Hacker News
  • Extrair modelos de ML é o primeiro passo, e lidar com as transformações antes da entrada dos dados e com o formato de saída é o segundo passo
  • Usar ML no dispositivo tem a grande vantagem de melhorar a privacidade do usuário
  • Para desenvolvedores de apps que consideram tflite, uma forma mais segura é hospedar o modelo no Firebase e removê-lo após a conclusão da tarefa
    • O Firebase oferece recursos como controle de versão de atualizações do modelo, testes A/B e redução do tamanho do APK
  • O Gboard usa criptografia homomórfica para aprender palavras comuns do público e fornecer sugestões criptografadas
    • Por exemplo, no Gboard, há duas grafias comuns de bizarre
  • Modelos de IA são considerados propriedade intelectual, e é necessária autorização explícita do proprietário antes de usá-los ou modificá-los
  • É um bom trabalho terem liberado um modelo aberto treinado com dados abertos para pessoas com deficiência visual
    • O artigo relacionado, o código, os dados de treinamento e o modelo podem ser baixados no GitHub
    • Está sob as licenças MIT e CDLA-Permissive-2.0
  • Segundo a posição dos principais atores, baixar modelos em grande escala e treinar modelos de ML não infringe direitos de propriedade intelectual
  • Há um artigo de pesquisa interessante sobre extração de modelos em larga escala de apps Android
  • A ferramenta Frida é muito útil, e muitas pessoas se interessam por questões de propriedade intelectual
    • Parece ser uma tentativa de não anunciar como “roubar” modelos para evitar problemas legais