ข้อมูลนี้มีไว้สำหรับนักพัฒนาซอฟต์แวร์ของแอปที่มีช่องโหว่ในการลักลอบใช้รูปแบบของ Intent
สิ่งที่เกิดขึ้น
แอปของคุณอย่างน้อย 1 แอปมีปัญหาจากการลักลอบใช้รูปแบบของ Intent ซึ่งอาจทำให้เครือข่ายและเว็บไซต์ที่เป็นอันตรายเข้าถึงคอมโพเนนต์แอปแบบส่วนตัวได้ โปรดดูประกาศใน Play Console เราอาจนำแอปที่มีช่องโหว่ด้านความปลอดภัยที่ไม่มีการแก้ไขออกจาก Google Play หลังพ้นกำหนดเวลาที่แสดงใน Play Console
ต้องดำเนินการ
-
ลงชื่อเข้าใช้ Play Console และไปที่ส่วนการแจ้งเตือนเพื่อดูแอปที่ได้รับผลกระทบและกำหนดเวลาในการแก้ไขปัญหาเหล่านี้
-
อัปเดตแอปที่ได้รับผลกระทบโดยทำตามขั้นตอนที่ไฮไลต์ไว้ด้านล่าง
-
ส่งเวอร์ชันที่อัปเดตของแอปที่ได้รับผลกระทบ
แอปของคุณจะได้รับการตรวจสอบอีกครั้งเมื่อมีการส่งใหม่ ขั้นตอนนี้อาจใช้เวลาหลายชั่วโมง หากแอปผ่านการตรวจสอบและเผยแพร่เรียบร้อยแล้ว แสดงว่าคุณไม่ต้องดำเนินการใดๆ เพิ่มเติมแล้ว หากแอปไม่ผ่านการตรวจสอบ แอปเวอร์ชันใหม่จะไม่ได้รับการเผยแพร่และคุณจะได้รับการแจ้งเตือนทางอีเมล
รายละเอียดเพิ่มเติม
WebView ที่ไปยังเนื้อหาเว็บที่ไม่น่าเชื่อถือ แยกวิเคราะห์ลิงก์ intent:// โดยใช้ Intent.parseUri และส่ง Intent เหล่านั้นโดยใช้ startActivity อาจเสี่ยงต่อการถูกลักลอบใช้รูปแบบของ Intent WebView เหล่านี้อาจถูกเนื้อหาเว็บที่เป็นอันตรายหลอกให้ส่ง Intent ที่กำหนดเองไปยังคอมโพเนนต์แอปแบบส่วนตัวได้ ซึ่งอาจทำให้แอปเสี่ยงต่ออันตราย เช่น การโจรกรรมข้อมูลแอปส่วนตัวที่คอมโพเนนต์ดังกล่าวจัดการ โปรดทราบว่าเนื้อหาเว็บที่ไม่น่าเชื่อถือรวมถึงเนื้อหาจากโดเมนที่เชื่อถือได้ซึ่งโหลดผ่าน HTTP
เราขอแนะนำให้คุณป้องกันช่องโหว่นี้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้
ตัวเลือกที่ 1: ตรวจสอบว่า WebView ส่ง Intent ที่กำหนดเองไม่ได้
แอปอาจจำกัด Intent ที่สร้างขึ้นด้วย Intent.parseUri เพื่อให้ส่งเป็น Implicit Intent ไปยังคอมโพเนนต์ที่มีตัวกรอง Intent BROWSABLE ได้เท่านั้น โดยใช้โค้ดต่อไปนี้
// convert Intent scheme URL to Intent object
Intent intent = Intent.parseUri(url);
// forbid launching activities without BROWSABLE category
intent.addCategory("android.intent.category.BROWSABLE");
// forbid explicit call
intent.setComponent(null);
// forbid Intent with selector Intent
intent.setSelector(null);
// start the activity by the Intent
view.getContext().startActivity(intent, -1);
ตัวเลือกที่ 2: ตรวจสอบว่า WebView ที่ได้รับผลกระทบไม่ได้โหลดเนื้อหาเว็บที่ไม่น่าเชื่อถือ
หาก WebView จำเป็นต้องแยกวิเคราะห์ URL รูปแบบ intent://
ที่กำหนดเอง โปรดตรวจสอบว่า WebView ไม่ได้โหลดเนื้อหาเว็บที่ไม่น่าเชื่อถือ ซึ่งรวมถึงเนื้อหาเว็บที่โหลดผ่านการเชื่อมต่อที่ไม่ได้เข้ารหัส นักพัฒนาซอฟต์แวร์จะตั้งค่า android:usesCleartextTraffic
เป็น "เท็จ" ในไฟล์ Manifest หรือตั้งค่ากำหนดความปลอดภัยของเครือข่ายให้ไม่อนุญาตการเข้าชมแบบ HTTP ได้ หรือจะตรวจสอบว่า WebView ที่ได้รับผลกระทบไม่โหลด URL ที่มีรูปแบบ HTTP โดยใช้ loadUrl
ก็ได้เช่นกัน
เราขอแนะนำให้นักพัฒนาซอฟต์แวร์ตรวจสอบว่า WebView ที่ได้รับผลกระทบไม่โหลด URL ที่ไม่จำกัดซึ่งได้มาจากแหล่งที่มาที่ไม่น่าเชื่อถือ (เช่น URL ที่ได้รับจาก Intent ที่ไม่น่าเชื่อถือ)
เราพร้อมช่วยเหลือคุณ
หากมีคำถามทางเทคนิคเกี่ยวกับช่องโหว่ คุณโพสต์ถามได้ที่ Stack Overflow และใช้แท็ก “android-security” หากต้องการคำชี้แจงเกี่ยวกับขั้นตอนที่ต้องดำเนินการเพื่อแก้ไขปัญหานี้ โปรดติดต่อทีมสนับสนุนนักพัฒนาซอฟต์แวร์