Tapjacking สร้างผลตอบแทนให้กับ Android Marshmallow อย่างไรและไม่มีใครสังเกตเห็น

ในขณะที่พวกเราหลายคนดื่มด่ำกับ Android Nougat สำหรับอุปกรณ์ Nexus ผู้ใช้ส่วนใหญ่ยังคงอยู่ใน Android Marshmallow การใช้ประโยชน์จากการมีอยู่ของเอกสารตั้งแต่อย่างน้อยกลางปี ​​2558 ยังคงส่งผลกระทบต่ออุปกรณ์ Android ที่ทันสมัย

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


การกลับมาของ Tapjacking

ลองนึกภาพว่าคุณเปิด Instagram แล้วลองแชร์รูปภาพที่คุณถ่ายเมื่อไม่นานมานี้ในช่วงวันหยุด เมื่อคุณเลือกที่จะเรียกดูแกลเลอรี่ของรูปภาพ Instagram ขอให้คุณอนุญาตให้เข้าถึงที่เก็บข้อมูลของคุณ แต่เมื่อคุณแตะ“ ใช่” คุณจะพบกับข้อความแสดงข้อผิดพลาด

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

การอนุญาต Tapjacking ของ Marshmallow การแตะ“ อนุญาต” จะแสดงที่อยู่ติดต่อทั้งหมดของฉัน

แอปพลิเคชันที่มีความสามารถในการวาดภาพบนหน้าจอของคุณอาจหลอกให้คุณป้อนข้อมูลที่ละเอียดอ่อนได้ ตัวอย่างเช่นการซ้อนทับหน้าจอสามารถวางรหัสผ่านปลอมที่ด้านบนของหน้าจอเข้าสู่ระบบจริงเพื่อรวบรวมรหัสผ่านของคุณ การใช้ประโยชน์เช่นนี้เรียกว่า 'tapjacking' และได้รับการ ปะทุ และได้รับการติดตั้งบน Android หลายรุ่นตลอดหลายปีที่ผ่านมาซึ่งเป็นหนึ่งในตัวอย่างที่เลวร้ายที่สุดยาวนานจนถึง Android 4.0.3 แต่เมื่อไม่นานมานี้ช่องโหว่ดังกล่าวกลับมาพร้อมกับโมเดลการอนุญาตรันไทม์ของ Android Marshmallow

ผู้พัฒนาโดยชื่อของ Iwo Banaśสร้างแอปพลิเคชั่นที่แสดงให้เห็นถึงการหาประโยชน์ วิธีการทำงานค่อนข้างง่าย - เมื่อแอปพลิเคชันแสดงข้อความอนุญาตอนุญาตแอปพลิเคชันที่เป็นอันตรายที่คุณติดตั้งจะแสดงการซ้อนทับระบบเพื่อปกปิดบล็อกข้อความของกล่องโต้ตอบการอนุญาตด้วยข้อความที่ต้องการ ผู้ใช้ที่ไม่ตั้งใจซึ่งคลิก "อนุญาต" ในกล่องโต้ตอบการอนุญาตจะถูกหลอกให้อนุญาตที่พวกเขาถูกถาม - แต่คำขอนั้นถูกซ่อนจากมุมมองของผู้ใช้ การใช้ประโยชน์ดังกล่าวเอาชนะจุดประสงค์ของระบบการอนุญาต Android Marshmallow อย่างเต็มที่นับตั้งแต่มีการแนะนำ รุ่นใหม่เพื่อให้แน่ใจว่าผู้ใช้จะได้รับอนุญาตเท่านั้นที่พวกเขายินยอมอย่างชัดเจน

ตอนนี้ฉันรู้ว่าคุณกำลังคิดอะไร หาก Android ตรวจพบว่ามีการซ้อนทับระบบและทำให้ฉันไม่ได้รับอนุญาตให้ใช้ที่เก็บข้อมูล Instagram มันจะไม่ป้องกันการเอารัดเอาเปรียบนี้หรือไม่ คำตอบคือไม่ ในการทดสอบของฉันปรากฏว่าในอุปกรณ์บางอย่างที่แสดงข้อความซ้อนทับด้านบนของกล่องโต้ตอบการอนุญาตไม่ได้เรียกกลไกความปลอดภัย ผู้พัฒนาแอพพลิเคชั่น tapjacking พิสูจน์ความคิดระบุว่าการใช้ประโยชน์นั้นมีประสิทธิภาพเพราะอาศัยการติดตั้งแอพพลิเคชั่นที่เป็นอันตรายรองที่กำหนดเป้าหมาย API ระดับ 22 และต่ำกว่า (pre-Marshmallow) นี่เป็นเพราะข้อเท็จจริงที่ว่าก่อน Android Marshmallow แอปพลิเคชันทั้งหมดจะได้รับสิทธิ์ในระหว่างการติดตั้ง

