LLM(GenAI, 생성형AI) Application 보안을 위한 OWASP Top10 for LLM Application 요약설명입니다.

OWASP Top 10 for LLM Application

* LLM01. Prompt Injection (프롬프트 주입): 악의적인 사용자가 LLM(GenAI)을 조작하여 시스템 프롬프트를 재정의하거나 외부 입력을 통해 LLM(GenAI)이 의도치 않은 작업을 수행하도록 유도하여 데이터 유출, 사회공학공격 등이 발생할 수 있는 위험이다.
* LLM02. Insecure Output Handling (안전하지 않은 출력처리): LLM(GenAI)이 생성한 출력이 적절히 검증되지 않아 XSS, CSRF, SSRF 등의 취약점이 발생할 수 있는 위험이다.
* LLM 03. Training Data Poisoning (학습 데이터 포이즈닝): 악의적인 데이터로 LLM(GenAI)을 학습시키거나 세부 조정을 통해 보안, 효과성 또는 윤리적 행동을 저해하는 취약점이 발생할 수 있는 위험이다.
* LLM 04. Model Denial of Service (모델 서비스 거부): 리소스가 많이 소모되는 작업을 LLM(GenAI)에 반복적으로 수행하도록 공격하여 서비스 품질을 저하시킬 수 있는 위험이다.
* LLM 05. Supply Chain Vulnerabilities (공급망 취약점): 외부에서 제공받은 학습 데이터나 플러그인 등의 취약점으로 인해 보안 문제가 발생할 수 있는 위험이다.
* LLM 06. Sensitive Information Disclosure (민감한 정보 노출): LLM(GenAI)이 응답 중에 민감한 정보를 유출할 수 있는 취약점이 존재할 수 있는 위험이다.
* LLM 07. Insecure Plugin Design (안전하지 않은 플러그인 디자인): LLM(GenAI) 플러그인(GenAI Platform-to-Plugin 또는 Plugin-to-Plugin)이 불안전한 입력을 받아들여 원격 코드 실행 등의 결과를 초래할 수 있는 위험이다.
* LLM 08. Excessive Agency (과도한 대행):LLM(GenAI)기반 시스템이 지나치게 많은 기능이나 권한을 부여받아 예기치 않은 행동을 할 수 있는 위험이다.
* LLM 09. Overreliance (과도한 의존): LLM(GenAI)에 대한 지나친 의존으로 인해 잘못된 정보, 법적 문제 및 보안 취약점이 발생할 수 있는 위험이다.
* LLM 10. Model Theft (모델 도난):악의적인 사용자가 LLM(GenAI) 모델을 무단으로 액세스, 복사 또는 유출하여 경제적 손실을 초래할 수 있는 위험이다.

LLM Application Data Flow Diagram

* 아래 다이어그램은 가상의 대규모 언어 모델 애플리케이션에 대한 하이레벨 아키텍처로써, LLM 응용 프로그램에 대한 OWASP 상위 10개 항목이 응용 프로그램 흐름과 교차하는 방식을 보여주는 위험 영역이 강조 표시되어 있다.
* 이 다이어그램은 LLM 보안위험이 전체 애플리케이션 생태계에 미치는 영향을 이해하는 데 도움이 되는 시각적 가이드이다.
LLM Application Data Flow Diagram

LLM 01. Prompt Injection (프롬프트 주입)

