과도한 기관 취약점 완화

OWASP 위험 설명

과도한 에이전시란 대규모 언어 모델(LLM)에 다른 시스템과 상호작용할 수 있는 불필요하거나 지나치게 허용적인 기능이 부여될 때 발생하는 취약점입니다. LLM이 외부 도구, 플러그인 또는 함수('에이전시')를 호출할 수 있는 경우 이 취약점을 통해 의도하지 않고, 승인되지 않았으며, 잠재적으로 유해한 작업을 실행할 수 있습니다. 공격자는 프롬프트 삽입 또는 기타 조작 기법을 사용하여 LLM이 악의적인 목적으로 부여된 에이전시를 사용하도록 속여 이를 악용할 수 있습니다. 핵심 문제는 LLM이 작업을 수행할 수 있다는 점뿐만 아니라 이러한 작업의 범위가 너무 넓고 제대로 제어되지 않는다는 점입니다.

Android 개발자가 관심을 가져야 하는 이유

Android 애플리케이션 내에서 LLM에 과도한 권한을 부여하면 심각한 보안 사고가 발생할 수 있습니다.

  • 무단 시스템 액세스: 모델에 로컬 Android 기반 기기 (예: 사용자 문서, 앱 데이터) 또는 연결된 네트워크 리소스에 액세스하거나, 수정하거나, 삭제할 수 있는 권한과 해당 Android 권한이 있는 경우 공격자가 LLM에 이를 실행하도록 명령할 수 있습니다.
  • 데이터 유출: LLM이 로컬 앱 데이터베이스 (예: Room), SharedPreferences 또는 내부 API에서 민감한 데이터를 읽은 다음 해당 정보를 외부 소스로 유출하도록 속일 수 있습니다 (예: API 호출 또는 이메일 기능을 사용하여 전송). 모델은 학습 단계에서 흡수한 민감한 정보나 사용자가 프롬프트에 제공한 민감한 정보를 유출할 수도 있습니다.
  • 기타 기능/시스템 손상: LLM이 기타 기능 (예: SMS 전송, 전화 걸기, 암시적 인텐트를 사용한 소셜 미디어 게시, 시스템 설정 수정, 인앱 구매)을 제어하는 경우 공격자가 이러한 기능을 하이재킹하여 스팸을 보내거나, 허위 정보를 퍼뜨리거나, 승인되지 않은 거래를 실행하여 직접적인 금전적 손실이나 사용자 피해를 초래할 수 있습니다.
  • 서비스 거부: 앱 내에서 또는 백엔드 서비스에 대해 복잡한 데이터베이스 쿼리를 실행하거나 루프에서 API를 호출하는 등 리소스 집약적인 작업을 반복적으로 실행하도록 LLM에 지시할 수 있습니다. 이로 인해 앱이 응답하지 않거나, 배터리가 소모되거나, 데이터 사용량이 과도해지거나, 백엔드 시스템의 서비스가 거부될 수도 있습니다.

Android 앱 개발자를 위한 완화 조치

Android 앱의 과도한 에이전시 완화는 LLM이 액세스하거나 트리거할 수 있는 모든 도구와 기능에 최소 권한 원칙을 적용하는 데 중점을 둡니다.

AI의 도구 상자 제한 (세부적인 함수와 개방형 함수 비교):

  • 최소한의 도구 제공: LLM은 앱 내에서 작업을 수행하는 데 절대적으로 필요한 특정 도구 (함수, API, 인텐트)에만 액세스할 수 있어야 합니다. 웹을 탐색하거나 이메일을 보낼 수 없어야 하는 경우 이러한 기능을 노출하지 마세요.
  • 단일 용도의 간단한 도구 사용: 모든 작업을 실행할 수 있는 강력한 개방형 도구('모든 셸 명령어 실행' 등) 대신 특정 작업('특정 유형의 사용자 설정 읽기' 등)만 실행할 수 있는 도구를 LLM에 제공하는 것이 좋습니다.

AI의 권한 제한

  • 세부적인 Android 권한: LLM 트리거 함수가 Android 시스템 리소스 또는 다른 앱과 상호작용하는 경우 앱이 필요한 최소한의 Android 권한만 요청하고 보유하는지 확인합니다.
  • 사용자별 권한: LLM이 사용자를 대신하여 작업을 실행할 때는 더 광범위하고 관리자 수준일 수 있는 앱 수준 계정이 아닌 해당 사용자의 특정 권한과 컨텍스트를 사용하여 실행해야 합니다. 이를 통해 LLM이 사용자가 직접 할 수 없는 작업을 수행할 수 없음을 확인할 수 있습니다.

사람이 관리하도록 유지 (중요한 작업에 대한 사용자 동의)

  • 사용자 승인 필요: LLM이 제안하거나 시도할 수 있는 중요하거나 위험한 작업 (예: 데이터 삭제, 인앱 구매, 메시지 전송, 중요 설정 변경)의 경우 UI에서 확인 대화상자를 사용하여 항상 명시적인 사람의 승인을 요구합니다. 중요한 결정을 승인할 관리자가 필요하다고 생각하면 됩니다.

신뢰하되 검증 (입력/출력 검증 및 강력한 백엔드)

  • 백엔드 보안: LLM이 작업 허용 여부를 결정하도록 하지 마세요. LLM 트리거 함수가 연결되는 백엔드 서비스 또는 API에는 모든 요청을 다시 확인하고 합법적이며 예상 매개변수 내에 있는지 확인하기 위한 자체의 강력한 인증, 승인, 입력 유효성 검사가 있어야 합니다.
  • 데이터 정리: 다른 취약점과 마찬가지로 LLM에 입력되는 입력과 함수 호출을 위해 LLM에서 생성된 매개변수를 모두 정리하고 검증하여 작업이 실행되기 전에 악성 명령어 또는 예기치 않은 출력을 포착하는 것이 중요합니다.

요약

과도한 에이전시란 LLM이 다른 시스템이나 기능과 상호작용할 수 있는 권한이 지나치게 광범위하여 유해한 작업을 수행하도록 속일 수 있는 심각한 취약점입니다. 이로 인해 Android 애플리케이션에서 무단 데이터 액세스, 시스템 손상, 금전적 손실 또는 사용자 피해가 발생할 수 있습니다. 완화는 최소 권한 원칙에 크게 의존합니다. LLM에서 사용할 수 있는 도구와 Android 권한을 엄격하게 제한하고, 각 도구에 최소한의 구체적인 기능이 있는지 확인하고, 영향이 큰 모든 작업에 사람의 승인을 요구합니다.

추가 리소스