AI-06

📤 불안전한 출력 처리

AI/LLM 보안 · 출력 처리

위험도: 상
💡 쉽게 말하면
불안전한 출력 처리는 AI가 써준 계약서를 확인 없이 도장 찍어 보내는 일과 같습니다. 출력 속에 숨은 악성 코드(스크립트)까지 그대로 전송됩니다.

🎯 직접 해보기 — 공격을 실행해 보세요

아래에서 시스템 상태를 취약 또는 안전(조치 적용)으로 바꾼 뒤 공격 실행을 눌러, 같은 공격이 어떻게 다르게 끝나는지 직접 확인하세요.

현재: 취약한 설정 — 공격이 통할까요?
# AI 답변을 innerHTML로 그대로 렌더링해 본다 # [공격 실행] 버튼을 누르면 시작합니다.

🤖 AI 코치에게 물어보기 BYO 키 하이브리드

API 키 없이도 데모 AI(오프라인 사전 정의 답변)가 바로 답합니다. Claude API 키를 저장하면 이 페이지 주제(AI-06)에 대해 실제 LLM에게 자유롭게 질문할 수 있어요. 키는 이 탭에만 보관되고(탭을 닫으면 삭제) 사이트 서버로 전송되지 않습니다. 이 사이트는 XSS 실습 페이지를 함께 제공하므로, 권한을 최소화한 전용 키를 쓰고 실습 후에는 폐기하세요.

📋 설정 비교 (왜 막혔나?)

✗ 취약한 설정
# AI 작성 답변을 HTML로 그대로 렌더 dev$ element.innerHTML = aiAnswer >> <img src=x onerror=steal()> 실행 → 저장형 XSS 발생
✓ 안전한 설정
# 출력 이스케이프 + 구조화 파싱 dev$ textContent + JSON 파싱 후 화이트리스트 검증 >> 마크다운 새니타이저 통과 → 삽입 페이로드 무력화

🔧 조치 방법

  1. LLM 출력은 이스케이프·새니타이즈 후 렌더링합니다(innerHTML 금지).
  2. 출력을 코드·쿼리에 쓸 때는 파서+화이트리스트로 구조 검증합니다.
  3. 다운스트림 시스템(DB·셸)에 전달 전 스키마 검증을 적용합니다.

✅ 점검 체크리스트

  • 출력 이스케이프/새니타이즈 적용됨
  • 다운스트림 전달 전 구조 검증 존재
점검기준: OWASP LLM05 Improper Output Handling