[AI] AI 보안 · 작성: 2026-07-19 19:36:26 · 조회 2
OWASP는 웹 애플리케이션 Top 10으로 유명한 재단인데, LLM을 활용한 애플리케이션이 급증하면서 별도로 "OWASP Top 10 for LLM Applications"를 만들었다. 전통적인 웹 취약점과 겹치는 부분도 있지만, LLM이라는 컴포넌트 특유의 새로운 취약점 클래스가 다수 포함되어 있다. 이 글은 각 항목을 간단히 훑어보는 지도 역할을 한다.
사용자 입력이나 외부 콘텐츠로 모델의 지시를 조작하는 공격. 앞선 글에서 별도로 자세히 다뤘다.
모델이 학습 데이터에 포함된 개인정보, 시스템 프롬프트, 또는 이전 대화의 다른 사용자 정보를 응답에 노출하는 문제. 특히 파인튜닝에 실제 고객 데이터를 그대로 쓰면, 특정 질문 패턴으로 그 데이터가 그대로 다시 튀어나올 수 있다.
사전학습 모델, 파인튜닝 데이터셋, 관련 라이브러리(예: 취약한 버전의 추론 서버)의 신뢰성 문제. HuggingFace 같은 공개 모델 허브에서 받은 모델에 악성 코드가 심어져 있을 수 있다는 점이 웹 생태계의 오픈소스 패키지 공급망 공격과 본질적으로 같은 구조다.
학습/파인튜닝 데이터에 의도적으로 오염된 데이터를 섞어서, 모델이 특정 입력에 대해 공격자가 원하는 (잘못된) 응답을 하도록 유도하는 공격. 데이터를 공개적으로 수집하는 파이프라인(웹 크롤링 등)일수록 이 공격 표면이 넓어진다.
모델의 출력을 검증 없이 그대로 다른 시스템에 넘길 때 발생. 모델이 생성한 텍스트를 그대로 eval()하거나, HTML에 그대로 렌더링하거나(XSS로 이어짐), SQL 쿼리 일부로 사용하면(SQLi로 이어짐) 전통적인 인젝션 취약점이 LLM 계층을 거쳐서 재현된다. **"모델 출력도 신뢰할 수 없는 입력으로 취급해야 한다"**는 게 핵심.
LLM 에이전트에게 필요 이상으로 많은 도구/권한(파일 삭제, 결제, 이메일 발송 등)을 부여했을 때, Prompt Injection 같은 다른 취약점과 결합되면 피해 범위가 그만큼 커진다. 권한 최소화 원칙이 여기서도 그대로 적용된다.
시스템 프롬프트 자체가 그대로 노출되는 문제. 프롬프트에 API 키, 내부 정책, 민감한 비즈니스 로직을 직접 적어두면, 프롬프트가 유출되는 순간 그 정보도 같이 샌다. 시스템 프롬프트는 비밀을 지키는 보안 경계가 아니라는 전제로 설계해야 한다.
RAG(검색 증강 생성) 시스템에서 벡터 데이터베이스 접근 제어가 허술하면, 권한 없는 사용자가 다른 사용자/조직의 문서 임베딩을 검색해서 원본 콘텐츠를 유추해낼 수 있다. 멀티 테넌트 RAG 시스템에서 특히 중요한 항목.
모델이 그럴듯하지만 사실이 아닌 정보(할루시네이션)를 자신 있게 생성하는 문제. 보안 취약점이라기보다는 신뢰성 문제에 가깝지만, 의료·법률·금융처럼 잘못된 정보가 실질적 피해로 이어지는 도메인에서는 심각한 리스크로 다뤄진다.
입력 길이나 요청 빈도에 제한이 없으면, 악의적으로 긴 입력이나 반복적인 무거운 요청으로 서비스 비용을 폭증시키거나(Denial of Wallet) 서비스 자체를 마비시킬 수 있다. 토큰 단위로 과금되는 LLM API 특성상 전통적인 DoS와는 다른 "경제적 DoS" 측면도 있다.
전통적인 웹 취약점(인젝션, 접근 제어, 공급망)이 LLM이라는 새 컴포넌트를 통해 다시 나타나는 항목(LLM03, LLM05, LLM08)과, LLM이라는 기술 자체의 특성 때문에 새로 생긴 항목(LLM01, LLM02, LLM04, LLM09)이 섞여 있다는 걸 이해하면 각 항목이 왜 분류되어 있는지 감이 잡힌다. LLM 애플리케이션을 개발/점검할 때 이 10개 항목을 체크리스트 삼아 하나씩 짚어보는 걸 권한다.