ข้อมูลนี้มีไว้สำหรับนักพัฒนาซอฟต์แวร์ของแอปที่มีช่องโหว่ในการแทรกอินเทอร์เฟซ JavaScript
สิ่งที่จะเกิดขึ้น
โปรดดูประกาศใน Play Console เราอาจนำแอปที่มีช่องโหว่ด้านความปลอดภัยที่ไม่มีการแก้ไขออกจาก Google Play หลังพ้นกำหนดเวลาที่แสดงใน Play Console
สิ่งที่ต้องดำเนินการ
- ลงชื่อเข้าใช้ Play Console และไปที่ส่วนการแจ้งเตือนเพื่อดูแอปที่ได้รับผลกระทบและกำหนดเวลาในการแก้ไขปัญหาเหล่านี้
- อัปเดตแอปที่ได้รับผลกระทบและแก้ไขช่องโหว่
- ส่งเวอร์ชันที่อัปเดตของแอปที่ได้รับผลกระทบ
แอปของคุณจะได้รับการตรวจสอบอีกครั้งเมื่อมีการส่งใหม่ ขั้นตอนนี้อาจใช้เวลาหลายชั่วโมง หากแอปผ่านการตรวจสอบและเผยแพร่เรียบร้อยแล้ว คุณก็ไม่ต้องดำเนินการใดๆ เพิ่มเติม หากแอปไม่ผ่านการตรวจสอบ จะไม่มีการเผยแพร่แอปเวอร์ชันใหม่และคุณจะได้รับการแจ้งเตือนทางอีเมล
รายละเอียดเพิ่มเติม
WebView ที่แสดงออบเจ็กต์ระดับแอปแก่โค้ด JavaScript ผ่าน addJavascriptInterface และโหลดเนื้อหาเว็บที่ไม่น่าเชื่อถือจะเสี่ยงต่อการเกิดการแทรกอินเทอร์เฟซ JavaScript เนื้อหาที่ไม่น่าเชื่อถืออาจดำเนินการกับวิธีการของออบเจ็กต์ที่เปิดเผยซึ่งมีหมายเหตุ @JavascriptInterface และทำให้ข้อมูลรั่วไหลหรือเสียหาย หรือแม้แต่ทำให้ผู้โจมตีดำเนินการกับโค้ดใดก็ได้
เราขอแนะนำให้คุณป้องกันช่องโหว่นี้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้
ตัวเลือกที่ 1: ตรวจสอบว่า WebView ไม่ได้เพิ่มออบเจ็กต์ในอินเทอร์เฟซ JavaScript
ตรวจสอบว่าไม่มีการเพิ่มออบเจ็กต์ใดในอินเทอร์เฟซ JavaScript ของ WebView ที่โหลดเนื้อหาเว็บที่ไม่น่าเชื่อถือ โดยทำได้ 2 วิธีดังนี้
ตรวจสอบว่าไม่มีการเพิ่มออบเจ็กต์ใดๆ เลยในอินเทอร์เฟซ JavaScript ผ่านการเรียกใช้ addJavascriptInterface
-
นำออบเจ็กต์ออกจากอินเทอร์เฟซ JavaScript ใน shouldInterceptRequest ผ่าน removeJavascriptInterface ก่อนที่ WebView จะโหลดเนื้อหาที่ไม่น่าเชื่อถือ
ตัวเลือกที่ 2: ตรวจสอบว่า WebView ไม่ได้โหลดเนื้อหาเว็บที่ไม่น่าเชื่อถือ
หากแอปจำเป็นต้องแสดงออบเจ็กต์ไปยังอินเทอร์เฟซ JavaScript ของ WebView ให้ตรวจสอบว่า WebView ไม่ได้โหลดเนื้อหาเว็บผ่านการเชื่อมต่อที่ไม่ได้เข้ารหัส โดยตั้งค่า android:usesCleartextTraffic เป็น "เท็จ" ในไฟล์ Manifest หรือตั้งค่า Network Security Config ที่ไม่อนุญาตให้มีการเข้าชมแบบ HTTP หรือจะตรวจสอบให้แน่ใจว่า WebView ที่ได้รับผลกระทบไม่โหลด URL ที่มีรูปแบบ HTTP ผ่าน loadUrl ก็ได้
ตรวจสอบว่า WebView ที่มีอินเทอร์เฟซ JavaScript ไม่โหลด URL ที่ไม่ได้ตรวจสอบและมาจากแหล่งที่มาที่ไม่น่าเชื่อถือ (เช่น URL ที่ได้รับจาก Intent ที่ไม่น่าเชื่อถือ)
เราพร้อมช่วยเหลือคุณ
หากคุณมีคำถามทางเทคนิคเกี่ยวกับช่องโหว่ ก็โพสต์คำถามที่ Stack Overflow และใช้แท็ก "android-security" ได้ หากต้องการคำชี้แจงเกี่ยวกับขั้นตอนที่ต้องดำเนินการเพื่อแก้ไขปัญหานี้ โปรดติดต่อทีมสนับสนุนนักพัฒนาซอฟต์แวร์