피드로 돌아가기
Dev.toSecurity
원문 읽기
Indirect Prompt Injection을 통한 데이터 유출 방지 아키텍처 설계
Microsoft Copilot just exfiltrated a company's files. The attack was one email. Here's the mechanism.
AI 요약
Context
LLM이 외부 입력 데이터와 제어 명령어를 구분하지 못하는 토큰 기반 처리 구조의 근본적 한계 존재. 사용자의 권한을 그대로 상속받은 AI Agent가 신뢰할 수 없는 외부 데이터를 컨텍스트로 수용하며 공격자의 명령을 실행하는 보안 취약점 노출.
Technical Solution
- 구조적 경계 설정을 통한 데이터-명령어 분리: SYSTEM 블록과 USER_DATA 블록을 명확히 구분하여 외부 텍스트의 명령어 실행을 차단하는 Prompt Engineering 적용
- Egress Channel 통제를 통한 데이터 유출 경로 차단: LLM 출력값의 HTML/Markdown 렌더링 전 Sanitization을 수행하고 이미지 URL 등 네트워크 요청 가능 요소를 Allowlist 기반으로 필터링
- Least Privilege 원칙 기반의 권한 스코핑: 전체 인덱스가 아닌 현재 요청에 필요한 최소한의 리소스(단일 문서 등)에만 접근하도록 Tool 레이어의 권한 범위를 제한
- Tool Call 로깅 및 이상 징후 탐지 체계 구축: 모델이 호출하는 모든 API 인자와 URL을 기록하고, 세션당 호출 빈도나 특정 키워드(contract, secret) 접근 패턴 분석을 통한 이상 탐지
실천 포인트
1. 모든 외부 입력 데이터를 전용 구분자(Boundary)로 래핑하고 모델에 데이터임을 명시했는가?
2. LLM 출력 결과물에서 임의의 외부 도메인으로 향하는 이미지 태그나 링크를 제거했는가?
3. AI Agent가 수행하는 Tool Call이 사용자 전체 권한이 아닌 해당 태스크 전용 최소 권한으로 동작하는가?
4. 모든 Tool 호출 이력을 로깅하고 비정상적인 호출 패턴을 감지하는 알림 체계가 있는가?