ช่องโหว่การโจมตี StrandHogg / กลุ่มความสนใจของงาน

หมวดหมู่ 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 เวอร์ชันนี้เท่านั้น

แหล่งข้อมูล