การแก้ไขช่องโหว่ในการแทรกอินเทอร์เฟซ JavaScript

ข้อมูลนี้มีไว้สำหรับนักพัฒนาซอฟต์แวร์ของแอปที่มีช่องโหว่ในการแทรกอินเทอร์เฟซ JavaScript

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

โปรดดูประกาศใน Play Console เราอาจนำแอปที่มีช่องโหว่ด้านความปลอดภัยที่ไม่มีการแก้ไขออกจาก Google Play หลังพ้นกำหนดเวลาที่แสดงใน Play Console

สิ่งที่ต้องดำเนินการ​

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

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

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

WebView ที่แสดงออบเจ็กต์ระดับแอปแก่โค้ด JavaScript ผ่าน addJavascriptInterface และโหลดเนื้อหาเว็บที่ไม่น่าเชื่อถือจะเสี่ยงต่อการเกิดการแทรกอินเทอร์เฟซ JavaScript เนื้อหาที่ไม่น่าเชื่อถืออาจดำเนินการกับวิธีการของออบเจ็กต์ที่เปิดเผยซึ่งมีหมายเหตุ @JavascriptInterface และทำให้ข้อมูลรั่วไหลหรือเสียหาย หรือแม้แต่ทำให้ผู้โจมตีดำเนินการกับโค้ดใดก็ได้

เราขอแนะนำให้คุณป้องกันช่องโหว่นี้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้

ตัวเลือกที่ 1: ตรวจสอบว่า WebView ไม่ได้เพิ่มออบเจ็กต์ในอินเทอร์เฟซ JavaScript

ตรวจสอบว่าไม่มีการเพิ่มออบเจ็กต์ใดในอินเทอร์เฟซ JavaScript ของ WebView ที่โหลดเนื้อหาเว็บที่ไม่น่าเชื่อถือ โดยทำได้ 2 วิธีดังนี้

 

ตรวจสอบว่าไม่มีการเพิ่มออบเจ็กต์ใดๆ เลยในอินเทอร์เฟซ JavaScript ผ่านการเรียกใช้ addJavascriptInterface

  1. นำออบเจ็กต์ออกจากอินเทอร์เฟซ 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" ได้ หากต้องการคำชี้แจงเกี่ยวกับขั้นตอนที่ต้องดำเนินการเพื่อแก้ไขปัญหานี้ โปรดติดต่อทีมสนับสนุนนักพัฒนาซอฟต์แวร์

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