Description
* 프롬프트 인젝션 취약점은 공격자가 조작된 입력을 통해 LLM을 조작하여 LLM이 공격자의 의도를 무의식적으로 실행하도록 하는 경우 발생한다. 이는 시스템 프롬프트를 직접 “jailbreaking”(또는 “DAN”)하거나 외부 입력을 조작하여 간접적으로 수행될 수 있으며, 데이터 유출, 사회 공학 공격 등의 문제를 일으킬 수 있다.
* 성공적인 프롬프트 인젝션 공격의 결과는 매우 다양하다. 민감한 정보를 얻어내거나 정상적인 작동을 가장하여 중요한 의사 결정을 영향을 미치는 것까지 포함된다.
* 고수준의 공격에서는 LLM을 조작하여 악의적인 인격을 모방하거나 사용자의 설정에서 플러그인과 상호작용할 수 있다.
* 이로 인해 민감한 데이터 유출, 무단 플러그인 사용, 사회 공학 등이 발생할 수 있다.
* 이러한 경우, 손상된 LLM은 공격자의 대리인으로 작동하여 보안장치를 우회하고 사용자가 침입사실을 인지하지 못하게 할수 있다.
Common Examples of Vulnerability
* Direct Prompt Injection: “jailbreaking”(또는 “DAN”)이라고도 불리며, 악의적인 사용자가 시스템 프롬프트를 덮어쓰거나 드러내어 LLM을 조작한다. 이를 통해 LLM이 접근할 수 있는 불안전한 기능과 데이터 저장소와 상호작용하여 백엔드 시스템을 악용할 수 있다.
* Indirect Prompt Injection: LLM이 외부 소스에서 입력을 받아들이는 경우 발생한다. 공격자는 웹사이트나 파일과 같은 외부 콘텐츠에 프롬프트 인젝션을 삽입하여 대화 맥락을 낚아챈다. 이를 통해 LLM이 “혼란스러운 대리인”으로 작동하여 사용자나 추가 시스템을 조작할 수 있다. 간접 프롬프트 인젝션은 사람이 읽을 수 있거나 보이지 않아도, LLM이 텍스트를 구문 분석할 수 있으면 가능하다.
* 악의적인 사용자가 LLM에 직접 프롬프트 인젝션을 수행하여, 애플리케이션 생성자의 시스템 프롬프트를 무시하고 대신 비공개 정보, 위험한 정보 또는 바람직하지 않은 정보를 반환하도록 지시한다.
* 사용자가 간접 프롬프트 인젝션이 포함된 웹페이지를 요약하도록 LLM을 사용한다. 이로 인해 LLM이 사용자로부터 민감한 정보를 유도하고 JavaScript나 Markdown을 통해 이를 유출한다.
* 악의적인 사용자가 간접 프롬프트 인젝션을 포함한 이력서를 업로드한다. 문서에는 이 문서가 훌륭하다고 LLM이 사용자에게 알리도록 지시하는 프롬프트 인젝션이 포함되어 있다. 내부 사용자가 이 문서를 요약하도록 LLM을 실행하면, LLM의 출력은 이 문서가 훌륭하다는 정보를 반환한다.
* 사용자가 전자 상거래 사이트에 연결된 플러그인을 활성화한다. 방문한 웹사이트에 포함된 악성 명령어가 이 플러그인을 악용하여 무단 구매를 초래한다.
* 방문한 웹사이트에 포함된 악성 명령어와 콘텐츠가 다른 플러그인을 악용하여 사용자를 속인다.

LLM 02. Insecure Output Handling (안전하지 않은 출력처리)

Description
* 안전하지 않은 출력 처리는 LLM이 생성한 출력을 다른 구성 요소나 시스템으로 전달하기 전에 충분히 검증, 정리, 처리하지 않는 경우를 의미한다.
* LLM이 생성한 콘텐츠는 프롬프트 입력에 의해 제어될 수 있으므로, 이는 사용자가 추가 기능에 간접적으로 접근할 수 있도록 하는 것과 비슷하다.
* 불안전한 출력 처리는 LLM의 출력을 다른 시스템으로 전달하기 전에 다루는 문제로, LLM의 정확성과 적절성에 대한 전반적인 의존성 문제와는 다르다.
Common Examples of Vulnerability
* 애플리케이션이 LLM에 사용자 입력을 받아 데이터베이스를 쿼리하도록 요청하는 경우, LLM의 출력을 충분히 검토하지 않으면 SQL 인젝션 등의 공격이 발생할 수 있다.
* LLM이 생성한 JavaScript나 Markdown을 브라우저에서 실행하는 경우, 출력 검증이 부족하면 XSS(교차 사이트 스크립팅) 공격이 발생할 수 있다.
* LLM이 사용자 입력을 받아 시스템 셸에서 명령어를 실행하는 경우, LLM의 출력을 충분히 검토하지 않으면 원격 코드 실행이 발생할 수 있다.

LLM 03. Training Data Poisoning (학습 데이터 포이즈닝)

