모바일 앱에서 AI 모델 추출하기
(altayakkus.substack.com)- 많은 앱이 AI 모델을 기기에 직접 통합하고 있음. 이는 빠른 추론과 오프라인 접근이 중요한 경우에 유리함
- 하지만 기기 내부에 모델 파일이 존재한다는 것은 사용자가 해당 파일을 추출하고 분석할 수도 있음을 의미함
목표
- Microsoft의 Seeing AI 앱은 시각 장애인을 위한 "말하는 카메라"로, 물체, 문서, 화폐 등을 인식하여 음성으로 설명해 줌
- 특히 화폐(currency) 인식 기능은 17개 이상의 통화를 지원하며, 225개의 고유한 지폐를 인식함
- 앱 배포 형식인 APK 파일 안에 모델이 포함되어 있지만, 암호화된 상태의 파일(
currency)로 존재함 - 파일이 단순 암호화되어 있으면, 앱 실행 중 메모리나 복호화 과정을 추적해 파일을 추출할 수 있음
초기 조사
- Android 앱은 APK 파일로 배포되며, 이는 앱 실행에 필요한 모든 것을 포함하는 아카이브임.
- AI 모델은 일반적으로 이러한 자산과 함께 저장됨
apktool을 사용하여 APK를 디컴파일하고 구조를 분석할 수 있음assets폴더에서currency라는 파일을 발견했으나, 암호화되어 있음
더 나아가기
- 앱이
currency파일을 어떻게 복호화하는지 역공학할 수 있음 - TensorFlow Lite가
com.microsoft.seeingai에서 사용됨을 확인함 org.tensorflow.lite.NativeInterpreterWrapper를 사용하여*.tflite모델을 로드할 수 있음
Frida 사용하기
- Frida는 거의 모든 운영체제에서 실행 가능한 동적 계측 도구로, 실행 중인 프로세스에 연결하여 동작을 변경할 수 있음
- 프로세스 실행 중에 붙어 메서드 호출을 추적하고, 인자와 반환값을 확인하거나, 메서드 내용을 원하는 로직으로 덮어쓸 수 있음
- 예:
checkKey(key)를 무조건true로 반환하도록 변경할 수도 있음
- 예:
- Objection은 Frida 스크립트를 모아놓은 CLI 도구로, 모바일 앱 연구에 유용함
org.tensorflow.lite.NativeInterpreterWrapper의 함수 호출을 추적하여 모델을 디스크에 덤프함- 앱 실행 시
.createModelWithBuffer(java.nio.ByteBuffer, long)가 호출되는데, 이 때 전달되는ByteBuffer가 복호화된.tflite모델일 가능성이 큼 - 훅킹을 통해 이 메서드를 덤프용 코드로 대체하면, 디스크에 해당 모델을 저장 가능함
- 앱 실행 시
adb pull명령으로 추출한.tflite모델(currency.tflite)을 로컬 디바이스로 가져옴- Netron 같은 툴로 로드해 실제 TensorFlow Lite 모델이 맞는지(레이어, 가중치, 바이어스 등) 확인
- 화폐 인식 모델의 완벽한 덤프 성공
CTRL + C; CTRL + V
- TensorFlow Lite를 사용하는 앱에 대해 이 공격을 활용할 수 있음
- 예를 들어 Adobe Scan은 내가 실제로 자주 사용하는 멋진 앱으로, 휴대폰 카메라로 문서를 스캔하는 것이 가장 좋은 기능
- 누군가..
주의사항
- 추출된 모델은 저작권이 있으므로, 적법한 허가 없이 무단 사용/수정은 지양해야 함
- 본 포스팅의 방법은 연구 목적이며, 실제 적용 시 관련 법규와 지적 재산권 이슈를 고려할 필요가 있음
GeekNews Weekly에 포함된 글입니다.
에디터 코멘트 보기
댓글과 토론
Hacker News 의견
- ML 모델을 추출하는 것은 첫 번째 단계이며, 데이터 입력 전 변환과 출력 형식을 처리하는 것이 두 번째 단계임
- 기기 내에서 ML을 사용하는 것은 사용자 프라이버시를 개선하는 큰 장점이 있음
- tflite를 고려하는 앱 개발자는 Firebase에 모델을 호스팅하고 작업 완료 후 삭제하는 것이 더 안전한 방법임
- Firebase는 모델 업데이트 버전 관리, A/B 테스트, APK 크기 감소 등의 기능을 제공함
- Gboard는 동형 암호화를 사용하여 공공의 일반적인 단어를 학습하고 암호화된 제안을 제공함
- 예를 들어, Gboard에서 'bizarre'의 두 가지 일반적인 철자가 있음
- AI 모델은 지적 재산으로 간주되며, 이를 사용하거나 수정하기 전에 소유자의 명시적 허가가 필요함
- 오픈 데이터로 훈련된 오픈 모델을 시각 장애인을 위해 해방한 것에 대해 잘한 일임
- 관련 논문, 코드, 훈련 데이터 및 모델은 GitHub에서 다운로드 가능함
- MIT 및 CDLA-Permissive-2.0 라이선스 하에 있음
- 주요 플레이어의 입장에 따르면, 대량으로 모델을 다운로드하고 ML 모델을 훈련하는 것은 지적 재산권을 침해하지 않음
- Android 앱에서 대규모로 모델을 추출한 흥미로운 연구 논문이 있음
- Frida 도구는 매우 유용하며 많은 사람들이 지적 재산권 문제에 관심을 가짐
- 법적 문제를 피하기 위해 모델을 '훔치는' 방법을 광고하지 않으려는 시도로 보임