본문 바로가기
일반IT/IT보안

OWASP LLM Top 10 2025 한눈에 보기 — 위험이 생기는 10개 경계와 대응 원칙

by gasbugs 2026. 8. 4.
반응형

LLM 보안을 모델 하나의 문제로만 보면 방어 지점을 놓치기 쉽습니다. 실제 서비스에서는 사용자 입력, 시스템 프롬프트, 학습 데이터, RAG, 모델 출력, 외부 도구와 인프라가 연결됩니다. 취약점은 이 구성 요소들이 만나는 경계에서 발생하고, 서로 결합되면서 피해가 커집니다.

 

OWASP GenAI Security Project가 공개한 Top 10 for LLM Applications 2025는 이 전체 수명주기를 열 가지 위험으로 정리합니다. 핵심은 순위를 외우는 것이 아니라 어떤 데이터가 어디에서 들어오고, 모델의 출력이 어느 권한으로 이어지는지를 추적하는 것입니다.

 

이 글은 열 가지 항목을 입력·학습·RAG·출력·도구·자원 경계에 배치한 뒤, 각 경계에 어떤 통제를 두어야 하는지 설명합니다. 표와 그림의 경로는 대표적인 발생 지점이지, 해당 위험이 오직 한 경계에서만 발생한다는 뜻은 아닙니다.

OWASP LLM Top 10 2025 전체 목록

ID 항목 (영문) 한국어 명칭 주요 발생 경계
LLM01 Prompt Injection 프롬프트 인젝션 User → System Prompt
LLM02 Sensitive Information Disclosure 민감 정보 노출 System/Training → User
LLM03 Supply Chain 공급망 Pretraining / 모델 다운로드
LLM04 Data and Model Poisoning 데이터·모델 오염 Training / RAG 데이터
LLM05 Improper Output Handling 출력 부적절 처리 LLM → Downstream
LLM06 Excessive Agency 과도한 권한 LLM → Tools/APIs
LLM07 System Prompt Leakage 시스템 프롬프트 누출 System Prompt → User
LLM08 Vector and Embedding Weaknesses 벡터·임베딩 약점 RAG / Vector DB
LLM09 Misinformation 잘못된 정보 Model → User
LLM10 Unbounded Consumption 자원 무한 소비 User → Resources

그림: OWASP LLM Top 10 위험과 주요 발생 경계 · 사용자가 제공한 다이어그램을 OWASP Top 10 for LLM Applications 2025와 대조해 사용

이 구조에서 눈여겨볼 점은 모델이 중앙에 있지만 보안 통제의 대부분은 모델 바깥에 있다는 사실입니다. 모델이 어떤 문장을 생성하더라도 데이터 접근 권한, 명령 실행 여부, 비용 한도와 최종 승인은 애플리케이션과 하위 시스템이 결정해야 합니다.

1. 입력과 지시 경계: LLM01, LLM07, LLM02

LLM01 Prompt Injection — 입력이 지시를 바꾼다

프롬프트 인젝션은 사용자 입력이나 외부 문서가 모델의 의도된 행동을 바꾸는 위험입니다. 사용자가 직접 “이전 지시를 무시하라”고 쓰는 직접 공격뿐 아니라, 웹페이지·이메일·PDF·이미지 속에 숨겨 둔 지시를 모델이 읽는 간접 공격도 포함합니다. RAG와 파인튜닝은 답변의 관련성을 높일 수 있지만, 이 위험을 완전히 제거하지는 못합니다.

 

따라서 입력 필터 하나를 방어의 전부로 보면 안 됩니다. 신뢰할 수 없는 콘텐츠를 시스템 지시와 구분하고, 모델이 공격에 영향을 받더라도 민감 데이터 조회나 외부 작업 실행으로 이어지지 않도록 권한 경계를 따로 세워야 합니다.

LLM07 System Prompt Leakage — 시스템 프롬프트는 비밀 저장소가 아니다

시스템 프롬프트 누출의 핵심은 프롬프트 문구 자체를 영원히 숨기는 데 있지 않습니다. OWASP는 시스템 프롬프트를 비밀이나 보안 통제로 간주해서는 안 된다고 설명합니다. API 키, 연결 문자열, 내부 계정, 권한 판정 규칙을 프롬프트에 넣었다면 진짜 문제는 “프롬프트가 유출됐다”가 아니라 비밀과 권한을 둘 곳이 아닌 곳에 넣었다는 것입니다.

 

