วิธีแก้ไขช่องโหว่เกี่ยวกับ Fragment Injection

ข้อมูลนี้มีไว้สำหรับนักพัฒนาแอปที่มีการติดตั้งใช้งานคลาส PreferenceActivity อย่างไม่ปลอดภัยซึ่งทำให้แอปมีความเสี่ยงต่อ Fragment Injection การติดตั้งใช้งานดังกล่าวอาจทำให้แอปภายนอกที่เป็นอันตรายโหลด Fragment ที่ควรจะเป็นส่วนตัว

สิ่งที่เกิดขึ้น

ตั้งแต่วันที่ 1 มีนาคม 2017 Google Play ได้เริ่มบล็อกการเผยแพร่แอปใหม่ๆ หรือการอัปเดตที่คลาส PreferenceActivity อาจเสี่ยงต่อการเกิด Fragment Injection โปรดดูประกาศใน Play Console เราอาจนำแอปที่มีช่องโหว่ด้านความปลอดภัยที่ไม่ได้รับการแก้ไขออกจาก Google Play หลังพ้นกำหนดเวลาที่แสดงใน Play Console

ต้องดำเนินการ​

  1. ลงชื่อเข้าใช้ Play Console และไปที่ส่วนการแจ้งเตือนเพื่อดูแอปที่ได้รับผลกระทบและกำหนดเวลาในการแก้ไขปัญหาเหล่านี้
  2. อัปเดตแอปที่ได้รับผลกระทบและแก้ไขช่องโหว่
  3. ส่งเวอร์ชันที่อัปเดตของแอปที่ได้รับผลกระทบ

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

รายละเอียดเพิ่มเติม

หากทำได้ ให้ตั้งค่า exported=false สำหรับ PreferenceActivity ในไฟล์ Manifest วิธีการนี้จะป้องกันไม่ให้แอปภายนอกส่ง Intent ไปยังคลาสนี้ได้

หากต้องส่งออก PreferenceActivity ที่มีช่องโหว่ไปยังแอปภายนอก ให้ระบุสาเหตุที่ทำให้คลาสมีช่องโหว่และดำเนินการตามความเหมาะสม สาเหตุที่เป็นไปได้ 2 ข้อมีดังนี้

  1. การติดตั้งใช้งาน isValidFragment ไม่ถูกต้อง

ตรวจสอบว่าคลาสที่มีช่องโหว่มีหรือได้รับการติดตั้งใช้งาน isValidFragment ที่แสดงผลเป็น True ในเส้นทางโค้ดทั้งหมดหรือไม่ หากใช่ ให้อัปเดตคลาสเพื่อตรวจหารายการคลาส Fragment ที่อนุญาตได้ ตัวอย่างเช่น หาก PreferenceActivity ควรอนุญาตคลาส MyFragment และไม่อนุญาต Fragment อื่นๆ ให้ใช้การตรวจสอบดังนี้

         public boolean isValidFragment(String fragmentName) {
            return MyFragment.class.getName().equals(fragmentName);

         }

  1. targetSdkVersion ต่ำกว่า 19 และไม่ได้ติดตั้งใช้งาน isValidFragment

หากขณะนี้แอปตั้งค่า targetSdkVersion ในไฟล์ Manifest เป็นค่าที่ต่ำกว่า 19 และคลาสที่มีช่องโหว่ไม่มีการติดตั้งใช้งาน isValidFragment แสดงว่าได้รับช่องโหว่มาจาก PreferenceActivity

ในการแก้ไขช่องโหว่นี้ นักพัฒนาซอฟต์แวร์ควรอัปเดต targetSdkVersion เป็น 19 ขึ้นไป หรือถ้าอัปเดต targetSdkVersion ไม่ได้ นักพัฒนาซอฟต์แวร์ควรติดตั้งใช้งาน isValidFragment ตามที่อธิบายไว้ในข้อ 1 เพื่อตรวจหาคลาส Fragment ที่อนุญาตได้

โปรดทราบว่าแอปจะต้องเป็นไปตามข้อตกลงการจัดจำหน่ายของนักพัฒนาซอฟต์แวร์และนโยบายเนื้อหาด้วย 

เราพร้อมช่วยเหลือคุณ

หากมีคำถามทางเทคนิคเกี่ยวกับช่องโหว่ คุณโพสต์ถามได้ที่ Stack Overflow และใช้แท็ก “android-security” หากต้องการคำชี้แจงเกี่ยวกับขั้นตอนที่ต้องดำเนินการเพื่อแก้ไขปัญหานี้ โปรดติดต่อทีมสนับสนุนนักพัฒนาซอฟต์แวร์

ข้อมูลนี้มีประโยชน์ไหม
เราจะปรับปรุงได้อย่างไร