ตกลงดังนั้นถ้าคุณอยู่ใน Marshmallow สิ่งที่คุณต้องทำคือหลีกเลี่ยงการติดตั้งแอพใด ๆ ที่คุณไม่ไว้ใจที่ขอสิทธิ์ในการวาดภาพซ้อนทับใช่ไหม? หากรูปแบบการอนุญาตของ Android ใช้งานได้ตามที่กำหนดไว้ในตอนแรกคุณจะถูกต้อง แต่เนื่องจากการค้นพบช่องโหว่นี้ แม้กระทั่งแอปที่กำหนดเป้าหมายระดับ API 23 (Marshmallow) ที่ขอสิทธิ์การซ้อนทับก็มีความเสี่ยง


ช่องว่างในรูปแบบการอนุญาตหรือไม่

แอพทั่วไปที่ใช้การวางซ้อน ผ่าน: ปานกลาง

หากคุณเป็นหนึ่งในผู้คนหลายล้านคนที่ใช้ Facebook Messenger เพื่อแชทกับเพื่อนคุณก็จะพบกับคุณสมบัติที่ดีที่สุดของ Android - ความสามารถของแอพที่จะดึงดูดความสนใจของหน้าจออื่น ๆ มันเจ๋งแค่ไหนที่คุณสามารถมีฟองกับการแชทกลุ่ม Facebook ที่คุณชื่นชอบติดตามผู้ใช้ที่อยู่ด้านบนของแอปพลิเคชันใด ๆ ที่พวกเขาเปิด แม้ว่า Messenger ของ Facebook จะนำแนวคิด "แอพลอยน้ำ" มาสู่กระแสหลัก แต่แนวคิดดังกล่าวมีมานานแล้วใน Android แอปพลิเคชันสามารถสร้างภาพซ้อนทับบนแอพของคุณได้เป็นระยะเวลาด้วยการมี TYPE_SYSTEM_OVERLAY อยู่ใน WindowManager ของ Android

เมนู "อนุญาตผ่านแอพอื่น ๆ "

ก่อน Android Marshmallow แอปพลิเคชันจะต้องขอสิทธิ์ที่เรียกว่า SYSTEM_ALERT_WINDOW ในระหว่างการติดตั้งก่อนที่จะสามารถแสดงโฆษณาซ้อนทับที่ด้านบนของหน้าจอของคุณ แต่สิ่งนี้เปลี่ยนไปด้วยการเปิดตัวโมเดลการอนุญาตรันไทม์แบบละเอียดของ 6.0 ตอนนี้ผู้ใช้จะต้องให้สิทธิ์กับแอปพลิเคชันเมื่อเรียกใช้แอปจริง ๆ ซึ่งหวังว่าจะกระตุ้นผู้ใช้โดยเฉลี่ยให้ปกป้องข้อมูลส่วนตัวของตัวเองจากแอปพลิเคชันที่ขอสิทธิ์ที่ไม่เกี่ยวข้อง

อย่างไรก็ตาม SYSTEM_ALERT_WINDOW ไม่เหมือนกับสิทธิ์อื่น ๆ นักพัฒนาซอฟต์แวร์ไม่สามารถแสดงกล่องโต้ตอบเพื่อขอให้ผู้ใช้ปลายทางได้รับอนุญาตโดยทางโปรแกรมเช่นสิทธิ์อื่น ๆ ส่วนใหญ่ในแอปใด ๆ ที่กำหนดเป้าหมาย Marshmallow แต่คุณต้องไปที่หน้าจอการตั้งค่าด้วยตนเองและเปิดใช้งานการอนุญาตด้วยตัวเอง แน่นอนว่าแอพบางตัวเช่น Facebook Messenger จะช่วยคุณตลอดกระบวนการ

Google ต้องการนักพัฒนาซอฟต์แวร์นี้เพราะพวกเขาถือว่าการอนุญาตนั้น“ ละเอียดอ่อนเป็นพิเศษ”

สิทธิ์พิเศษ

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

