본문으로 건너뛰기

OWASP LLM Top 10 상세 (실무)

OWASP Top 10 for LLM Applications(2025) 는 LLM 애플리케이션의 대표 보안 위험 10개를 정리한 사실상의 표준 체크리스트다. 03. 위협 모델이 요약이라면, 이 문서는 항목별 발생 지점·점검·대응을 실무 관점에서 다룬다. (공격 수행이 아니라 평가·방어 관점)

개념도 — LLM 앱 파이프라인과 위협 위치​

각 항목이 파이프라인의 어느 지점에서 발생하는지로 보면 통제 지점이 잡힌다.

[사용자 입력]
│ LLM01 프롬프트 인젝션(직접) · LLM10 무제한 소비
▼
[외부 콘텐츠·RAG] ── LLM01 간접 인젝션 · LLM08 벡터·임베딩 · LLM04 포이즈닝
▼
[모델] ── LLM03 공급망 · LLM07 시스템 프롬프트 유출
▼
[출력 처리] ── LLM02 민감정보 노출 · LLM05 부적절한 출력 처리 · LLM09 잘못된 정보
▼
[도구·에이전트] ── LLM06 과도한 권한
▼
[다운스트림 시스템 / 인프라]

항목별 상세​

LLM01 · 프롬프트 인젝션 (Prompt Injection)​

  • 개념: 입력이 모델의 의도된 지시를 덮어씀. 직접(사용자가 조작)과 간접(외부 문서·웹·이메일에 숨긴 지시를 모델이 읽고 실행)으로 나뉜다.
  • 발생 지점: 사용자 입력, 그리고 RAG·브라우징·에이전트가 가져오는 외부 콘텐츠.
  • 점검: 외부 콘텐츠를 처리하는가? 시스템 지시와 사용자·외부 데이터의 신뢰 경계가 분리돼 있는가? 간접 인젝션에 모델이 넘어가는가?
  • 대응: 신뢰 경계 분리, 외부 콘텐츠 격리·정제, 출력 검증, 위험 행동 전 사람 확인, 최소 권한, 가드레일·콘텐츠 필터. 완전 차단은 불가하므로 다층 방어가 전제다.

LLM02 · 민감정보 노출 (Sensitive Information Disclosure)​

  • 개념: 개인·기밀·규제 데이터가 출력에 노출.
  • 발생 지점: 학습 데이터 암기, 시스템 프롬프트·컨텍스트에 포함된 민감정보, 권한 밖 문서를 반환하는 RAG.
  • 점검: 입력 가능한 데이터 등급이 정의돼 있는가? DLP·마스킹이 있는가? RAG가 문서 권한을 반영하는가? 로그에 민감정보가 남는가?
  • 대응: 입력 데이터 분류·최소화, DLP, 출력 필터링, RAG 접근통제, 학습 opt-out, 로그 마스킹.

LLM03 · 공급망 (Supply Chain)​

  • 개념: 외부 모델·데이터셋·라이브러리·플러그인의 취약·변조가 앱 보안을 훼손.
  • 발생 지점: 모델 허브에서 받은 서드파티 모델, 사전학습 데이터, 플러그인, 종속 패키지.
  • 점검: 모델·플러그인의 출처·서명·라이선스를 검증하는가? SBOM이 있는가? 모델 아티팩트 무결성을 확인하는가?
  • 대응: 신뢰 출처만 사용, 모델·아티팩트 서명·검증, 의존성 스캔(SCA), 플러그인 심사, 버전 고정.

LLM04 · 데이터·모델 포이즈닝 (Data and Model Poisoning)​

  • 개념: 학습·파인튜닝·RAG 데이터 변조로 동작을 왜곡하거나 백도어를 심음.
  • 발생 지점: 공개 데이터 수집, 파인튜닝 데이터, RAG 인덱싱 소스.
  • 점검: 데이터 출처의 신뢰성을 검증하는가? 인덱싱 전 정제·이상치 탐지가 있는가? 재현·버전관리가 되는가?
  • 대응: 데이터 출처 관리·검증, 정제·이상 탐지, RAG 소스 신뢰 경계, 데이터·모델 버전관리.

