LLM 애플리케이션의 주요 취약점
OWASP에서 LLM 애플리케이션의 10대 주요 취약점 유형을 선정하였는데, 그 내용을 기반으로 작성하였습니다.
자세한 내용은 OWSAP 사이트 참고(https://owasp.org/www-project-top-10-for-large-language-model-applications/)해주세요.
LLM(Large Language Model)은 방대한 양의 텍스트 데이터를 학습하여 사람과 유사한 텍스트를 생성하는 AI 모델입니다. 최근 LLM을 활용한 다양한 애플리케이션이 등장하면서 그 활용 범위가 확대되고 있지만, 아직 다양한 취약점이 존재합니다.
프롬프트 주입(Prompt Injection)
공격자는 LLM에 대한 입력을 조작하여 악의적인 의도를 실행할 수 있습니다. 이는 시스템 프롬프트를 공격적으로 유도하거나 외부 입력을 조작하여 수행할 수 있으며, 데이터 유출, 소셜 엔지니어링, 기타 문제로 이어질 수 있습니다.
Example
- 직접 프롬프트 주입: 공격자가 LLM에 입력하는 프롬프트에 악성 코드를 직접 주입하는 공격입니다.
안전하지 않은 출력 처리 (Insecure Output Handling)
안전하지 않은 출력 처리는 하위 구성 요소가 대규모 언어 모델(LLM) 출력을 제대로 검토하지 않고 무조건 수락할 때 발생하는 취약점입니다. 이는 웹 브라우저에서 XSS 및 CSRF, 백엔드 시스템에서 SSRF, 권한 상승 또는 원격 코드 실행으로 이어질 수 있습니다.
Example
- LLM 출력을 시스템 쉘이나 유사한 함수에 직접 입력하여 원격 코드 실행: 공격자가 LLM의 출력에 악성 코드를 주입하고, 이를 시스템 쉘이나 유사한 함수에 입력하여 원격 코드를 실행하는 공격입니다.
훈련 데이터 오염 (Training Data Poisoning)
훈련 데이터 오염은 모델의 보안, 효율성 또는 윤리적 행동을 침해할 수 있는 취약점, 백도어 또는 편향을 도입하기 위해 데이터 또는 미세 조정 프로세스를 조작하는 것을 말합니다.
이로 인해 성능 저하, 하위 소프트웨어 악용 및 평판 손상이 발생할 수 있습니다.
Example
- 모델의 훈련 데이터를 대상으로 악의적인 문서를 생성하는 공격자: 공격자가 모델의 훈련 데이터를 대상으로 악의적인 문서를 생성하고, 이를 모델에 학습시켜 모델이 잘못된 출력을 생성하도록 하는 공격입니다.
모델 DoS (Model Denial of Service)
모델 DoS는 공격자가 대규모 언어 모델(LLM)과 상호 작용하여 비정상적으로 많은 양의 리소스를 소비할 때 발생합니다.
이로 인해 자신과 다른 사용자의 서비스 품질이 저하되고 잠재적으로 높은 리소스 비용이 발생할 수 있습니다.
Example
- 고정된 시간 간격으로 반복적으로 요청을 생성하여 리소스 사용을 유발하는 공격: 공격자가 LLM에 반복적으로 요청을 생성하여 시스템의 리소스를 고갈시키는 공격입니다.
공급망 취약점 (Supply Chain Vulnerabilities)
LLM의 공급망 취약점은 훈련 데이터, ML 모델, 배포 플랫폼을 손상시켜 편향된 결과, 보안 침해 또는 전체 시스템 실패를 초래할 수 있습니다. 이러한 취약점은 오래된 소프트웨어, 취약한 사전 훈련된 모델, 오염된 훈련 데이터, 안전하지 않은 플러그인 디자인에서 비롯될 수 있습니다.
Example
- 오래된 타사 패키지 사용: 공격자가 오래된 타사 패키지를 사용하여 LLM을 공격할 수 있습니다.
민감한 정보 노출 (Sensitive Information Disclosure)
LLM 애플리케이션은 민감한 정보, 독점 알고리즘 또는 기밀 데이터를 실수로 노출시켜 무단 액세스, 지적 재산권 도 theft, 개인 정보 침해로 이어질 수 있습니다. 이러한 위험을 완화하기 위해 LLM 애플리케이션은 데이터 소독을 사용하고 적절한 사용 정책을 구현하며 LLM에서 반환되는 데이터 유형을 제한해야 합니다.
Example
- LLM 출력에서 민감한 데이터가 누출되는 공격: 공격자가 LLM의 출력에서 민감한 데이터를 유출시킬 수 있습니다.
안전하지 않은 플러그인 디자인 (Insecure Plugin Design)
플러그인은 불충분한 액세스 제어 및 부적절한 입력 유효성 검사로 인해 데이터 유출, 원격 코드 실행 및 권한 상승과 같은 유해한 결과를 초래하는 악의적인 요청에 취약할 수 있습니다. 개발자는 엄격한 매개변수화된 입력 및 안전한 액세스 제어 지침과 같은 강력한 보안 조치를 사용하여 악용을 방지해야 합니다.
Example
- 플러그인이 모든 매개변수를 단일 텍스트 필드 또는 원시 SQL 또는 프로그래밍 문으로 허용: 공격자가 플러그인을 사용하여 LLM을 공격할 수 있습니다.
과도한 대리인 (Excessive Agency)
LLM 기반 시스템의 과도한 대리인은 과도한 기능, 과도한 권한 또는 너무 많은 자율성으로 인해 발생하는 취약점입니다. 이를 방지하려면 개발자는 플러그인 기능, 권한 및 자율성을 절대적으로 필요한 수준으로 제한하고 사용자 승인을 추적하고 모든 작업에 대한 인적 승인을 요구하고 하위 시스템에 액세스 제어를 구현해야 합니다.
Example
- LLM 에이전트가 플러그인에서 불필요한 함수에 액세스: 공격자가 LLM 에이전트를 사용하여 LLM을 공격할 수 있습니다.
과도한 의존 (Overreliance)
LLM에 대한 과도한 의존은 잘못된 정보, 법적 문제 및 보안 취약점과 같은 심각한 결과를 초래할 수 있습니다. 이는 LLM이 적절한 감독이나 검증 없이 중요한 결정을 내리거나 콘텐츠를 생성할 때 발생합니다.
Example
- LLM이 잘못된 정보를 제공하는 공격: 공격자가 LLM을 신뢰하여 잘못된 정보를 얻을 수 있습니다.
모델 도난 (Model Theft)
LLM 모델 도난은 LLM 모델에 무단으로 액세스하고 유출하는 것을 말합니다. 이는 경제적 손실, 평판 손상 및 민감한 데이터에 대한 무단 액세스로 이어질 수 있습니다.
Example
- 공격자가 LLM 모델에 대한 무단 액세스: 공격자가 LLM 모델을 훔칠 수 있습니다.
'개발 > LLM' 카테고리의 다른 글
Zero-Shot(제로샷)/Few-Shot(퓨샷) Prompting (0) | 2023.09.18 |
---|---|
Colab 에서 streamlit app 실행하기 (0) | 2023.09.17 |
Streamlit을 이용한 Chatbot 만들기 (0) | 2023.09.10 |
시스템, 사용자, 어시스턴트 (0) | 2023.09.10 |
프롬프트 엔지니어링이란? (0) | 2023.09.05 |