14 คะแนน โดย GN⁺ 2025-01-06 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • หลายแอปผนวกโมเดล AI ไว้ในอุปกรณ์โดยตรง ซึ่งเหมาะในกรณีที่ต้องการการอนุมานที่รวดเร็วและการเข้าถึงแบบออฟไลน์
  • แต่การที่ไฟล์โมเดลอยู่ภายในอุปกรณ์ก็หมายความว่าผู้ใช้สามารถดึงไฟล์นั้นออกมาและวิเคราะห์ได้เช่นกัน

เป้าหมาย

  • แอป Seeing AI ของ Microsoft เป็น "กล้องพูดได้" สำหรับผู้พิการทางสายตา โดยสามารถจดจำวัตถุ เอกสาร ธนบัตร และอื่น ๆ แล้วอธิบายออกมาเป็นเสียง
  • โดยเฉพาะฟีเจอร์จดจำสกุลเงิน (currency) รองรับมากกว่า 17 สกุลเงิน และจดจำธนบัตรที่ไม่ซ้ำกันได้ 225 แบบ
  • แม้โมเดลจะถูกรวมอยู่ในไฟล์ APK ซึ่งเป็นรูปแบบการแจกจ่ายแอป แต่จะอยู่ในรูปไฟล์ที่เข้ารหัสชื่อ currency
  • หากไฟล์ถูกเข้ารหัสแบบไม่ซับซ้อน ก็สามารถติดตามหน่วยความจำหรือกระบวนการถอดรหัสระหว่างที่แอปทำงานเพื่อดึงไฟล์ออกมาได้

การสำรวจเบื้องต้น

  • แอป Android ถูกแจกจ่ายเป็นไฟล์ APK ซึ่งเป็นอาร์ไคฟ์ที่บรรจุทุกอย่างที่จำเป็นต่อการทำงานของแอป
  • โดยทั่วไปโมเดล AI จะถูกเก็บไว้ร่วมกับแอสเซ็ตเหล่านี้
  • สามารถใช้ apktool เพื่อ decompile ไฟล์ APK และวิเคราะห์โครงสร้างได้
  • พบไฟล์ชื่อ currency ในโฟลเดอร์ assets แต่ไฟล์ถูกเข้ารหัสไว้

ไปต่ออีกขั้น

  • สามารถทำ reverse engineering เพื่อดูว่าแอปถอดรหัสไฟล์ currency อย่างไร
  • ยืนยันได้ว่า com.microsoft.seeingai ใช้งาน TensorFlow Lite
  • สามารถโหลดโมเดล *.tflite ได้ผ่าน org.tensorflow.lite.NativeInterpreterWrapper

การใช้ Frida

  • Frida เป็นเครื่องมือ dynamic instrumentation ที่ทำงานได้บนแทบทุกระบบปฏิบัติการ และสามารถเชื่อมต่อกับโปรเซสที่กำลังทำงานเพื่อเปลี่ยนพฤติกรรมได้
  • สามารถแนบเข้ากับโปรเซสระหว่างทำงานเพื่อติดตามการเรียกเมธอด ตรวจสอบอาร์กิวเมนต์และค่าที่ส่งกลับ หรือเขียนทับเนื้อหาเมธอดด้วยลอจิกที่ต้องการ
    • ตัวอย่าง: อาจเปลี่ยนให้ checkKey(key) คืนค่า true เสมอได้
  • Objection เป็นเครื่องมือ CLI ที่รวบรวมสคริปต์ Frida ไว้ และมีประโยชน์มากสำหรับการวิจัยแอปมือถือ
  • ดัมพ์โมเดลลงดิสก์โดยติดตามการเรียกฟังก์ชันของ org.tensorflow.lite.NativeInterpreterWrapper
    • ระหว่างที่แอปทำงาน จะมีการเรียก .createModelWithBuffer(java.nio.ByteBuffer, long) ซึ่ง ByteBuffer ที่ส่งเข้าไปมีโอกาสสูงที่จะเป็นโมเดล .tflite ที่ถูกถอดรหัสแล้ว
    • หากใช้การ hook เพื่อแทนที่เมธอดนี้ด้วยโค้ดสำหรับดัมพ์ ก็จะสามารถบันทึกโมเดลดังกล่าวลงดิสก์ได้
  • ใช้คำสั่ง adb pull เพื่อนำโมเดล .tflite ที่ดึงออกมา (currency.tflite) กลับมายังอุปกรณ์ภายในเครื่อง
  • โหลดด้วยเครื่องมืออย่าง Netron เพื่อตรวจสอบว่าเป็นโมเดล TensorFlow Lite จริงหรือไม่ (เลเยอร์ น้ำหนัก ไบแอส ฯลฯ)
  • ดัมพ์โมเดลจดจำสกุลเงินได้สำเร็จอย่างสมบูรณ์

