피드로 돌아가기
Dev.toSecurity
원문 읽기
Untrusted Input의 Data 격리를 통한 LLM Agent Prompt Injection 원천 차단
Email is the largest untrusted-input surface an agent has
AI 요약
Context
스케줄러 기반 LLM Agent가 이메일 본문을 지시문으로 오인하여 권한을 남용하는 Confused Deputy 문제 발생. 단순 분류기 튜닝으로는 Direct/Indirect Prompt Injection 및 Unicode 기반의 Smuggled Instruction 공격을 방어하기 어려운 구조적 한계 존재.
Technical Solution
- Refusal Contract 도입을 통해 모든 외부 입력을 Instruction이 아닌 DATA로 처리하도록 프롬프트 레벨에서 강제
- Action Surface를 단일 Binary(Classifier) 실행으로 제한하여 Agent의 도구 접근 권한을 물리적으로 격리
- NFKC Normalization 및 Unicode Tag Block 제거를 포함한 Hostile Preprocessing 파이프라인 구축
- Levenshtein Distance 기반의 Lookalike Domain 탐지 및 40여 개의 Injection Verb 패턴 매칭 필터 적용
- Negative Filter 통과 후 Operator 주소 확인을 통한 단계적 권한 상승(Elevation) 구조 설계
- 기본 처리 방침을 'Conservative Default'로 설정하여 미분류 데이터의 자동 실행을 전면 차단
실천 포인트
- 외부 입력값이 모델의 Instruction 위치에 직접 매핑되는 구조인지 검토 - NFKC 정규화 및 Zero-width character 제거 등 텍스트 정제 단계 포함 여부 확인 - LLM이 호출 가능한 Tool Set을 최소화하고, 특정 작업 수행 전 전용 분류기를 통한 검증 단계 추가 - 프롬프트 내에 '데이터와 지시문의 구분'을 명시하는 Refusal Contract 포함 여부 점검