비밀은 KMS나 시크릿 저장소에 두고, 인증·인가와 거래 한도 같은 결정은 코드와 정책 엔진에서 강제해야 합니다. 시스템 프롬프트에는 모델의 역할과 응답 형식을 안내하는 정보만 남기는 편이 안전합니다.

LLM02 Sensitive Information Disclosure — 답변에 나오기 전에 데이터 경로를 줄인다

민감 정보 노출은 개인정보, 금융·의료 정보, 영업 비밀, 자격증명, 학습 데이터나 애플리케이션 컨텍스트가 응답을 통해 드러나는 위험입니다. “민감 정보를 말하지 마라”는 시스템 프롬프트만으로는 충분하지 않습니다. 프롬프트 인젝션이나 모델 오류로 우회될 수 있기 때문입니다.

 

입력 단계에서는 민감 데이터를 마스킹하고, 검색 단계에서는 사용자 권한에 맞는 문서만 조회하며, 출력 단계에서는 DLP와 정책 검사를 다시 적용해야 합니다. 가장 강한 통제는 모델에게 애초에 불필요한 민감 정보를 주지 않는 것입니다.

2. 공급망과 학습 경계: LLM03, LLM04

LLM03 Supply Chain — 코드 의존성보다 넓은 AI 공급망

공급망 위험은 일반 라이브러리뿐 아니라 사전학습 모델, 데이터셋, LoRA 어댑터, 모델 저장소, 배포 플랫폼과 라이선스까지 포함합니다. 신뢰할 수 없는 모델 파일에는 편향이나 백도어가 숨어 있을 수 있고, 직렬화 형식이나 로딩 코드 자체가 악성 동작을 실행할 수도 있습니다.

 

모델과 데이터의 출처, 버전, 해시, 서명, 라이선스를 기록하고 검증해야 합니다. SBOM에 더해 AI/ML 구성 요소와 데이터 출처를 추적하는 BOM을 운영하고, 외부 모델은 실제 사용 시나리오에 맞춘 평가와 레드팀 검증을 거치는 것이 좋습니다.

LLM04 Data and Model Poisoning — 학습과 지식베이스의 무결성 문제

데이터·모델 오염은 사전학습, 파인튜닝, 임베딩 데이터나 모델 자체가 조작되어 편향, 백도어, 성능 저하 또는 유해한 출력을 만드는 위험입니다. 평소에는 정상처럼 보이다가 특정 문구나 조건에서만 동작하는 트리거형 백도어는 일반 품질 테스트만으로 발견하기 어렵습니다.

 

데이터 출처와 변환 이력을 보존하고, 변경 승인·버전 관리·이상치 탐지·행동 평가를 파이프라인에 넣어야 합니다. RAG 문서도 운영 중 계속 바뀌므로, 학습 데이터와 동일한 수준으로 출처와 무결성을 관리해야 합니다.

3. RAG와 벡터 저장소 경계: LLM08

벡터·임베딩 약점은 임베딩의 생성·저장·검색 과정에서 생기는 권한 오류, 테넌트 간 정보 누출, 오염된 문서 검색, 임베딩 역전과 지식 충돌을 다룹니다. RAG를 붙였다고 답변이 자동으로 안전해지는 것은 아닙니다. 오염된 문서를 더 정확하게 검색하거나, 다른 사용자의 문서를 컨텍스트에 넣는다면 오히려 공격 경로가 짧아집니다.

 

권한 검사는 검색한 뒤 모델에게 맡기는 것이 아니라 검색 쿼리 단계에서 적용해야 합니다. 사용자·조직·문서 등급으로 파티션을 나누고, 권한 필터가 적용된 결과만 모델에 전달해야 합니다. 문서 수집 파이프라인에는 출처 인증, 숨은 텍스트 검사, 악성 콘텐츠 검역과 변경 감사를 추가합니다.

4. 출력과 하위 시스템 경계: LLM05, LLM09

LLM05 Improper Output Handling — 모델 출력도 비신뢰 입력이다

출력 부적절 처리는 모델이 만든 문자열을 검증하지 않고 브라우저, 셸, SQL, 파일 경로, 이메일 템플릿이나 다른 API에 넘길 때 발생합니다. 모델 출력은 사용자 입력의 영향을 받으므로, 사실상 하위 시스템 입장에서는 또 하나의 비신뢰 입력입니다.

 