Description
* 학습 데이터는 모든 머신 러닝 접근 방식의 시작점이다. LLM이 높은 능력을 가지려면(예: 언어 및 세계 지식), 이 텍스트는 다양한 도메인, 장르 및 언어를 포괄해야 한다. LLM은 학습 데이터에서 학습한 패턴을 기반으로 출력을 생성하는 심층 신경망을 사용한다.
* 학습 데이터 포이즈닝은 Pre Training Data 또는 Fine Tuning이나 Embedding 과정에 사용된 데이터를 조작하여 취약점, 백도어 또는 편향을 발생시켜 모델의 보안, 효과성 또는 윤리적 행동을 저해의 원인이 될수 있다.
* 포이즈닝된 정보는 사용자에게 표출되거나 성능 저하, 다운스트림 소프트웨어 악용, 평판 손상 등의 위험을 초래할 수 있다. 사용자가 문제 있는 AI 출력을 신뢰하지 않더라도, 모델 기능이 저하되고 브랜드 평판에 손상을 입을 수 있다.
Common Examples of Vulnerability
* 악의적인 행위자나 경쟁자가 모델의 사전 학습, 세부 조정 데이터 또는 임베딩을 목표로 악의적이거나 부정확한 문서를 생성한다.
* 피해 모델이 거짓 정보를 학습하여 생성 AI 프롬프트의 출력에 반영된다.

LLM 04. Model Denial of Service (모델 서비스 거부)

Description
* 모델 서비스 거부(DoS)는 공격자가 LLM을 통해 매우 많은 리소스를 소모하는 방식으로 상호작용하여, 다른 사용자에게 서비스 품질 저하를 일으키거나 높은 리소스 비용을 발생시키는 경우를 말한다.
* 또한, LLM의 컨텍스트 윈도우를 방해하거나 조작하는 공격도 중요한 보안 문제로 대두되고 있다.
* 이는 LLM이 다양한 애플리케이션에서 많이 사용되고, 리소스를 많이 소모하며, 사용자 입력이 예측 불가능하고, 개발자들이 이러한 취약점에 대해 잘 알지 못하는 상황에서 더욱 중요해진다.
* LLM에서 컨텍스트 윈도우는 모델이 처리할 수 있는 최대 텍스트 길이를 나타내며, 입력과 출력을 모두 포함한다. 이는 LLM의 아키텍처에 따라 달라질 수 있다.
Common Examples of Vulnerability
* 연속적인 입력 오버플로우: 공격자가 LLM에 컨텍스트 윈도우를 초과하는 입력을 지속적으로 보내어 모델이 과도한 컴퓨팅 자원을 사용하도록 한다.
* 반복적인 긴 입력: 공격자가 LLM에 반복적으로 긴 입력을 보내어 각 입력이 컨텍스트 윈도우를 초과하게 한다.
* 재귀적 컨텍스트 확장: 공격자가 입력을 구성하여 LLM이 재귀적으로 컨텍스트 윈도우를 확장하고 처리하도록 하여 과도한 컴퓨팅 자원을 소모하게 한다.
* 가변 길이 입력 홍수: 공격자가 컨텍스트 윈도우의 한계에 도달할 때까지 변동 길이 입력을 대량으로 보내어 LLM을 압도한다. 이는 가변 길이 입력 처리의 비효율성을 악용하여 모델을 과부하시키고 응답 불가 상태로 만들 수 있다.

LLM 05. Supply Chain Vulnerabilities (공급망 취약점)

