การแก้ไขช่องโหว่เกี่ยวกับการเขียนสคริปต์ข้ามแอป

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

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

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

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

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

ระหว่างนี้แอปใหม่หรือการอัปเดตแอปของคุณจะมีสถานะรอการเผยแพร่ จนกว่าจะมีการตรวจสอบคำขอ คุณจะยังคงเห็นคำเตือนหากยังไม่ได้อัปเดตแอปให้ถูกต้อง

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

WebView ที่เปิดใช้ JavaScript และโหลดข้อมูลที่อ่านจาก Intent ที่ไม่น่าเชื่อถืออาจถูกแอปที่เป็นอันตรายหลอกให้เรียกใช้โค้ด JavaScript ในบริบทที่ไม่ปลอดภัย เราขอแนะนำให้คุณป้องกันช่องโหว่นี้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้

ตัวเลือกที่ 1: ตรวจสอบว่าไม่มีการส่งออก Activity ที่ได้รับผลกระทบ

ค้นหา Activity ที่ WebView ได้รับผลกระทบ หาก Activity เหล่านี้ไม่จำเป็นต้องนำ Intent มาจากแอปอื่นๆ คุณอาจตั้งค่า android:exported=false สำหรับ Activity ในไฟล์ Manifest ซึ่งจะช่วยไม่ให้แอปที่เป็นอันตรายส่งอินพุตที่เป็นภัยไปยัง WebView ใน Activity เหล่านี้

ตัวเลือกที่ 2: ปกป้อง WebView ใน Activity ที่ส่งออก

หากต้องการตั้งค่า Activity ที่ WebView ได้รับผลกระทบตามที่ส่งออก เราขอแนะนำให้ทำการเปลี่ยนแปลงต่อไปนี้

  1. ปกป้องการเรียกใช้ evaluateJavascript และ loadUrl

    ตรวจสอบว่าพารามิเตอร์ที่ส่งไปยัง evaluateJavascript เชื่อถือได้เสมอ การเรียกใช้ evaluateJavascript โดยใช้อินพุตที่ไม่ผ่านการตรวจสอบจาก Intent ที่ไม่น่าเชื่อถือทำให้ผู้โจมตีเรียกใช้สคริปต์ที่อันตรายใน WebView ที่ได้รับผลกระทบได้ ในทำนองเดียวกัน การเรียกใช้ loadUrl ซึ่งมีอินพุตไม่ผ่านการตรวจสอบที่มี URL ในรูปแบบ javascript: จะทำให้ผู้โจมตีเรียกใช้สคริปต์ที่เป็นอันตรายได้

  2. ป้องกันการโหลดไฟล์ที่ไม่ปลอดภัย

    ตรวจสอบว่า WebView ที่ได้รับผลกระทบโหลดฐานข้อมูลคุกกี้ไม่ได้ WebViews ที่โหลด URL file:// ที่ไม่ผ่านการตรวจสอบจาก Intent ที่ไม่น่าเชื่อถืออาจถูกแอปที่เป็นอันตรายโจมตีด้วย 2 ขั้นตอนต่อไปนี้ ขั้นตอนแรก: หน้าเว็บที่อันตรายสามารถเขียนแท็ก <script> ลงในฐานข้อมูลคุกกี้ ขั้นตอนที่ 2: ไฟล์ฐานข้อมูลคุกกี้ที่ได้รับการแก้ไขนี้จะโหลดได้หากแอปอันตรายส่ง Intent ซึ่งมี URL file:// ที่ชี้ไปยังฐานข้อมูลคุกกี้ WebView หรือหากเป็นหน้าเว็บอันตรายเองที่เปลี่ยนเส้นทาง WebView ไปยัง URL ของไฟล์ <script> อันตรายที่จัดเก็บอยู่ในฐานข้อมูลคุกกี้จะโหลดและดำเนินการ ซึ่งอาจขโมยข้อมูลในเซสชันได้

    มี 3 วิธีที่ใช้ตรวจสอบได้ว่า WebView ที่ได้รับผลกระทบจะไม่สามารถโหลดฐานข้อมูลคุกกี้ WebView

    1. ปิดใช้การเข้าถึงไฟล์ทั้งหมด
    2. ตรวจดูว่า WebView โหลดเฉพาะ URL file:// และยืนยันว่า URL file:// ที่โหลดชี้ไปยังไฟล์ที่ปลอดภัย โปรดทราบว่าผู้โจมตีอาจใช้ Symbolic Link เพื่อหลอกลวงการตรวจสอบเส้นทาง URL ดังนั้น ในการป้องกันการโจมตีดังกล่าว อย่าลืมตรวจสอบเส้นทาง Canonical ของ URL file:// ที่ไม่น่าเชื่อถือก่อนที่จะโหลด แทนที่จะตรวจสอบเฉพาะเส้นทาง URL
    3. หากต้องการอนุญาตให้ทั้ง URL http:// และ URL file:// ให้ใช้การยืนยัน URL file:// โดยใช้ shouldOverrideUrlLoading และ shouldInterceptRequest ใน WebViewClient วิธีนี้ช่วยให้มั่นใจว่า URL ทั้งหมดที่โหลดไปยัง WebView นั้นได้รับการยืนยัน ไม่จำกัดเพียง URL ที่ส่งให้การเรียกใช้ฟังก์ชัน loadUrl() โดยตรงเท่านั้น

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

ข้อมูลนี้มีประโยชน์ไหม

เราจะปรับปรุงได้อย่างไร
false
เมนูหลัก
8148431901041256153
true
ค้นหาศูนย์ช่วยเหลือ
true
true
true
true
true
5016068
false
false