AI-06
📤 불안전한 출력 처리
AI/LLM 보안 · 출력 처리
위험도: 상💡 쉽게 말하면
불안전한 출력 처리는 AI가 써준 계약서를 확인 없이 도장 찍어 보내는 일과 같습니다. 출력 속에 숨은 악성 코드(스크립트)까지 그대로 전송됩니다.
불안전한 출력 처리는 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 파싱 후 화이트리스트 검증
>> 마크다운 새니타이저 통과
→ 삽입 페이로드 무력화
🔧 조치 방법
- LLM 출력은 이스케이프·새니타이즈 후 렌더링합니다(innerHTML 금지).
- 출력을 코드·쿼리에 쓸 때는 파서+화이트리스트로 구조 검증합니다.
- 다운스트림 시스템(DB·셸)에 전달 전 스키마 검증을 적용합니다.
✅ 점검 체크리스트
- 출력 이스케이프/새니타이즈 적용됨
- 다운스트림 전달 전 구조 검증 존재
점검기준: OWASP LLM05 Improper Output Handling