Nội dung mô tả về rủi ro theo OWASP
Quyền tự chủ quá mức là một điểm yếu xảy ra khi một mô hình ngôn ngữ lớn (LLM) được cấp các khả năng không cần thiết hoặc quá cho phép để tương tác với các hệ thống khác. Khi một LLM có thể gọi các công cụ, trình bổ trợ hoặc chức năng bên ngoài (khả năng "tác động" của LLM), lỗ hổng này cho phép LLM thực hiện những hành động ngoài ý muốn, trái phép và có khả năng gây hại. Kẻ tấn công có thể khai thác điều này bằng cách sử dụng kỹ thuật chèn câu lệnh hoặc các kỹ thuật thao túng khác để lừa LLM sử dụng quyền được cấp cho các mục đích độc hại. Vấn đề cốt lõi không chỉ là LLM có thể thực hiện các hành động, mà phạm vi của những hành động đó quá rộng và không được kiểm soát chặt chẽ.
Lý do nhà phát triển Android nên quan tâm
Việc cấp cho một LLM quá nhiều quyền trong ứng dụng Android của bạn có thể dẫn đến các sự cố bảo mật nghiêm trọng:
- Truy cập trái phép vào hệ thống: Nếu hệ thống tệp và tài nguyên lưu trữ của thiết bị hoặc khả năng thực hiện các lệnh gọi mạng được cung cấp cho mô hình thông qua tính năng gọi hàm, thì kẻ tấn công có thể sử dụng kỹ thuật chèn câu lệnh để truy cập, sửa đổi hoặc xoá tệp trên thiết bị (ví dụ: tài liệu người dùng, dữ liệu ứng dụng) hoặc các tài nguyên mạng được kết nối.
- Rò rỉ dữ liệu: Nếu một ứng dụng sử dụng một hàm gọi để cấp cho LLM quyền truy cập vào dữ liệu cục bộ (chẳng hạn như cơ sở dữ liệu Room, SharedPreferences hoặc API nội bộ). Một câu lệnh độc hại có thể đánh lừa mô hình để truy xuất thông tin nhạy cảm và truyền thông tin đó đến một công cụ bên ngoài, chẳng hạn như chức năng yêu cầu email hoặc mạng.
- Xâm nhập các chức năng/hệ thống khác: Nếu LLM có quyền kiểm soát các chức năng khác (ví dụ: gửi tin nhắn SMS, thực hiện cuộc gọi, đăng bài trên mạng xã hội bằng cách sử dụng ý định ngầm, sửa đổi chế độ cài đặt hệ thống, thực hiện giao dịch mua hàng trong ứng dụng), kẻ tấn công có thể chiếm đoạt các chức năng này để gửi nội dung rác, lan truyền thông tin sai lệch hoặc thực hiện các giao dịch trái phép, dẫn đến tổn thất tài chính trực tiếp hoặc gây hại cho người dùng.
- Từ chối dịch vụ: Nếu một LLM được tích hợp với tính năng gọi hàm để hiển thị các truy vấn cơ sở dữ liệu hoặc yêu cầu mạng, thì một câu lệnh độc hại có thể kích hoạt các hành động này nhiều lần. Điều này có thể dẫn đến tình trạng hệ thống suy giảm, chẳng hạn như pin bị hao mòn quá mức, vượt quá hạn mức dữ liệu hoặc cạn kiệt tài nguyên cục bộ.
Các biện pháp giảm thiểu dành cho nhà phát triển ứng dụng Android
Việc giảm thiểu quyền hạn quá mức trong các ứng dụng Android tập trung vào việc áp dụng nguyên tắc về đặc quyền tối thiểu cho mọi công cụ và chức năng mà LLM có thể truy cập hoặc kích hoạt.
Giới hạn bộ công cụ của AI (các hàm chi tiết so với các hàm có phạm vi mở):
- Cung cấp các công cụ tối thiểu: LLM chỉ nên có quyền truy cập vào các công cụ cụ thể (hàm, API, ý định) mà LLM hoàn toàn cần để thực hiện công việc trong ứng dụng của bạn. Nếu LLM không cần có khả năng duyệt web hoặc gửi email, thì đừng cung cấp những chức năng đó cho LLM.
- Sử dụng các công cụ đơn giản, có một mục đích: Các công cụ thiết kế có phạm vi giới hạn và cụ thể. Ví dụ: cung cấp một công cụ chỉ đọc một loại chế độ cài đặt cụ thể của người dùng thay vì một công cụ chung chấp nhận các tham số mở để truy cập vào nhiều nguồn dữ liệu. Tránh để lộ các API mạnh mẽ ở cấp hệ thống, chẳng hạn như
Runtime.getRuntime().exec(), cho một LLM bằng cách cho phép mô hình xác định lệnh hoặc đối số.
Hạn chế sức mạnh của AI
- Quyền Android chi tiết: Khi một hàm do LLM kích hoạt tương tác với tài nguyên hệ thống Android hoặc các ứng dụng khác, hãy xác minh rằng ứng dụng của bạn chỉ yêu cầu và giữ lại số lượng quyền Android tối thiểu tuyệt đối cần thiết.
- Quyền cho mỗi người dùng: Khi thực hiện một hành động thay cho người dùng, LLM phải thực hiện hành động đó với quyền và ngữ cảnh cụ thể của người dùng đó. Một hành động do LLM thực hiện phải là phản hồi trực tiếp cho một lệnh cụ thể của người dùng.
Đảm bảo người dùng vẫn có quyền kiểm soát (người dùng đồng ý đối với các hành động quan trọng)
- Yêu cầu người dùng phê duyệt: Đối với mọi hành động quan trọng hoặc rủi ro mà mô hình ngôn ngữ lớn có thể đề xuất hoặc cố gắng thực hiện (ví dụ: xoá dữ liệu, mua hàng trong ứng dụng, gửi tin nhắn, thay đổi các chế độ cài đặt quan trọng), hãy luôn yêu cầu người dùng phê duyệt rõ ràng bằng cách sử dụng hộp thoại xác nhận trong giao diện người dùng. Hãy coi đó là việc bạn cần một người quản lý phê duyệt một quyết định quan trọng.
Tin tưởng nhưng xác minh (xác thực dữ liệu đầu vào/đầu ra và các dịch vụ phụ trợ mạnh mẽ)
- Bảo mật phụ trợ: Đừng chỉ dựa vào LLM để quyết định xem một hành động có được phép hay không. Mọi dịch vụ hoặc API phụ trợ mà các hàm do LLM kích hoạt kết nối đều phải có quy trình xác thực, uỷ quyền và xác thực đầu vào mạnh mẽ riêng để kiểm tra kỹ từng yêu cầu và xác minh rằng yêu cầu đó là hợp lệ và nằm trong các tham số dự kiến.
- Dọn dẹp dữ liệu: Giống như các lỗ hổng bảo mật khác, bạn phải dọn dẹp và xác thực cả dữ liệu đầu vào được đưa vào LLM và các tham số do LLM tạo cho các lệnh gọi hàm để phát hiện mọi chỉ dẫn độc hại hoặc kết quả không mong muốn trước khi thực hiện bất kỳ hành động nào.
Tóm tắt
Quyền truy cập quá mức là một lỗ hổng nghiêm trọng, trong đó LLM có quyền tương tác quá rộng với các hệ thống hoặc chức năng khác, cho phép kẻ tấn công lừa LLM thực hiện các hành động gây hại. Điều này có thể dẫn đến việc truy cập dữ liệu trái phép, xâm nhập hệ thống, tổn thất tài chính hoặc gây hại cho người dùng trong các ứng dụng Android. Việc giảm thiểu phụ thuộc nhiều vào nguyên tắc về đặc quyền tối thiểu: hạn chế nghiêm ngặt các công cụ và quyền Android mà LLM có thể sử dụng, xác minh rằng mỗi công cụ có chức năng tối thiểu và cụ thể, đồng thời yêu cầu sự phê duyệt của con người đối với tất cả các hoạt động có tác động lớn.