LLM05 · 부적절한 출력 처리 (Improper Output Handling)​

  • 개념: 검증 없이 출력을 다른 시스템에 전달해 XSS·SQLi·명령 실행 등 다운스트림 공격을 유발.
  • 발생 지점: LLM 출력을 HTML 렌더링, DB 쿼리, 쉘·코드 실행에 그대로 투입.
  • 점검: 출력을 다운스트림에 넘길 때 검증·인코딩을 거치는가? 코드·쿼리 실행 경로가 있는가?
  • 대응: 출력을 신뢰하지 않음, 컨텍스트별 인코딩·파라미터화, 샌드박스, 허용목록. (웹 보안의 출력 처리 원칙과 동일 → XSS, SQLi)

LLM06 · 과도한 권한 (Excessive Agency)​

  • 개념: 에이전트가 과도한 자율성·권한·도구 접근을 가져 유해 행동이 가능.
  • 발생 지점: 파일 삭제·메일 발송·결제·DB 쓰기 권한을 가진 에이전트.
  • 점검: 도구 권한이 최소화돼 있는가? 위험 행동에 사람 승인이 있는가? 행동 범위·한도가 정의돼 있는가?
  • 대응: 최소 권한, 필요한 도구만 노출, human-in-the-loop, 감사 로깅, 행동 한도. (에이전트 개념 → 10. 에이전트·MCP)

LLM07 · 시스템 프롬프트 유출 (System Prompt Leakage)​

  • 개념: 시스템 프롬프트·내부 규칙·설정이 탈취됨.
  • 발생 지점: 프롬프트에 비밀·크리덴셜·내부 규칙을 담아 둔 경우.
  • 점검: 시스템 프롬프트에 비밀·크리덴셜이 들어 있는가? 유출 시 영향 범위는?
  • 대응: 프롬프트에 비밀 금지(서버측 통제로 이전), 민감 로직 분리, 노출 최소화. 프롬프트는 공개될 수 있다고 전제한다.

LLM08 · 벡터·임베딩 취약점 (Vector and Embedding Weaknesses)​

  • 개념: RAG가 오염·무권한·오래된 콘텐츠를 반환하거나 테넌트 간 데이터가 유출.
  • 발생 지점: 멀티테넌트 벡터 DB, 권한 미반영 인덱스, 포이즌된 임베딩.
  • 점검: 문서 권한을 검색 결과에 반영하는가? 테넌트 격리가 되는가? 인덱스 소스를 신뢰할 수 있는가?
  • 대응: 접근통제를 반영한 검색, 테넌트 격리, 소스 검증, 인덱스 무결성 관리. (RAG 내부 → RAG 내부 동작 심화)

LLM09 · 잘못된 정보 (Misinformation)​

  • 개념: 거짓·오해 소지 정보를 사용자가 신뢰·실행(환각 포함).
  • 발생 지점: 근거 없는 생성, 과신, 검증 없는 자동 의사결정.
  • 점검: 근거(RAG)·출처를 제시하는가? 사람 검증 절차가 있는가? 중요 결정을 자동화하는가?
  • 대응: RAG 근거 제공, 출처 표시, 사람 검증, 신뢰도 한계 고지, 중요 결정에 사람 개입. (환각 → 05. 환각과 한계)

LLM10 · 무제한 소비 (Unbounded Consumption)​

  • 개념: 토큰·API·연산 과다 사용으로 비용 급증·성능 저하·서비스 거부(DoS).
  • 발생 지점: 무제한 요청, 대형 입력, 재귀적 에이전트 루프.
  • 점검: 레이트 리밋이 있는가? 토큰·비용 한도·알람이 있는가? 입력 크기를 제한하는가? 루프를 차단하는가?
  • 대응: 레이트·쿼터, 입력 크기 제한, 비용 알람, 타임아웃·루프 가드, 캐싱.

실무 요약 — 대응 핵심​

코드1순위 대응
LLM01신뢰 경계 분리 + 다층 방어(입력 격리·출력 검증·사람 확인)
LLM02입력 데이터 분류 + DLP + RAG 접근통제
LLM03출처 검증 + 서명 + 의존성 스캔
LLM04데이터 출처 관리 + 정제·이상 탐지
LLM05출력 불신 + 컨텍스트별 인코딩·파라미터화
LLM06최소 권한 + human-in-the-loop
LLM07프롬프트에 비밀 금지(서버측 통제)
LLM08권한 반영 검색 + 테넌트 격리
LLM09RAG 근거 + 출처 + 사람 검증
LLM10레이트·쿼터 + 비용 알람 + 루프 가드

평가 연계​

이 10개 항목은 04. 평가 방법론의 "모델·프롬프트 / 운영" 영역 점검 항목과, 06. 체크리스트의 M·O 항목으로 연결된다.