เมื่อพิจารณาจากสิ่งที่เรารู้ด้านบนเกี่ยวกับ tapjacking สิ่งนี้สมเหตุสมผลแล้ว แต่นี่คือสิ่งที่ Google ไม่ได้ทำตามกฎของตัวเอง ภาพหน้าจอของ Facebook Messenger นำทางคุณตลอดกระบวนการอนุญาตให้ SYSTEM_ALERT_WINDOW อนุญาตที่ฉันแสดงให้คุณเห็นข้างต้น? สิ่งนี้จะเกิดขึ้นหากคุณติดตั้ง APK จากด้านนอกของ Google Play Store หากคุณติดตั้งแอปพลิเคชันจาก Google Play Store สิทธิ์ SYSTEM_ALERT_WINDOW จะได้รับการอนุญาตโดยอัตโนมัติ

ไฟล์ประกาศของ Facebook Messenger แอปจะได้รับอนุญาตให้ซ้อนทับโดยอัตโนมัติแม้จะกำหนดเป้าหมายไปที่ API ระดับ 23


Google มีความปลอดภัยที่เสียสละเพื่อความสะดวก

เป็นเวลานานก่อนที่ Android Marshmallow SYSTEM_ALERT_WINDOW ถูกพิจารณาว่าเป็น "อันตราย" การอนุญาต ด้วย Android Marshmallow 6.0 การอนุญาตถูกเปลี่ยนเป็น ลายเซ็น | system | appop ซึ่งเป็นสิ่งที่ผู้พัฒนาต้องการเริ่มต้นเพื่อนำผู้ใช้ไปยังหน้าจอการตั้งค่าเพื่อให้อนุญาต แต่สำหรับ Android เวอร์ชัน 6.0.1 นั้น SYSTEM_ALERT_WINDOW ได้รับการแก้ไขเพื่อให้ Google Play Store สามารถให้สิทธิ์อัตโนมัติ โดยไม่ต้องแจ้งให้ผู้ใช้ทราบ ทำไม Google จึงทำการเปลี่ยนแปลงนี้ไม่ชัดเจนสำหรับเรา Google เองยังไม่ได้ออกมาและกล่าวว่าทำไมพวกเขาถึงทำการเปลี่ยนแปลงนี้ซึ่งแปลกมากโดยเฉพาะเมื่อพิจารณาภาษาที่เกี่ยวกับ SYSTEM_ALERT_WINDOW ที่ยังคงมีอยู่บนหน้าเว็บของพวกเขา

เป็นไปได้ว่านักพัฒนาซอฟต์แวร์จำนวนมากพอที่จะโกรธเมื่อมีการเปลี่ยนแปลงเริ่มต้นเป็น SYSTEM_ALERT_WINDOW ซึ่งผู้ใช้ต้องให้สิทธิ์ที่ Google caved อย่างเงียบ ๆ และอนุญาตให้แอปพลิเคชันที่ร้องขอ แต่ในการทำเช่นนั้น Google ได้ เสียสละความปลอดภัยเพื่อความสะดวก มีเหตุผลที่ Google พิจารณาการอนุญาตให้เป็นอันตรายเป็นเวลานานที่สุดเพราะมันเป็น และการมีอยู่ของการใช้ช่องโหว่การอนุญาตการใช้ช่องโหว่ของ Marshmallow นั้นเป็นหลักฐานเพียงพอของอันตรายโดยธรรมชาติในการอนุญาตการอนุญาตนี้ให้กับแอปใด ๆ โดยอัตโนมัติ

การหาประโยชน์จาก tapjacking นี้เพิ่งได้รับความสนใจจากเราแม้ว่าจะมีอยู่หลายเดือนแล้ว ในการทดสอบภายในของอุปกรณ์ระหว่างทีมพอร์ทัลเราได้ยืนยันว่า การใช้ประโยชน์นั้นทำงานบนอุปกรณ์ที่ทันสมัยมากมายที่ใช้ Android Marshmallow นี่คืออุปกรณ์ที่เราทำการทดสอบเกี่ยวกับซอฟต์แวร์ล่าสุดที่มีให้สำหรับแต่ละอุปกรณ์และการใช้ประโยชน์จาก tapjacking นั้นทำงานได้อย่างรวดเร็วหรือไม่ อุปกรณ์ที่มีเครื่องหมาย“ ช่องโหว่” มีความอ่อนไหวต่อช่องโหว่ช่องโหว่ในขณะที่อุปกรณ์ที่ระบุว่า "ไม่เสี่ยง" สามารถตรวจพบแอปที่แสดงภาพซ้อนทับและขอให้คุณปิดการใช้งานก่อนดำเนินการต่อ

  • Nextbit Robin - Android 6.0.1 พร้อมแพทช์รักษาความปลอดภัยเดือนมิถุนายน - ช่องโหว่
  • Moto X Pure - Android 6.0 พร้อมแพทช์รักษาความปลอดภัยในเดือนพฤษภาคม - ความเสี่ยง
  • เฉลิมพระเกียรติ 8 - Android 6.0.1 พร้อมด้วยแพทช์รักษาความปลอดภัยในเดือนกรกฎาคม - ช่องโหว่
  • Motorola G4 - Android 6.0.1 พร้อมแพทช์รักษาความปลอดภัยเดือนพฤษภาคม - ใจอ่อน
  • OnePlus 2 - Android 6.0.1 พร้อมแพทช์รักษาความปลอดภัยเดือนมิถุนายน - ไม่เสี่ยง
  • Samsung Galaxy Note 7 - Android 6.0.1 พร้อมแพตช์รักษาความปลอดภัยในเดือนกรกฎาคม - ไม่เสี่ยง
  • Google Nexus 6 - Android 6.0.1 พร้อมแพทช์รักษาความปลอดภัยในเดือนสิงหาคม - ไม่เสี่ยง
  • Google Nexus 6P - Android 7.0 พร้อมแพตช์รักษาความปลอดภัยในเดือนสิงหาคม - ไม่เสี่ยง