HTML에는 컨텍스트별 출력 인코딩과 CSP를 적용하고, SQL은 파라미터화된 쿼리를 사용하며, 셸 명령은 허용된 구조로 제한해야 합니다. 도구 호출은 자유 형식 텍스트를 실행하지 말고 엄격한 스키마 검증과 정책 검사를 통과한 구조화된 인수만 받아야 합니다.

LLM09 Misinformation — 그럴듯함과 사실성은 다르다

잘못된 정보는 모델이 틀리거나 근거 없는 내용을 신뢰할 만한 문장으로 생성하는 위험입니다. 환각뿐 아니라 편향된 학습 데이터, 낡거나 불완전한 정보, 사용자의 과신도 영향을 키웁니다. 공격자가 없어도 법률·의료·재무·보안 판단에서 잘못된 답을 자동 처리하면 피해가 발생할 수 있습니다.

 

신뢰할 수 있는 자료에 근거한 RAG, 출처 표시, 핵심 필드 자동 검증, 고위험 결과의 전문가 검토가 필요합니다. “AI가 생성했다”는 표시만으로 끝내지 말고, 어떤 용도까지 허용되는지와 검증 책임을 사용자 인터페이스에서 명확히 알려야 합니다.

5. 도구와 자원 경계: LLM06, LLM10

LLM06 Excessive Agency — 기능·권한·자율성을 각각 줄인다

과도한 권한은 모델이나 에이전트가 필요 이상의 기능, 권한 또는 자율성을 가져 예기치 않은 작업을 실행하는 위험입니다. 메일 요약 기능에 전송·삭제 권한까지 주거나, 조회 작업에 데이터베이스 수정 권한을 사용하거나, 고위험 작업을 사용자 승인 없이 수행하는 구성이 대표적입니다.

 

도구 목록과 기능을 최소화하고, 사용자별 OAuth 범위와 하위 시스템의 실제 권한으로 제한해야 합니다. 송금, 삭제, 외부 발송, 배포처럼 영향이 큰 작업은 실행 직전에 사람의 명시적 승인을 받습니다. 인가 결정은 모델의 문장이나 시스템 프롬프트가 아니라 하위 시스템에서 매 요청마다 다시 검사해야 합니다.

LLM10 Unbounded Consumption — 토큰 비용도 보안 경계다

자원 무한 소비는 과도한 입력과 반복 요청, 긴 에이전트 루프, 비용이 큰 도구 호출로 서비스 거부, 비용 고갈, 성능 저하 또는 모델 추출이 발생하는 위험입니다. 클라우드 추론의 종량제 구조에서는 서버가 멈추지 않아도 청구액이 급증하는 Denial of Wallet이 현실적인 영향이 됩니다.

 

사용자·조직·API 키별 요청 속도와 비용 한도를 두고, 입력·출력 토큰, 실행 시간, 도구 호출 횟수, 에이전트 최대 단계와 큐 길이를 제한해야 합니다. 비용과 지연 이상 징후를 모니터링하고, 한도를 넘으면 전체 장애 대신 기능을 줄여 서비스하는 graceful degradation도 준비합니다.

위험은 하나씩 오지 않는다

실제 사고에서는 여러 항목이 연쇄적으로 나타납니다. 예를 들어 공격자가 RAG 문서에 숨은 지시를 넣으면 LLM04 데이터 오염과 LLM08 벡터 저장소 약점이 출발점이 됩니다. 검색된 지시가 모델 행동을 바꾸면 LLM01 프롬프트 인젝션으로 이어지고, 검증되지 않은 출력이 도구에 전달되면 LLM05가, 도구가 과도한 권한으로 실행되면 LLM06가 피해를 확대합니다. 그 결과가 민감 데이터 유출이라면 LLM02까지 연결됩니다.

 

그래서 “프롬프트 인젝션 탐지율” 하나만 높이는 방식으로는 전체 위험을 설명할 수 없습니다. 공격이 한 계층을 통과해도 다음 계층에서 멈추도록 독립된 통제를 겹쳐야 합니다.

여섯 경계에 통제를 배치하는 방법

그림: OWASP LLM Top 10을 여섯 방어 경계로 재구성 · OWASP 2025 LLM Top 10의 예방·완화 항목을 바탕으로 재구성

