AI 에이전트 보안은 전통적인 애플리케이션 보안과 다르다. 공격자는 코드만 노리지 않는다. 모델이 읽고 기억하고 추론하는 방식을 노린다. 특히 RAG, 이메일 요약, 브라우저 에이전트, 영속 메모리를 쓰는 시스템은 외부 텍스트 자체가 공격 표면이 된다.
4가지 공격 표면
| 공격 | 대상 | 대표 위험 |
|---|---|---|
| 메모리 포이즈닝(memory poisoning) | 에이전트의 장기 기억, 벡터 DB, 대화 기록 | 앞으로의 세션에서 잘못된 행동 반복 |
| 간접 프롬프트 인젝션(cross-prompt injection) | 문서, 이메일, 웹페이지, API 응답 | 외부 데이터가 시스템 지시처럼 실행됨 |
| 탈옥(jailbreak) | 모델 안전 정책 | 금지된 출력 또는 제한 우회 |
| 회피(evasion) | 필터·모더레이션 | ROT13, Base64, invisible Unicode로 검사 우회 |
이 공격들은 단독보다 조합될 때 위험하다. 예를 들어 공격자는 ROT13로 숨긴 지시를 문서에 넣고, RAG가 이를 검색하게 만든 뒤, 에이전트 메모리에 악성 선호도를 저장하게 할 수 있다.
메모리 포이즈닝 방어
장기 기억은 데이터베이스처럼 다뤄야 한다. “모델이 기억했다”는 이유로 신뢰하면 안 된다.
- 모든 memory entry에 출처, 생성 시각, 수집 채널을 붙인다.
- 신뢰 점수(trust score)를 두고 낮은 신뢰 문서는 검색 순위를 낮추거나 차단한다.
- 오래된 기억은 만료시키고 중요한 사실은 주기적으로 재검증한다.
- 에이전트 행동이 갑자기 달라지는지 anomaly detection으로 감시한다.
- 도구 결과 캐시와 외부 API 응답도 memory poisoning 대상에 포함한다.
간접 프롬프트 인젝션 방어
외부 데이터는 지시가 아니라 자료다. 시스템 프롬프트, 개발자 지시, 사용자 입력, 검색 문서를 같은 문자열로 단순 이어붙이면 모델이 경계를 잃는다.
방어 원칙은 세 가지다.
- 신뢰된 지시와 비신뢰 데이터를 구조적으로 분리한다.
- 외부 문서에는 provenance tag를 붙인다.
- 도구 실행은 최소 권한과 allowlist로 제한한다.
Microsoft가 제시한 Spotlighting은 외부 입력에 출처 신호를 삽입해 모델이 “이 텍스트는 지시가 아니라 데이터”라고 구분하도록 돕는 방식이다. 완전한 해결책은 아니지만, RAG·이메일·웹 브라우징 에이전트에서 적용 가치가 크다.
회피 공격 대응
필터를 통과한 텍스트가 안전하다고 가정하면 안 된다. 모델은 사람이 보지 못하는 Unicode tag 문자나 ROT13, Base64, homoglyph를 해석할 수 있다.
입력 게이트는 다음 순서로 두는 편이 안전하다.
정규화(NFC/NFKC)
→ invisible/zero-width 문자 제거
→ Base64/ROT13/URL/HTML entity 디코딩
→ homoglyph canonicalization
→ 의미 기반 분류
→ allow/block 결정키워드 매칭만으로는 synonym substitution과 paraphrase를 막기 어렵다. 의미 기반 classifier와 후처리 출력 필터를 함께 둬야 한다.
방어 계층 요약
| 계층 | 목적 |
|---|---|
| Input Gate | Unicode·인코딩·숨은 문자 정규화 |
| Prompt Shield | 탈옥·간접 인젝션 탐지 |
| Data Provenance | 외부 데이터 출처 추적 |
| Memory Governance | 기억 신뢰 점수·만료·재검증 |
| Output Filter | 생성 결과 후처리 검사 |
| Least Privilege | 공격 성공 시 피해 반경 축소 |
| Monitoring | 이상 행동, 토큰 급증, 도구 남용 감지 |
| Red Teaming | 새 공격 패턴을 지속적으로 평가 |
실무 체크리스트
- 에이전트가 외부 데이터를 읽는다면 간접 프롬프트 인젝션 테스트를 CI에 넣는다.
- 장기 메모리를 쓰면 memory entry의 출처와 만료 정책을 필수화한다.
- 도구 권한은 사용자 권한과 별도로 최소화한다.
- system prompt hardening만 믿지 말고 입력·검색·메모리·출력 계층에 방어를 나눠 배치한다.
- 보안 로그에는 프롬프트 원문뿐 아니라 검색된 문서 ID, 도구 호출, memory write 이벤트를 남긴다.
관련 문서
- microsoft-foundry-ai-tips-security — 신뢰할 수 있는 AI 에이전트 설계 원칙
- agent-governance — 에이전트 도구·비용·정책 통제
- crabtrap — AI 에이전트 아웃바운드 HTTP 보안 프록시
- rag-tips-confidence-aware — RAG가 모를 때 모른다고 말하게 하는 설계
참고 자료
- AI Under Attack: A Defender’s Guide to Memory Poisoning, Jailbreaks, and Evasion Techniques — Microsoft Community Hub (2026-05-21)