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

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

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

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

ต้องดำเนินการ​

  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. อัปเดต targetSdkVersion
    ตรวจสอบว่า targetSdkVersion ตรงตามข้อกำหนดระดับ API เป้าหมายของ Google Play แล้ว แอปที่มี targetSdkVersion เป็น 16 หรือต่ำกว่าจะประเมิน URL ของ JavaScript ที่ส่งผ่านไปยัง loadUrl ในบริบทของหน้าที่โหลดไว้ในปัจจุบัน การกำหนดเป้าหมาย SDK เวอร์ชัน 16 หรือต่ำกว่าและการเรียกใช้ loadUrl โดยใช้อินพุตที่ไม่ผ่านการตรวจสอบจาก Intent ที่ไม่น่าเชื่อถือทำให้ผู้โจมตีเรียกใช้สคริปต์ที่อันตรายใน WebView ที่ได้รับผลกระทบได้
  2. ป้องกันการเรียกใช้ evaluateJavascript
    ตรวจสอบว่าพารามิเตอร์ที่จะ evaluateJavascript เชื่อถือได้เสมอ การเรียกใช้ evaluateJavascript โดยใช้อินพุตที่ไม่ผ่านการตรวจสอบจาก Intent ที่ไม่น่าเชื่อถือทำให้ผู้โจมตีเรียกใช้สคริปต์ที่อันตรายใน WebView ที่ได้รับผลกระทบได้
  3. ป้องกันการโหลดไฟล์ที่ไม่ปลอดภัย
    ตรวจสอบว่า WebView ที่ได้รับผลกระทบโหลดฐานข้อมูลคุกกี้ไม่ได้ WebView ที่โหลด file:// URL ที่ไม่ผ่านการตรวจสอบจาก Intent ที่ไม่น่าเชื่อถืออาจถูกแอปที่อันตรายโจมตีด้วยวิธีต่อไปนี้ หน้าเว็บที่อันตรายเขียนแท็ก <script> ลงในฐานข้อมูลคุกกี้ จากนั้นแอปที่อันตรายจะส่ง Intent ด้วย file:// URL ที่ชี้ไปยังฐานข้อมูลคุกกี้ WebView ของคุณ หากโหลดฐานข้อมูลคุกกี้ใน WebView สคริปต์ที่อันตรายจะถูกเรียกใช้และอาจขโมยข้อมูลเซสชันได้
    มี 2 วิธีที่ใช้ตรวจสอบได้ว่า WebView ที่ได้รับผลกระทบจะโหลดฐานข้อมูลคุกกี้ WebView ไม่ได้ นั่นคือปิดใช้การเข้าถึงไฟล์ทั้งหมดหรือยืนยันว่า file:// URL ที่โหลดชี้ไปยังไฟล์ที่ปลอดภัย โปรดทราบว่าผู้โจมตีอาจใช้ Symbolic Link เพื่อหลอกลวงการตรวจสอบเส้นทาง URL ดังนั้น ในการป้องกันการโจมตีดังกล่าว อย่าลืมตรวจสอบเส้นทาง Canonical ของ file:// URL ที่ไม่น่าเชื่อถือก่อนที่จะโหลด โดยไม่เพียงแค่ตรวจสอบเส้นทาง URL เท่านั้น

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

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