Description
* LLM의 공급망은 학습 데이터, 머신 러닝 모델, 배포 플랫폼의 무결성에 영향을 미칠 수 있는 취약점이 존재할 수 있다. 이러한 취약점은 편향된 결과, 보안 침해 또는 시스템 전체의 실패를 초래할 수 있다. 전통적으로 취약점은 소프트웨어 구성 요소에 집중되었지만, 머신 러닝에서는 제3자가 제공하는 사전 학습된 모델과 학습 데이터도 포이즈닝 및 변조 공격에 취약하다.
* 마지막으로, LLM 플러그인 확장은 자체적인 취약점을 가져올 수 있다. 이러한 문제는 LLM07 - 안전하지않은 플러그인 설계에서 자세히 다룬다.
Common Examples of Vulnerability
* 전통적인 제3자 패키지 취약점: 오래되거나 더 이상 지원되지 않는 구성 요소 사용
* 취약한 사전 학습 모델 사용: 세부 조정에 사용된 모델이 취약한 경우
* 중독된 군중 소싱 데이터 사용: 학습에 사용된 데이터가 중독된 경우
* 더 이상 유지 관리되지 않는 모델 사용: 더 이상 지원되지 않는 모델 사용으로 인한 보안 문제
* 명확하지 않은 약관 및 데이터 개인 정보 보호 정책: 모델 운영자의 약관이 불명확하여 애플리케이션의 민감한 데이터가 모델 학습에 사용되어 이후 민감한 정보가 노출될 위험이 있음. 이는 모델 공급자가 저작권이 있는 자료를 사용하는 위험에도 적용된다.

LLM 06. Sensitive Information Disclosure (민감한 정보 노출)

Description
* LLM 애플리케이션은 출력 중에 민감한 정보, 특정 알고리즘 또는 기타 기밀 세부 정보를 노출할 수 있다. 이는 민감한 데이터의 무단 접근, 지적 재산권 침해, 프라이버시 위반 및 기타 보안 침해를 초래할 수 있다. LLM 애플리케이션 사용자는 LLM과 안전하게 상호작용하고 자신도 모르게 입력한 민감한 데이터가 이후 출력에서 노출될 수 있는 위험을 인지해야 한다.
* 이러한 위험을 완화하기 위해, LLM 애플리케이션은 사용자의 데이터가 학습 모델 데이터에 포함되지 않도록 충분한 데이터 정리를 해야 한다. LLM 애플리케이션 소유자는 사용자가 자신의 데이터가 어떻게 처리되는지 알 수 있도록 적절한 이용 약관을 제공하고, 사용자가 자신의 데이터가 학습 모델에 포함되지 않도록 선택할 수 있는 옵션을 제공해야 한다.
* 사용자와 LLM 애플리케이션 간의 상호작용은 양방향 신뢰 경계를 형성한다. 클라이언트에서 LLM으로 입력하는 데이터나 LLM에서 클라이언트로 출력하는 데이터를 본질적으로 신뢰할 수 없기 때문에, 이 취약점은 위협 모델링, 인프라 보안, 적절한 샌드박싱 등의 전제 조건이 범위 밖에 있다는 가정을 포함한다. 시스템 프롬프트 내에서 LLM이 반환할 데이터 유형에 대한 제한을 추가하면 민감 정보 유출을 어느 정도 완화할 수 있지만, LLM의 예측 불가능한 특성 때문에 이러한 제한이 항상 준수되지는 않으며 프롬프트 인젝션이나 기타 벡터를 통해 우회될 수 있다.
Common Examples of Vulnerability
* LLM의 응답에서 민감한 정보를 완전히 또는 적절하게 필터링하지 않음
* 학습 과정에서 민감한 데이터가 과적합되거나 기억됨
* LLM의 잘못된 해석, 데이터 정리 방법의 부재 또는 오류로 인한 기밀 정보가 의도치 않게 노출됨

LLM 07. Insecure Plugin Design (안전하지 않은 플러그인 디자인)

Description
* 안전하지 않은 플러그인 설계는 LLM이 잘못된 또는 악의적인 플러그인과 상호작용할 때 발생하는 보안 문제를 말한다. 이는 플러그인이 LLM 애플리케이션의 공격 표면을 확대하고, 민감한 데이터에 무단 접근하거나 악의적인 작업을 수행할 수 있게 한다. 플러그인은 추가 기능을 제공하지만, 적절하게 검토되지 않거나 안전하지 않으면 전체 시스템의 보안을 위협할 수 있다.
* 안전하지 않은 플러그인 설계는 LLM Application-to-Plugin, Plugin-to-Plugin으로 구분하여 보안이 고려되어야 한다.
Common Examples of Vulnerability
* 무단 데이터 접근: 플러그인이 사용자의 허가 없이 민감한 데이터를 수집하거나 외부로 전송하는 경우
* 명령어 주입: 플러그인이 잘못된 입력 검증으로 인해 시스템 명령어를 실행하게 하는 경우
* 권한 상승: 플러그인이 의도하지 않은 권한으로 동작하여 시스템이나 데이터를 손상시키는 경우
* 불안전한 통신: 플러그인과 서버 간의 데이터 통신이 암호화되지 않아 데이터가 도청되거나 변조되는 경우
* 불안전한 업데이트: 플러그인이 업데이트를 받을 때 검증되지 않은 소스에서 다운로드하여 악성 코드가 포함될 수 있는 경우

