ลดช่องโหว่ของเอเจนซีที่มากเกินไป

คำอธิบายความเสี่ยงของ OWASP

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

เหตุผลที่นักพัฒนาแอป Android ควรใส่ใจ

การให้สิทธิ์ LLM มากเกินไปภายในแอปพลิเคชัน Android อาจทำให้เกิด เหตุการณ์ด้านความปลอดภัยที่ร้ายแรง

  • การเข้าถึงระบบโดยไม่ได้รับอนุญาต: หากระบบไฟล์และแหล่งข้อมูลพื้นที่เก็บข้อมูลของอุปกรณ์ หรือความสามารถในการโทรผ่านเครือข่ายเปิดเผยต่อโมเดล ผ่านการเรียกใช้ฟังก์ชัน ผู้โจมตีอาจใช้ การแทรกพรอมต์เพื่อเข้าถึง แก้ไข หรือลบไฟล์ในอุปกรณ์ (เช่น เอกสารของผู้ใช้ ข้อมูลแอป) หรือแหล่งข้อมูลเครือข่ายที่เชื่อมต่อ
  • การขโมยข้อมูล: หากแอปใช้การเรียกใช้ฟังก์ชันเพื่อให้ LLM เข้าถึง ข้อมูลในเครื่อง (เช่น ฐานข้อมูล Room, SharedPreferences หรือ API ภายใน) พรอมต์ที่เป็นอันตรายอาจหลอกล่อโมเดลให้ดึงข้อมูลที่ละเอียดอ่อน และส่งไปยังเครื่องมือภายนอก เช่น ฟังก์ชันอีเมลหรือคำขอเครือข่าย
  • การประนีประนอมฟังก์ชัน/ระบบอื่นๆ: หาก LLM มีสิทธิ์เข้าถึงฟังก์ชันอื่นๆ (เช่น การส่ง SMS, การโทร, การโพสต์ในโซเชียลมีเดียโดยใช้ Intent โดยนัย, การแก้ไขการตั้งค่าระบบ, การซื้อในแอป) ผู้โจมตีอาจลักลอบใช้ฟังก์ชันเหล่านี้เพื่อส่งสแปม เผยแพร่ข้อมูลที่ไม่ถูกต้อง หรือทำธุรกรรมที่ไม่ได้รับอนุญาต ซึ่งอาจทำให้เกิดความสูญเสียทางการเงินโดยตรงหรือเป็นอันตรายต่อผู้ใช้
  • การปฏิเสธการให้บริการ: หาก LLM ผสานรวมกับการเรียกใช้ฟังก์ชันที่ แสดงการค้นหาฐานข้อมูลหรือคำขอเครือข่าย พรอมต์ที่เป็นอันตรายอาจ ทริกเกอร์การดำเนินการเหล่านี้ซ้ำๆ ซึ่งอาจส่งผลให้ระบบทำงานได้ไม่ดี เช่น แบตเตอรี่หมดเร็วเกินไป ข้อมูลเกินโควต้า หรือทรัพยากรในเครื่องหมด

การลดความเสี่ยงสำหรับนักพัฒนาแอป Android

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

จำกัดกล่องเครื่องมือของ AI (ฟังก์ชันแบบละเอียดเทียบกับฟังก์ชันแบบเปิด):

  • ให้เครื่องมือขั้นต่ำ: LLM ควรมีสิทธิ์เข้าถึงเฉพาะเครื่องมือ (ฟังก์ชัน, API, Intent) ที่จำเป็นอย่างยิ่งในการทำงานภายในแอปของคุณ หากไม่จำเป็นต้องเรียกดูเว็บหรือส่งอีเมล ก็ไม่ควรให้สิทธิ์เข้าถึงความสามารถเหล่านั้น
  • ใช้เครื่องมือที่เรียบง่ายและมีวัตถุประสงค์เดียว: เครื่องมือออกแบบที่มีขอบเขตจำกัดและเฉพาะเจาะจง เช่น จัดหาเครื่องมือที่อ่านเฉพาะการตั้งค่าประเภทหนึ่งๆ ของผู้ใช้ แทนที่จะเป็นเครื่องมือทั่วไปที่ยอมรับพารามิเตอร์แบบปลายเปิดเพื่อ เข้าถึงแหล่งข้อมูลหลายแหล่ง หลีกเลี่ยงการเปิดเผย API ระดับระบบที่มีประสิทธิภาพ เช่น Runtime.getRuntime().exec() ให้กับ LLM โดยอนุญาตให้โมเดล กำหนดคำสั่งหรืออาร์กิวเมนต์

จำกัดความสามารถของ AI

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

ให้มนุษย์เป็นผู้ควบคุม (ความยินยอมของผู้ใช้สำหรับการดำเนินการที่สำคัญ)

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

เชื่อถือแต่ต้องตรวจสอบ (การตรวจสอบอินพุต/เอาต์พุตและแบ็กเอนด์ที่มีประสิทธิภาพ)

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

สรุป

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

แหล่งข้อมูลเพิ่มเติม