피드로 돌아가기
Dev.toSecurity
원문 읽기
SystemMessage 분리와 Output Guard 도입을 통한 Prompt 취약점 원천 차단
System Prompt Leakage vs Prompt Injection in Spring Boot AI
AI 요약
Context
단일 PromptTemplate 내에 System Instruction과 User Input을 단순 결합하여 처리하는 구조적 결함 분석. Transformer 모델의 Flat Token Sequence 처리 특성으로 인해 시스템 권한과 사용자 입력 간의 경계가 부재하여 Prompt Injection 및 Leakage 발생 가능성 상존.
Technical Solution
- Spring AI ChatClient API의 .system()과 .user() 메서드를 분리 호출하여 모델 레벨의 구조적 Turn Isolation 구현
- System Prompt 내 민감 정보 저장을 금지하고 외부 Secrets Manager를 통한 런타임 참조 방식으로 변경하여 데이터 노출 경로 제거
- 응답 텍스트 내 시스템 프롬프트의 핵심 키워드를 탐지하는 SYSTEM_PROMPT_CANARIES 기반의 Output Guard 로직 설계
- @Validated 및 Bean Validation 도입을 통한 입력 단계의 1차 필터링으로 악성 페이로드 유입 최소화
- 응답값에 시스템 프롬프트 파편 포함 시 즉시 응답을 Redacted 처리하는 후처리 검증 프로세스 구축
실천 포인트
- System Instruction과 User Input을 절대 하나의 문자열로 결합하지 말 것 - LLM 프롬프트 내에 DB 패스워드 등 정적 자격 증명을 절대 포함하지 말 것 - 모델의 응답이 시스템 설정값을 유출하는지 검증하는 Canary-based Filter 적용 검토 - 입력 단계의 Bean Validation과 출력 단계의 Guardrail을 동시에 구축하여 Depth-in-Defense 구현