LLM 08. Excessive Agency (과도한 대행)

Description
* 과도한 대행은 LLM이 지나치게 많은 권한이나 자율성을 가질 때 발생하는 문제를 말한다. 이는 LLM이 사용자의 의도나 시스템의 안전을 넘어선 행동을 할 수 있게 하여 보안 위험을 초래할 수 있다.
* 과도한 대행은 LLM이 시스템 명령어를 실행하거나 외부 시스템과 상호작용할 때 특히 문제가 된다.
Common Examples of Vulnerability
* 명령어 실행: LLM이 직접 시스템 명령어를 실행할 수 있어 악의적인 명령어가 실행되는 경우
* 외부 시스템 상호작용: LLM이 외부 API나 서비스와 상호작용하여 의도치 않은 결과를 초래하는 경우
* 데이터 변경: LLM이 데이터베이스나 파일 시스템의 데이터를 직접 변경할 수 있어 데이터 손상이나 유출이 발생하는 경우
* 자동화된 의사결정: LLM이 중요한 의사결정을 자동으로 내리게 하여, 잘못된 판단으로 인해 시스템이나 비즈니스에 손해를 끼치는 경우

LLM 09. Overreliance (과도한 의존)

Description
* 과도한 의존은 LLM에 지나치게 의존하여 발생하는 문제를 말한다. 이는 LLM의 출력에 대한 신뢰도가 높아져, 사용자나 시스템이 LLM의 판단이나 결과를 무비판적으로 받아들일 때 발생한다.
* 이러한 과도한 의존은 잘못된 정보, 법적 문제, 보안 취약점 등을 초래할 수 있다.
Common Examples of Vulnerability
* 잘못된 정보: LLM이 생성한 정보가 부정확하거나 잘못된 경우에도 사용자가 이를 사실로 받아들여 의사결정에 사용한다.
* 법적 문제: LLM이 생성한 콘텐츠가 저작권을 침해하거나 법적 문제를 일으킬 수 있는 경우
* 보안 취약점: LLM의 출력을 검증 없이 시스템에 적용하여 보안 취약점이 발생하는 경우
* 비윤리적 사용: LLM의 출력이 비윤리적이거나 편향된 내용을 포함하여 사회적 문제를 일으킬 수 있는 경우

LLM 10. Model Theft (모델 도난)

Description
* 모델 도난은 공격자가 LLM의 기밀 정보나 지적 재산을 무단으로 액세스하거나 복사하는 행위를 말한다.
* 이는 모델의 소유자에게 경제적 손실, 경쟁력 약화, 보안 침해 등을 초래할 수 있다. 모델 절도는 다양한 방법으로 이루어질 수 있으며, 적절한 보안 조치가 없을 경우 발생할 가능성이 높다.
* 공격자가 공격용 입력으로 API에 쿼리를 하고 충분한 출력을 수집해 Shadow Model(본래 모델의 구조나 데이터를 모방하여 비슷하게 작동하는 모델)을 생성할수 있다. 공격자는 원본 모델에서 데이터를 추출하기 위해, a)모델입력과 출력관찰, b)Shadown Model을 위한 데이터수집 및 훈련, c) shadow model로 원본 모델의 행동예측 단계로 공격을 진행할 수 있다.
Common Examples of Vulnerability
* 모델 API 도용: 공격자가 모델 API 키를 탈취하여 모델을 무단으로 사용하는 경우
* 모델 복제: 공격자가 모델의 출력을 이용해 유사한 모델을 학습시켜 복제하는 경우
* 모델 파일 유출: 내부자의 실수나 악의적인 행위로 인해 모델 파일이 외부로 유출되는 경우
* 클라우드 인프라 침해: 클라우드 인프라의 보안 취약점을 악용하여 모델 파일에 접근하는 경우