과도한 에이전시란 대규모 언어 모델(LLM)에 다른 시스템과 상호작용할 수 있는 불필요하거나 지나치게 허용적인 기능이 부여될 때 발생하는 취약점입니다. LLM이 외부 도구, 플러그인 또는 함수('에이전시')를 호출할 수 있는 경우 이 취약점을 통해 의도하지 않고, 승인되지 않았으며, 잠재적으로 유해한 작업을 실행할 수 있습니다. 공격자는 프롬프트 삽입 또는 기타 조작 기법을 사용하여 LLM이 악의적인 목적으로 부여된 에이전시를 사용하도록 속여 이를 악용할 수 있습니다. 핵심 문제는 LLM이 작업을 수행할 수 있다는 점뿐만 아니라 이러한 작업의 범위가 너무 넓고 제대로 제어되지 않는다는 점입니다.
Android 개발자가 관심을 가져야 하는 이유
Android 애플리케이션 내에서 LLM에 과도한 권한을 부여하면 다음과 같은 심각한 보안 사고가 발생할 수 있습니다.
- 무단 시스템 액세스: 함수 호출을 통해 기기의 파일 시스템 및 저장소 리소스 또는 네트워크 호출 실행 기능이 모델에 노출되는 경우 공격자가 프롬프트 삽입을 사용하여 기기 (예: 사용자 문서, 앱 데이터) 또는 연결된 네트워크 리소스의 파일에 액세스하거나 파일을 수정 또는 삭제할 수 있습니다.
- 데이터 무단 반출: 앱이 함수 호출을 사용하여 LLM에 로컬 데이터 (예: Room 데이터베이스, SharedPreferences 또는 내부 API)에 대한 액세스 권한을 부여하는 경우 악성 프롬프트는 모델이 민감한 정보를 검색하여 이메일이나 네트워크 요청 기능과 같은 외부 도구에 전달하도록 속일 수 있습니다.
- 기타 기능/시스템 손상: LLM이 기타 기능 (예: SMS 전송, 전화 걸기, 암시적 인텐트를 사용한 소셜 미디어 게시, 시스템 설정 수정, 인앱 구매)을 관리하는 경우 공격자가 이러한 기능을 하이재킹하여 스팸을 보내거나, 허위 정보를 퍼뜨리거나, 승인되지 않은 거래를 실행하여 직접적인 금전적 손실이나 사용자 피해를 초래할 수 있습니다.
- 서비스 거부: LLM이 데이터베이스 쿼리나 네트워크 요청을 노출하는 함수 호출과 통합된 경우 악의적인 프롬프트가 이러한 작업을 반복적으로 트리거할 수 있습니다. 이로 인해 과도한 배터리 소모, 데이터 초과, 로컬 리소스 고갈과 같은 시스템 상태 저하가 발생할 수 있습니다.
Android 앱 개발자를 위한 완화 조치
Android 앱의 과도한 에이전시 완화는 LLM이 액세스하거나 트리거할 수 있는 모든 도구와 기능에 최소 권한 원칙을 적용하는 데 중점을 둡니다.
AI의 도구 상자 제한 (세부적인 함수와 개방형 함수 비교):
- 최소한의 도구 제공: LLM은 앱 내에서 작업을 수행하는 데 절대적으로 필요한 특정 도구 (함수, API, 인텐트)에만 액세스할 수 있어야 합니다. 웹을 탐색하거나 이메일을 보낼 수 없어야 하는 경우 이러한 기능을 노출하지 마세요.
- 단순한 단일 목적 도구 사용: 범위가 제한적이고 구체적인 도구를 설계합니다. 예를 들어 여러 데이터 소스에 액세스하기 위해 개방형 매개변수를 허용하는 일반 도구 대신 특정 유형의 사용자 설정만 읽는 도구를 제공합니다. 모델이 명령어 또는 인수를 정의하도록 허용하여
Runtime.getRuntime().exec()와 같은 강력한 시스템 수준 API가 LLM에 노출되지 않도록 합니다.
AI의 권한 제한
- 세부적인 Android 권한: LLM 트리거 함수가 Android 시스템 리소스 또는 다른 앱과 상호작용하는 경우 앱이 필요한 최소한의 Android 권한만 요청하고 보유하는지 확인합니다.
- 사용자별 권한: LLM이 사용자를 대신하여 작업을 실행할 때는 해당 사용자의 특정 권한과 컨텍스트를 사용해야 합니다. LLM이 취하는 작업은 특정 사용자 명령에 대한 직접적인 응답이어야 합니다.
사람이 관리하도록 유지 (중요한 작업에 대한 사용자 동의)
- 사용자 승인 필요: LLM이 제안하거나 시도할 수 있는 중요하거나 위험한 작업 (예: 데이터 삭제, 인앱 구매, 메시지 전송, 중요 설정 변경)의 경우 UI에서 확인 대화상자를 사용하여 항상 명시적인 사람의 승인을 요구하세요. 중요한 결정을 승인받기 위해 관리자가 필요한 것과 같습니다.
신뢰하되 검증 (입력/출력 유효성 검사 및 강력한 백엔드)
- 백엔드 보안: LLM이 작업을 허용할지 여부를 결정하도록 하지 마세요. LLM 트리거 함수가 연결되는 백엔드 서비스 또는 API에는 모든 요청을 다시 확인하고 합법적이며 예상 매개변수 내에 있는지 확인하기 위한 자체적인 강력한 인증, 승인, 입력 유효성 검사가 있어야 합니다.
- 데이터 정리: 다른 취약점과 마찬가지로 LLM에 입력되는 입력과 LLM이 함수 호출을 위해 생성한 매개변수를 모두 정리하고 검증하여 작업이 실행되기 전에 악성 명령어 또는 예기치 않은 출력을 포착하는 것이 중요합니다.
요약
과도한 에이전시란 LLM이 다른 시스템이나 기능과 상호작용할 수 있는 권한이 지나치게 광범위하여 유해한 작업을 수행하도록 속일 수 있는 심각한 취약점입니다. 이로 인해 Android 애플리케이션에서 무단 데이터 액세스, 시스템 손상, 금전적 손실 또는 사용자 피해가 발생할 수 있습니다. 완화는 최소 권한의 원칙에 크게 의존합니다. LLM에서 사용할 수 있는 도구와 Android 권한을 엄격하게 제한하고, 각 도구에 최소한의 구체적인 기능이 있는지 확인하고, 영향이 큰 모든 작업에 사람의 승인을 요구합니다.