หมวดหมู่ OWASP: MASVS-PLATFORM: การโต้ตอบกับแพลตฟอร์ม
ภาพรวม
การโจมตี StrandHogg / ช่องโหว่ของ Task Affinity เปิดใช้อยู่ / เกิดจากข้อบกพร่องด้านการออกแบบในวิธีที่ Android จัดการงานหลายรายการ โดยเฉพาะฟีเจอร์ที่เรียกว่าการเปลี่ยนผู้ปกครองของงาน การเปลี่ยนผู้ปกครองของงานแอปพลิเคชันเป็นฟีเจอร์ที่อนุญาตให้แอปพลิเคชันย้ายกิจกรรมจากงานหนึ่งไปยังอีกงานหนึ่ง
การโจมตี StrandHogg ใช้ประโยชน์จากความไม่ชัดเจนเกี่ยวกับวิธีตรวจสอบกิจกรรมสแต็กงานของแอปพลิเคชันขาเข้า และอนุญาตให้แอปพลิเคชันที่เป็นอันตรายดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้
- ย้ายกิจกรรมที่เป็นอันตรายไปยังหรือออกจากสแต็กของเหยื่อ
- ตั้งค่ากิจกรรมที่เป็นอันตรายเป็นสแต็กการกลับมาเมื่อกิจกรรมของเหยื่อเสร็จสมบูรณ์
ช่องโหว่นี้ถูกใช้ประโยชน์โดยการดัดแปลงการตั้งค่า allowTaskReparenting
และ taskAffinity
ผลกระทบ
แอปพลิเคชันที่เป็นอันตรายสามารถตั้งค่า taskAffinity ของกิจกรรมหนึ่งให้ตรงกับ packageName ของแอปพลิเคชันเป้าหมาย จากนั้นสามารถเชื่อมโยงกับการลักลอบใช้ Intent เพื่อให้แอปพลิเคชันที่เป็นอันตรายเปิดขึ้นและแสดงอยู่ด้านบนแอปพลิเคชันเป้าหมายด้วยเมื่อผู้ใช้เปิดแอปพลิเคชันเป้าหมายในครั้งถัดไป
จากนั้นผู้โจมตีอาจใช้ช่องโหว่ของ Task Affinity เพื่อลักลอบใช้การดำเนินการของผู้ใช้ที่ถูกต้อง
ผู้ใช้อาจถูกหลอกให้ระบุข้อมูลเข้าสู่ระบบแก่แอปพลิเคชันที่เป็นอันตราย โดยค่าเริ่มต้น เมื่อกิจกรรมเริ่มต้นและเชื่อมโยงกับงาน การเชื่อมโยงนั้นจะคงอยู่ตลอดอายุการใช้งานของกิจกรรม อย่างไรก็ตาม การตั้งค่า allowTaskReparenting เป็น "จริง" จะละเมิดข้อจำกัดนี้ ซึ่งจะอนุญาตให้มีการกำหนดกิจกรรมที่มีอยู่ใหม่เป็นงาน "เดิม" ที่สร้างขึ้นใหม่
เช่น แอป B สามารถกําหนดเป้าหมายแอป A โดยเปลี่ยนเส้นทางกิจกรรมของแอป A ไปยังกองซ้อนกิจกรรมของแอป B เมื่อกลับมาจากกิจกรรมที่เสร็จสมบูรณ์ของแอป A การเปลี่ยนจากแอปหนึ่งไปยังอีกแอปหนึ่งนี้ซ่อนอยู่จากผู้ใช้และสร้างภัยคุกคามฟิชชิ่งที่สำคัญ
การลดปัญหา
อัปเดตเป็น android:minSdkVersion="30"
ช่องโหว่การโจมตี StrandHogg / Task Affinity ได้รับการแก้ไขครั้งแรกในเดือนมีนาคม 2019 และได้รับการแก้ไขอีกครั้งในเดือนกันยายน 2020 สำหรับตัวแปรที่ใหม่กว่าและครอบคลุมมากขึ้น Android SDK เวอร์ชัน 30 ขึ้นไป (Android 11) มีแพตช์ระบบปฏิบัติการที่เหมาะสมเพื่อหลีกเลี่ยงช่องโหว่นี้ แม้ว่าจะลดการโจมตี StrandHogg เวอร์ชัน 1 ได้บางส่วนผ่านการกําหนดค่าแอปพลิเคชันแต่ละรายการ แต่การโจมตีเวอร์ชัน 2 จะป้องกันได้ด้วยการแพตช์ SDK เวอร์ชันนี้เท่านั้น
แหล่งข้อมูล
- บทความทางวิชาการฉบับแรกที่อธิบายช่องโหว่ที่ Usenix 15{.external}
- การขยายความของกลุ่ม Promon Security เกี่ยวกับช่องโหว่เดิม{.external}
- เอกสารประกอบสำหรับนักพัฒนาแอป Android สำหรับ android:allowTaskReparenting
- เอกสารประกอบสําหรับนักพัฒนาแอป Android สําหรับ android:taskAffinity
- เอกสารประกอบสำหรับนักพัฒนาแอป Android เกี่ยวกับองค์ประกอบแอปพลิเคชันของ android:allowTaskReparenting