ทดสอบและแก้ไขข้อบกพร่องของฟีเจอร์

หมวดหมู่ OWASP: MASVS-CODE: คุณภาพของโค้ด

ภาพรวม

การเผยแพร่บิลด์เวอร์ชันที่ใช้งานจริงซึ่งมีฟีเจอร์การทดสอบหรือการแก้ไขข้อบกพร่องอาจ ส่งผลเสียต่อท่าทีด้านความปลอดภัยของแอปพลิเคชัน ฟังก์ชันการทำงานเหล่านี้ ใช้เพื่อช่วยนักพัฒนาแอปในการค้นหาและระบุข้อบกพร่องภายใน Use Case ของแอปพลิเคชันที่ต้องการ ก่อนหรือหลังการเปิดตัวเวอร์ชันใหม่ และไม่ควร เข้าถึงได้แบบสาธารณะ

ตัวอย่างฟีเจอร์การทดสอบ/ การแก้ไขข้อบกพร่อง ได้แก่

  • เมนูที่ซ่อน
  • ตัวเลือกในการเปิดใช้บันทึกการแก้ไขข้อบกพร่อง
  • ตัวเลือกในการแก้ไขขั้นตอนการสมัคร
  • ตัวเลือกในการหลีกเลี่ยงกระบวนการชำระเงินหรือการสมัครใช้บริการ
  • ตัวเลือกในการหลีกเลี่ยงการตรวจสอบสิทธิ์
  • การทดสอบสำหรับกิจกรรมเฉพาะแอปพลิเคชัน

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

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

อีกจุดหนึ่งที่แอปพลิเคชันมีความเสี่ยงคือแอตทริบิวต์ android:debuggable ซึ่งตั้งค่าไว้ในองค์ประกอบ AndroidManifest.xml <application> ดังที่รายงานไว้ในบทความandroid:debuggable การติดตั้งใช้งานแอปพลิเคชันที่ใช้งานจริงโดยตั้งค่าดังกล่าวข้างต้นจะอนุญาตให้ ผู้ใช้ที่เป็นอันตรายเข้าถึงทรัพยากรของผู้ดูแลระบบซึ่งปกติแล้ว จะเข้าถึงไม่ได้

ผลกระทบ

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

การลดปัญหา

หลีกเลี่ยงการใช้คอมโพเนนต์การแก้ไขข้อบกพร่อง

ไม่ควรนำฟังก์ชันการทดสอบหรือการแก้ไขข้อบกพร่องไปใช้ภายในคอมโพเนนต์ของแอปพลิเคชันเวอร์ชันที่ใช้งานจริง เช่น กิจกรรม ตัวรับสัญญาณออกอากาศ บริการ หรือผู้ให้บริการเนื้อหา เนื่องจากหากมีการส่งออก คอมโพเนนต์เหล่านี้จะเรียกใช้ได้โดยกระบวนการอื่นๆ ในอุปกรณ์ การตั้งค่าคอมโพเนนต์การแก้ไขข้อบกพร่องเป็นไม่ได้ส่งออก (android:exported="false") ไม่ถือเป็นการป้องกันที่ถูกต้องสำหรับความสามารถ เนื่องจากอุปกรณ์ที่รูทแล้วยังคงเรียกใช้ผ่านเครื่องมือ Android Debug Bridge (ADB) ได้ หากเปิดใช้ตัวเลือกการแก้ไขข้อบกพร่อง

จำกัดฟีเจอร์การแก้ไขข้อบกพร่องหรือการทดสอบไว้เฉพาะบิลด์เวอร์ชันทดสอบ

การเรียกใช้ฟังก์ชันทดสอบหรือแก้ไขข้อบกพร่องใดๆ ภายในแอปพลิเคชันควร จำกัดเฉพาะชุดการสร้างเวอร์ชัน Staging ที่จำกัดเพื่อให้เฉพาะนักพัฒนาแอปเท่านั้นที่ แก้ไขข้อบกพร่องหรือทดสอบฟีเจอร์ของแอปพลิเคชันในสภาพแวดล้อมที่มีการควบคุม ซึ่งทำได้โดยการสร้างการทดสอบเฉพาะหรือการสร้างการแก้ไขข้อบกพร่องของ แอปพลิเคชัน และการทดสอบแบบมีเครื่องควบคุมขั้นสูงสำหรับแอปพลิเคชันนั้น เพื่อให้มั่นใจว่าฟีเจอร์การทดสอบหรือการแก้ไขข้อบกพร่องจะทำงานในเวอร์ชันที่แยกต่างหาก

ใช้การทดสอบ UI อัตโนมัติ

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

แหล่งข้อมูล