android:ส่งออกแล้ว

หมวดหมู่ OWASP: MASVS-PLATFORM: การโต้ตอบกับแพลตฟอร์ม

ภาพรวม

android:exported attribute จะกำหนดว่าคอมโพเนนต์ (กิจกรรม บริการ Broadcast Receiver ฯลฯ) สามารถเปิดตัวโดยคอมโพเนนต์ของแอปพลิเคชันอื่นๆ ได้หรือไม่

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

ตรรกะเบื้องหลังค่าเริ่มต้นของแอตทริบิวต์นี้มีการเปลี่ยนแปลงเมื่อเวลาผ่านไป และแตกต่างกันไปตามประเภทคอมโพเนนต์และเวอร์ชัน Android เช่น ใน API ระดับ 16 (Android 4.1.1) หรือต่ำกว่า ระบบจะตั้งค่าสำหรับองค์ประกอบ <provider> เป็น true โดยค่าเริ่มต้น การไม่ตั้งค่าแอตทริบิวต์นี้อย่างชัดเจนอาจทำให้ค่าเริ่มต้นของอุปกรณ์บางเครื่องแตกต่างกัน

ผลกระทบ

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

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

การลดปัญหา

ตั้งค่าแอตทริบิวต์ android:exported อย่างชัดเจนเสมอ วิธีนี้จะช่วยให้ไม่มีข้อสงสัยและแสดงเจตนาของคุณอย่างชัดเจนเกี่ยวกับระดับการมองเห็นของคอมโพเนนต์