ข้อมูลนี้มีไว้สำหรับนักพัฒนาซอฟต์แวร์ที่แอปของตนมีช่องโหว่เกี่ยวกับการเขียนสคริปต์ข้ามแอป
สิ่งที่จะเกิดขึ้น
แอปของคุณอย่างน้อย 1 แอปมีปัญหาเกี่ยวกับการเขียนสคริปต์ข้ามแอปใน WebView ซึ่งอาจทำให้แอปที่เป็นอันตรายขโมยคุกกี้ของผู้ใช้และข้อมูลอื่นๆ ได้ โปรดดูประกาศใน Play Console หลังพ้นกำหนดเวลาที่แสดงใน Play Console เราอาจนำแอปที่มีช่องโหว่ด้านความปลอดภัยที่ไม่ได้รับการแก้ไขออกจาก Google Play
สิ่งที่ต้องดำเนินการ
- ลงชื่อเข้าใช้ Play Console และไปที่ส่วนการแจ้งเตือนเพื่อดูแอปที่ได้รับผลกระทบและกำหนดเวลาในการแก้ไขปัญหาเหล่านี้
- อัปเดตแอปที่ได้รับผลกระทบและแก้ไขช่องโหว่
- ส่งเวอร์ชันอัปเดตของแอปที่ได้รับผลกระทบ
ระหว่างนี้แอปใหม่หรือการอัปเดตแอปของคุณจะมีสถานะรอการเผยแพร่ จนกว่าจะมีการตรวจสอบคำขอ คุณจะยังคงเห็นคำเตือนหากยังไม่ได้อัปเดตแอปให้ถูกต้อง
รายละเอียดเพิ่มเติม
WebView ที่เปิดใช้ JavaScript และโหลดข้อมูลที่อ่านจาก Intent ที่ไม่น่าเชื่อถืออาจถูกแอปที่เป็นอันตรายหลอกให้เรียกใช้โค้ด JavaScript ในบริบทที่ไม่ปลอดภัย เราขอแนะนำให้คุณป้องกันช่องโหว่นี้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้
ตัวเลือกที่ 1: ตรวจสอบว่าไม่มีการส่งออก Activity ที่ได้รับผลกระทบ
ค้นหา Activity ที่ WebView ได้รับผลกระทบ หาก Activity เหล่านี้ไม่จำเป็นต้องนำ Intent มาจากแอปอื่นๆ คุณอาจตั้งค่า android:exported=false สำหรับ Activity ในไฟล์ Manifest ซึ่งจะช่วยไม่ให้แอปที่เป็นอันตรายส่งอินพุตที่เป็นภัยไปยัง WebView ใน Activity เหล่านี้
ตัวเลือกที่ 2: ปกป้อง WebView ใน Activity ที่ส่งออก
หากต้องการตั้งค่า Activity ที่ WebView ได้รับผลกระทบตามที่ส่งออก เราขอแนะนำให้ทำการเปลี่ยนแปลงต่อไปนี้
- ปกป้องการเรียกใช้ evaluateJavascript และ loadUrl
ตรวจสอบว่าพารามิเตอร์ที่ส่งไปยัง evaluateJavascript เชื่อถือได้เสมอ การเรียกใช้ evaluateJavascript โดยใช้อินพุตที่ไม่ผ่านการตรวจสอบจาก Intent ที่ไม่น่าเชื่อถือทำให้ผู้โจมตีเรียกใช้สคริปต์ที่อันตรายใน WebView ที่ได้รับผลกระทบได้ ในทำนองเดียวกัน การเรียกใช้ loadUrl ซึ่งมีอินพุตไม่ผ่านการตรวจสอบที่มี URL ในรูปแบบ javascript: จะทำให้ผู้โจมตีเรียกใช้สคริปต์ที่เป็นอันตรายได้
- ป้องกันการโหลดไฟล์ที่ไม่ปลอดภัย
ตรวจสอบว่า WebView ที่ได้รับผลกระทบโหลดฐานข้อมูลคุกกี้ไม่ได้ WebViews ที่โหลด URL file:// ที่ไม่ผ่านการตรวจสอบจาก Intent ที่ไม่น่าเชื่อถืออาจถูกแอปที่เป็นอันตรายโจมตีด้วย 2 ขั้นตอนต่อไปนี้ ขั้นตอนแรก: หน้าเว็บที่อันตรายสามารถเขียนแท็ก <script> ลงในฐานข้อมูลคุกกี้ ขั้นตอนที่ 2: ไฟล์ฐานข้อมูลคุกกี้ที่ได้รับการแก้ไขนี้จะโหลดได้หากแอปอันตรายส่ง Intent ซึ่งมี URL file:// ที่ชี้ไปยังฐานข้อมูลคุกกี้ WebView หรือหากเป็นหน้าเว็บอันตรายเองที่เปลี่ยนเส้นทาง WebView ไปยัง URL ของไฟล์ <script> อันตรายที่จัดเก็บอยู่ในฐานข้อมูลคุกกี้จะโหลดและดำเนินการ ซึ่งอาจขโมยข้อมูลในเซสชันได้
มี 3 วิธีที่ใช้ตรวจสอบได้ว่า WebView ที่ได้รับผลกระทบจะไม่สามารถโหลดฐานข้อมูลคุกกี้ WebView
- ปิดใช้การเข้าถึงไฟล์ทั้งหมด
- ตรวจดูว่า WebView โหลดเฉพาะ URL file:// และยืนยันว่า URL file:// ที่โหลดชี้ไปยังไฟล์ที่ปลอดภัย โปรดทราบว่าผู้โจมตีอาจใช้ Symbolic Link เพื่อหลอกลวงการตรวจสอบเส้นทาง URL ดังนั้น ในการป้องกันการโจมตีดังกล่าว อย่าลืมตรวจสอบเส้นทาง Canonical ของ URL file:// ที่ไม่น่าเชื่อถือก่อนที่จะโหลด แทนที่จะตรวจสอบเฉพาะเส้นทาง URL
- หากต้องการอนุญาตให้ทั้ง URL http:// และ URL file:// ให้ใช้การยืนยัน URL file:// โดยใช้ shouldOverrideUrlLoading และ shouldInterceptRequest ใน WebViewClient วิธีนี้ช่วยให้มั่นใจว่า URL ทั้งหมดที่โหลดไปยัง WebView นั้นได้รับการยืนยัน ไม่จำกัดเพียง URL ที่ส่งให้การเรียกใช้ฟังก์ชัน loadUrl() โดยตรงเท่านั้น
เราพร้อมช่วยเหลือคุณ
หากมีคำถามทางเทคนิคเกี่ยวกับช่องโหว่ คุณโพสต์ไว้ที่ Stack Overflow ได้โดยใช้แท็ก "android-security" หากต้องการคำชี้แจงเกี่ยวกับขั้นตอนที่ต้องดำเนินการเพื่อแก้ไขปัญหานี้ โปรดติดต่อทีมสนับสนุนนักพัฒนาซอฟต์แวร์