CTRL + C; CTRL + V

  • สามารถใช้การโจมตีนี้กับแอปที่ใช้ TensorFlow Lite ได้
  • ตัวอย่างเช่น Adobe Scan เป็นแอปที่ยอดเยี่ยมและเป็นแอปที่ฉันใช้บ่อยจริง ๆ โดยฟีเจอร์ที่ดีที่สุดคือการสแกนเอกสารด้วยกล้องมือถือ
    • ถ้ามีใครสักคน..

ข้อควรระวัง

  • โมเดลที่ดึงออกมามีลิขสิทธิ์ ดังนั้นควรหลีกเลี่ยงการใช้งานหรือดัดแปลงโดยไม่ได้รับอนุญาตอย่างถูกต้อง
  • วิธีการในโพสต์นี้มีจุดประสงค์เพื่อการวิจัย และเมื่อนำไปใช้จริงจำเป็นต้องคำนึงถึงกฎหมายที่เกี่ยวข้องและประเด็นทรัพย์สินทางปัญญา

3 ความคิดเห็น

 
yangeok 2025-01-14

แล้วโมเดลก็โดนรีเวิร์สเหมือนกัน,,

 
jhj0517 2025-01-06

ว้าว ดึงไฟล์ weight ออกมาจากไฟล์ apk ได้ด้วยเหรอ??
ถึงจะจำกัดเฉพาะบางไลบรารีก็เถอะ แต่ก็สุดยอดมากเลย..

 
GN⁺ 2025-01-06
ความคิดเห็นจาก Hacker News
  • การดึงโมเดล ML ออกมาเป็นขั้นตอนแรก และการจัดการการแปลงข้อมูลก่อนป้อนเข้าและรูปแบบผลลัพธ์เป็นขั้นตอนที่สอง
  • การใช้ ML บนอุปกรณ์มีข้อดีสำคัญอย่างมากในด้านการปรับปรุงความเป็นส่วนตัวของผู้ใช้
  • นักพัฒนาแอปที่พิจารณาใช้ tflite ควรโฮสต์โมเดลไว้บน Firebase และลบออกหลังทำงานเสร็จ ซึ่งเป็นวิธีที่ปลอดภัยกว่า
    • Firebase มีฟีเจอร์อย่างการจัดการเวอร์ชันอัปเดตโมเดล, A/B testing และการลดขนาด APK
  • Gboard ใช้การเข้ารหัสแบบโฮโมมอร์ฟิกเพื่อเรียนรู้คำทั่วไปที่เป็นสาธารณะและให้คำแนะนำแบบเข้ารหัส
    • ตัวอย่างเช่น ใน Gboard มีการสะกดคำว่า bizarre ที่พบบ่อยอยู่สองแบบ
  • โมเดล AI ถือเป็นทรัพย์สินทางปัญญา และจำเป็นต้องได้รับอนุญาตอย่างชัดเจนจากเจ้าของก่อนนำไปใช้หรือแก้ไข
  • เป็นเรื่องที่น่ายกย่องที่มีการปลดปล่อยโอเพนโมเดลซึ่งฝึกจากข้อมูลเปิดเพื่อช่วยผู้พิการทางสายตา
    • เอกสารวิจัยที่เกี่ยวข้อง, โค้ด, ข้อมูลฝึก และโมเดล สามารถดาวน์โหลดได้จาก GitHub
    • อยู่ภายใต้สัญญาอนุญาต MIT และ CDLA-Permissive-2.0
  • ตามจุดยืนของผู้เล่นรายใหญ่ การดาวน์โหลดโมเดลจำนวนมากและฝึกโมเดล ML ไม่ถือเป็นการละเมิดทรัพย์สินทางปัญญา
  • มีงานวิจัยที่น่าสนใจเกี่ยวกับการดึงโมเดลออกจากแอป Android ในระดับขนาดใหญ่
  • เครื่องมือ Frida มีประโยชน์มาก และหลายคนให้ความสนใจกับประเด็นทรัพย์สินทางปัญญา
    • ดูเหมือนเป็นความพยายามที่จะไม่โฆษณาวิธี ‘ขโมย’ โมเดล เพื่อหลีกเลี่ยงปัญหาทางกฎหมาย