경계 우선 통제 주로 줄이는 위험
공급망 공급자 검증, 모델·데이터 해시와 서명, BOM, 라이선스 기록 LLM03, LLM04
학습·수집 데이터 출처·버전 관리, 이상치 탐지, 변경 승인, 행동 평가 LLM04, LLM02
입력·지시 비신뢰 콘텐츠 분리, 입력 검증, 민감정보 마스킹, 공격 시뮬레이션 LLM01, LLM07, LLM02
RAG·메모리 검색 전 권한 필터, 테넌트 분리, 문서 검역, 검색 로그 LLM08, LLM04, LLM02
출력·도구 스키마 검증, 컨텍스트별 인코딩, 최소 권한, 사용자 승인 LLM05, LLM06, LLM09
자원·운영 rate limit, 토큰·비용·단계 한도, timeout, 이상 탐지 LLM10, LLM06

실무에서는 먼저 데이터 흐름도를 그리고 각 화살표에 신뢰 수준, 데이터 등급, 호출 주체, 인증 방식, 최대 비용, 실패 시 기본 동작을 적어보는 것이 좋습니다. 이 정보가 없는 연결은 대개 보안 요구사항도 빠져 있습니다.

자주 혼동하는 항목 네 쌍

LLM01과 LLM07

LLM01은 입력이 모델의 행동을 바꾸는 공격 방식이고, LLM07은 시스템 프롬프트 내용이 사용자에게 드러나는 위험입니다. 시스템 프롬프트 추출이 프롬프트 인젝션으로 일어날 수 있지만, 두 항목의 초점은 다릅니다.

LLM05와 LLM06

LLM05는 모델 출력에 대한 검증·인코딩·처리가 부족한 문제입니다. LLM06은 모델이 사용할 수 있는 기능, 권한과 자율성이 과도한 문제입니다. 출력 검증을 해도 삭제 도구에 관리자 권한을 주면 LLM06은 남습니다.

LLM03과 LLM04

LLM03은 외부 공급자와 모델·라이브러리·데이터셋의 출처와 의존성을 보는 공급망 관점입니다. LLM04는 데이터나 모델이 실제로 조작되어 무결성이 훼손되는 현상에 초점을 둡니다.

LLM08과 LLM09

LLM08은 RAG와 벡터 저장소의 접근 제어, 검색, 임베딩과 데이터 무결성 문제입니다. LLM09는 최종 답변의 사실성과 사용자 과신 문제입니다. 검색 권한이 정확해도 모델이 근거를 잘못 해석하면 LLM09가 발생할 수 있습니다.

배포 전 최소 점검표

  • 시스템 프롬프트에 API 키, 자격증명, 실제 권한 규칙이 들어 있지 않은가
  • 사용자 입력과 외부 문서가 시스템 지시와 명확히 분리되는가
  • RAG 검색 전에 사용자·테넌트·문서 등급 권한이 적용되는가
  • 모델·LoRA·데이터셋·라이브러리의 출처, 해시, 버전과 라이선스를 추적하는가
  • 모델 출력이 HTML, SQL, 셸, 파일 경로와 도구 스키마에 맞게 다시 검증되는가
  • 도구는 필요한 기능과 권한만 가지며 고위험 작업에 사람의 승인이 필요한가
  • 중요 답변은 근거 링크, 자동 검증 또는 전문가 검토를 거치는가
  • 요청 속도, 토큰, 비용, 실행 시간, 에이전트 단계와 도구 호출 횟수에 상한이 있는가
  • 공격 입력, 오염 문서, 잘못된 검색, 도구 실패와 비용 폭증을 로그와 경보로 관측할 수 있는가

마무리

OWASP LLM Top 10 2025를 관통하는 원칙은 단순합니다. 모델을 신뢰 경계로 사용하지 말고, 모델의 입력과 출력을 모두 비신뢰 데이터로 다루며, 실제 권한과 비용은 모델 바깥에서 통제해야 합니다.

 

열 개 항목을 따로 외우기보다 공급망 → 학습 → 입력·RAG → 모델 → 출력 → 도구·자원으로 이어지는 한 장의 데이터 흐름에 배치하면 누락된 통제가 더 빨리 보입니다. 프롬프트 방어, 데이터 무결성, 권한 기반 검색, 출력 검증, 최소 권한과 자원 제한이 함께 작동할 때 비로소 LLM 애플리케이션 전체의 위험을 줄일 수 있습니다.

공식 참고 자료

 

반응형