จนถึงตอนนี้อุปกรณ์ทั้งหมดที่ฉันสามารถนำทีมไปทดสอบได้ ฉันไม่สามารถหาความสัมพันธ์ระหว่างเวอร์ชั่นแพทช์ความปลอดภัยกับการหาประโยชน์ได้ ดังที่คุณสามารถบอกได้จากการสนทนาล่าสุดของเราเกี่ยวกับการอัปเดตความปลอดภัยของ Android หลายคนไม่ได้ใช้งานแพตช์รักษาความปลอดภัยล่าสุดอยู่แล้วและอาจเสี่ยงต่อการถูกโจมตีจากช่องโหว่นี้และอื่น ๆ


ก้าวไปข้างหน้า

บริการ Tapjacking ได้รับสิทธิ์ในการซ้อนทับ

เราขอแนะนำให้คุณทดสอบการใช้ประโยชน์นี้บนอุปกรณ์ของคุณเพื่อดูว่าคุณมีความเสี่ยง หรือไม่ เราได้รวบรวม APK จากซอร์สโค้ดที่ลิงก์ด้านบน (คุณสามารถทำเองได้) และอัปโหลดไปยัง AndroidFileHost ในการทดสอบการใช้ประโยชน์คุณจะต้องติดตั้งทั้งแอพพลิเคชั่น tapjacking และบริการช่วยเหลือของมัน จากนั้นเพียงแค่เรียกใช้แอปพลิเคชันหลักและคลิกที่ปุ่ม“ ทดสอบ” หากกล่องข้อความลอยอยู่ด้านบนของกล่องโต้ตอบการอนุญาตและเมื่อคุณคลิก "อนุญาต" รายการรายชื่อผู้ติดต่อของอุปกรณ์ของคุณจะปรากฏขึ้นแสดงว่าอุปกรณ์ของคุณเสี่ยงต่อการแตะที่ ไม่ต้องกังวลเกี่ยวกับกล่องข้อความลอยที่ไม่ได้ครอบคลุมการโต้ตอบการอนุญาตทั้งหมดแอปหลักฐานของแนวคิดนี้ไม่ได้มีไว้เพื่อแสดงให้เห็นอย่างสมบูรณ์ถึงวิธีการจี้กล่องโต้ตอบการอนุญาตอย่างเรียบร้อย แต่เพื่อพิสูจน์ว่าเป็นไปได้จริง ๆ

เราหวังว่าจะมีการแนะนำการแก้ไขที่จะแก้ไขการใช้ประโยชน์นี้ในอุปกรณ์ Marshmallow ทั้งหมดและ OEM จะอัปเดตอุปกรณ์ทั้งหมดของพวกเขาเป็นแพทช์รักษาความปลอดภัยล่าสุด เพราะในความเป็นจริงนั้นจะต้องใช้เวลาหลายเดือนกว่าที่อุปกรณ์ที่ถูกจำนำจะต้องได้รับตังเมดังนั้นทางเดียวที่ผู้ใช้ส่วนใหญ่จะได้รับอันตรายก็คือการติดตั้งแพตช์รักษาความปลอดภัยล่าสุด แต่ด้วยการตัดสินใจของ Google ในการให้สิทธิ์ SYSTEM_ALERT_WINDOW ที่อาจเป็นอันตรายโดยอัตโนมัติผู้ใช้หลายคนกำลังเรียกใช้แอปที่ไม่รู้ตัวซึ่งอาจจี้โทรศัพท์ของพวกเขาเพื่อให้สิทธิ์ที่อันตรายมากขึ้น