หมวดหมู่ OWASP: MASVS-PLATFORM: การโต้ตอบกับแพลตฟอร์ม
ภาพรวม
android:exported
attribute จะกำหนดว่าคอมโพเนนต์ (กิจกรรม บริการ Broadcast Receiver ฯลฯ) สามารถเปิดตัวโดยคอมโพเนนต์ของแอปพลิเคชันอื่นๆ ได้หรือไม่
- หาก
true
แอปใดก็ได้จะเข้าถึงกิจกรรมและเปิดใช้กิจกรรมนั้นตามชื่อชั้นเรียนที่แน่นอน - หาก
false
มีเพียงคอมโพเนนต์ของแอปพลิเคชันเดียวกัน แอปพลิเคชันที่มีรหัสผู้ใช้เดียวกัน หรือคอมโพเนนต์ของระบบที่มีสิทธิ์เท่านั้นที่จะเปิดใช้งานกิจกรรมได้
ตรรกะเบื้องหลังค่าเริ่มต้นของแอตทริบิวต์นี้มีการเปลี่ยนแปลงเมื่อเวลาผ่านไป และแตกต่างกันไปตามประเภทคอมโพเนนต์และเวอร์ชัน Android เช่น ใน API ระดับ 16 (Android 4.1.1) หรือต่ำกว่า ระบบจะตั้งค่าสำหรับองค์ประกอบ <provider>
เป็น true
โดยค่าเริ่มต้น การไม่ตั้งค่าแอตทริบิวต์นี้อย่างชัดเจนอาจทำให้ค่าเริ่มต้นของอุปกรณ์บางเครื่องแตกต่างกัน
ผลกระทบ
สถานการณ์ที่มีค่าเริ่มต้นที่แตกต่างกันหมายความว่าคุณอาจเปิดเผยคอมโพเนนต์แอปพลิเคชันภายในโดยไม่ตั้งใจ ตัวอย่างผลลัพธ์ที่อาจเกิดขึ้นมีดังนี้
การโจมตีแบบปฏิเสธการให้บริการ แอปอื่นๆ เข้าถึงคอมโพเนนต์ภายในอย่างไม่เหมาะสมเพื่อแก้ไขฟังก์ชันการทำงานภายในของแอป การรั่วไหลของข้อมูลที่ละเอียดอ่อน การเรียกใช้โค้ดในบริบทของแอปพลิเคชันที่มีช่องโหว่
การลดปัญหา
ตั้งค่าแอตทริบิวต์ android:exported
อย่างชัดเจนเสมอ วิธีนี้จะช่วยให้ไม่มีข้อสงสัยและแสดงเจตนาของคุณอย่างชัดเจนเกี่ยวกับระดับการมองเห็นของคอมโพเนนต์
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- # การจัดการคีย์ {:#key-management}
- เรียกใช้โค้ด DEX แบบฝังจาก APK โดยตรง
- การลักลอบแตะ