เมื่อ 2 สัปดาห์ก่อน Checkpoint ได้ออก paper เกี่ยวกับวิธีการโจมตี Android Application หลายๆตัวในชื่อว่า “Man-in-the-disk” โดยในที่นี้ผมจะสรุปให้เข้าใจง่ายๆว่าจริงๆแล้วช่องโหว่นี้มันคืออะไรครับ

Man-in-the-disk คือช่องโหว่ของการที่ Android Application มีการใช้งาน External Storage (คือใช้สิทธิ์ WRITE_EXTERNAL_STORAGE) โดยปกติแล้วถ้าเป็น Android การ save ไฟล์ใดๆ ใน External Storage สามารถถูก monitor ได้จาก Application อื่นๆเพราะไอ้ External Storage หรือ SD Card อ่ะมันมีการใช้งานร่วมกันกับ application อื่นๆ มันเลยกลายเป็นว่า Malicious Application ก็คอย monitor การใช้งาน External Storage ของ Application ต่างๆได้ ทีนี้หาก Application มีการ download ไฟล์นั้นไว้ใน External Storage ก่อนนำไปใช้ในการ update หรือกิจกรรมใดๆของ Application ก็อาจจะถูกแทรกแซงการใช้งานไฟล์เหล่านั้นด้วย malicious file อื่นๆแทนได้

โดยทาง Checkpoint ยกตัวอย่างไว้หลากหลาย Application ชื่อดังต่างๆ เช่น

  • Google Translate (com.google.android.apps.translate) ซึ่งมีการใช้งาน /storage/emulated/0/Android/data/com.google.android.apps.translate/files/olpv3/v5/25/r11/  ในการเก็บไฟล์สำหรับการทำ offline translate ทีนี้เมื่อ user ทำการพิมพ์ตัวอักษรเพื่อแปลคำใดๆ ตัว Application จะมีการเรียก library ที่ชื่อว่า libtranslate.so แล้วจะไปโหลด lib ใน folder ที่กล่าวมาข้างต้น พอเป็นแบบนั้นกลายเป็นว่าหาก attacker เอา malicious library ไปวางไว้แทนที่ใน folder ดังกล่าว ก็จะทำให้ Application เกิด crash ได้
  • Xiaomi Browser (com.android.browser package) เมื่อ Xiaomi Browser ทำการ update application จะมีการ save patch ไว้ที่ /storage/emulated/0/Android/data/com.android.browser/files/update จากนั้น process ถัดมาคือทาง Xiaomi Browser จะทำการตรวจสอบ SHA1 ของ apk นั้นๆก่อน จากนั้นจึงกระทำการติดตั้ง Update Application นั้นๆต่ออีกที ทีนี้หาก Attacker นำไฟล์ malicious apk ไปไว้ หลังจากการตรวจสอบ SHA1 ของ Application แล้วก็จะกลายเป็นว่า Xiaomi Browser ติดตั้ง Application อื่นนั้นไปแทนเป็นต้น

ดังนั้นหากจะทำการใช้งาน file ใดๆที่นำมาจาก External Disk ลองตรวจสอบกันดีๆก่อนนำมาใช้ทำงานนะครับ

ปล. หากใครต้องการดู application ที่มีช่องโหว่คล้ายๆกัน ตาม link ด้านล่างได้เลยครับ

Source:: Checkpoint