AI 에이전트 보안에서 제일 위험한 착각은 이거다.
“모델이 똑똑해지면 알아서 수상한 걸 거르겠지.”
듣기엔 그럴듯하다.
근데 에이전트는 그냥 답변만 하는 챗봇이 아니다.
웹을 읽고, 메일을 읽고, 문서를 요약하고, 툴을 호출하고, 가끔은 장기 메모리에 무언가를 저장한다.
즉, 이제 공격 표면은 모델 내부만이 아니다.
에이전트가 들어가는 정보 환경 전체가 공격 표면이 된다.
Google DeepMind 연구진의 AI Agent Traps 논의가 중요한 이유도 여기에 있다.
핵심은 단순하다.
공격자가 모델을 해킹하지 않아도 된다.
에이전트가 읽는 웹페이지, 문서, 메일, 이미지, 메타데이터, 장기 메모리, 승인 UI를 바꿔서 에이전트가 스스로 위험한 행동을 하게 만들 수 있다.
이건 “프롬프트 인젝션 조심하세요”보다 한 단계 더 큰 이야기다.
프롬프트 인젝션은 입구 하나다.
Agent Traps는 입구, 복도, 엘리베이터, 비상구, 관리실까지 다 공격 표면으로 본다.
어쩐지 보안팀 표정이 아침부터 종이컵 커피처럼 얇아지는 주제다.
먼저 결론
AI Agent Traps를 개발팀 운영 기준으로 번역하면 결론은 다섯 가지다.
- 외부 웹과 문서는 모두 불신 입력으로 다룬다.
- 읽기 에이전트와 실행 에이전트를 분리한다.
- 장기 메모리는 자동 저장하지 않는다.
- 툴 권한은 allowlist와 단계별 승인으로 묶는다.
- 사람 승인 화면에는 원문, diff, 권한 변화, 되돌리기 방법을 함께 보여준다.
즉, 에이전트 보안은 “모델에게 조심하라고 말하기”가 아니다.
운영 구조를 바꾸는 일이다.
웹을 읽는 단계, 요약하는 단계, 판단하는 단계, 실행하는 단계, 기억하는 단계를 분리해야 한다.
특히 브라우징 에이전트, 메일 처리 에이전트, 리서치 에이전트, 코딩 에이전트, 트레이딩 보조 에이전트처럼 외부 정보를 읽고 행동까지 이어지는 시스템은 Agent Traps를 기본 위협 모델에 넣어야 한다.
이제 질문은 “우리 에이전트가 똑똑한가?”가 아니다.
질문은 이거다.
우리 에이전트가 속았을 때, 피해가 어디서 멈추나?
AI Agent Traps가 말하는 핵심
SSRN에 공개된 AI Agent Traps 논문은 자율 에이전트가 웹을 돌아다니는 시대의 새로운 취약성을 다룬다.
논문의 핵심 표현은 정보 환경 자체가 문제가 된다는 점이다.
사람은 웹페이지의 렌더링 결과를 본다.
하지만 에이전트는 HTML, CSS, ARIA label, 메타데이터, 이미지 설명, PDF 텍스트, 메일 본문, 첨부파일, 검색 결과 스니펫까지 읽을 수 있다.
공격자는 바로 이 차이를 노린다.
사람에게는 정상 페이지처럼 보이는데, 에이전트에게는 다른 지시가 들어간 입력을 줄 수 있다.
예전 웹 보안에서 사용자와 서버 사이를 봤다면, 에이전트 시대에는 사용자, 에이전트, 웹 환경, 툴, 메모리, 다른 에이전트까지 같이 봐야 한다.
이게 골치 아픈 지점이다.
에이전트는 좋은 비서처럼 행동하려고 한다.
그래서 수상한 입력도 “사용자가 원하는 일을 끝내기 위한 정보”로 해석하려는 경향이 생긴다.
친절함이 공격 표면이 되는 셈이다.
기특한데, 위험하다.
여섯 가지 함정
논문과 보안 해설들이 공통으로 정리하는 축은 대략 여섯 가지다.
첫째, Content Injection Traps다.
사람 눈에는 보이지 않지만 에이전트 파서에는 들어오는 지시를 심는다.
HTML 주석, 숨겨진 CSS 텍스트, 접근성 속성, 이미지 메타데이터, PDF 내부 텍스트가 여기에 들어간다.
웹 요약 에이전트가 렌더링 화면이 아니라 원시 DOM을 그대로 읽는다면 이 공격에 취약해진다.
둘째, Semantic Manipulation Traps다.
직접 명령을 쓰지 않고 문맥과 표현을 조작한다.
“업계 표준”, “검증 완료”, “보안팀 권장”, “모두가 쓰는 방식” 같은 표현으로 에이전트의 판단 방향을 밀어버리는 식이다.
이건 사람도 자주 당한다.
에이전트라고 면역이 생기는 건 아니다.
셋째, Cognitive State Traps다.
장기 메모리, RAG 지식베이스, 사용자 선호 요약, 이전 세션 로그를 오염시키는 방식이다.
단발성 웹페이지보다 더 무섭다.
한 번 저장된 잘못된 기억은 나중에 정상 작업에서 믿을 만한 맥락처럼 되살아날 수 있다.
넷째, Behavioural Control Traps다.
에이전트가 가진 툴 권한을 이용해 원치 않는 행동을 하게 만든다.
메일 보내기, 파일 이동, 결제, 권한 변경, API 호출, 코드 배포 같은 작업이 여기에 해당한다.
요약만 틀린 경우와 실행이 틀린 경우는 피해 규모가 다르다.
다섯째, Systemic Traps다.
개별 에이전트가 아니라 에이전트 네트워크 전체를 노린다.
여러 금융 에이전트가 같은 가짜 신호를 읽고 동시에 비슷한 행동을 하면 연쇄 반응이 생길 수 있다.
여러 리서치 에이전트가 같은 오염된 출처를 읽고 서로의 결과를 다시 인용하는 것도 작은 버전의 시스템 함정이다.
여섯째, Human-in-the-Loop Traps다.
사람 승인 단계까지 공격한다.
에이전트가 복잡한 로그, 그럴듯한 요약, 긴 체크리스트, 긴급한 알림을 만들어서 사람이 별 생각 없이 승인하게 만드는 식이다.
사람을 넣었다고 안전한 게 아니다.
사람 승인도 잘 설계하지 않으면 그냥 멋진 도장 찍기 버튼이 된다.
왜 운영팀 문제인가
이 주제는 모델 연구팀만의 문제가 아니다.
실제 서비스를 운영하는 팀이 바로 영향을 받는다.
웹 리서치 에이전트가 오염된 페이지를 읽으면 보고서가 틀릴 수 있다.
메일 에이전트가 악성 메일을 신뢰하면 내부 정보를 외부로 보낼 수 있다.
코딩 에이전트가 README나 issue에 숨은 지시를 따르면 의도치 않은 파일을 바꿀 수 있다.
지식 관리 에이전트가 저품질 출처를 장기 메모리에 저장하면 나중에 팀 전체의 판단이 흐려질 수 있다.
트레이딩 보조 에이전트가 가짜 뉴스나 조작된 데이터 피드를 믿으면 금전 손실로 바로 이어진다.
그래서 Agent Traps는 “보안팀이 알아서 해줘”가 아니다.
제품, 플랫폼, 데이터, DevOps, 보안, 운영팀이 같이 봐야 한다.
에이전트는 모델이 아니라 작은 운영 시스템이기 때문이다.
방어 원칙 1: 입력 계층을 둘로 나눠라
가장 먼저 해야 할 일은 렌더링 결과와 원시 입력을 분리하는 것이다.
사람에게 보이는 화면과 에이전트가 읽는 텍스트가 같은지 확인해야 한다.
브라우저 기반 리서치라면 최소한 다음 로그가 남아야 한다.
- 렌더링 스크린샷
- 추출된 텍스트
- 제거된 숨김 요소
- 출처 URL
- 수집 시각
에이전트에게 바로 원시 HTML 전체를 먹이는 구조는 위험하다.
HTML comment, display none, offscreen text, aria-label, metadata, script 주변 텍스트를 전처리 계층에서 다뤄야 한다.
여기서 핵심은 “숨긴 것을 무조건 버린다”가 아니다.
숨긴 것과 보이는 것을 분리해서 취급한다는 점이다.
접근성 텍스트처럼 정상적으로 필요한 정보도 있다.
그래서 삭제 규칙보다 중요한 건 출처와 계층을 태깅하는 것이다.
이 텍스트가 본문에서 왔는지, 메타데이터에서 왔는지, 숨김 요소에서 왔는지, 첨부파일에서 왔는지를 남겨야 한다.
방어 원칙 2: 읽는 에이전트와 실행 에이전트를 분리하라
가장 위험한 구조는 하나의 에이전트가 웹을 읽고, 요약하고, 판단하고, 툴까지 실행하는 구조다.
편하다.
그리고 편한 만큼 터졌을 때도 빠르다.
운영에서는 역할을 나눠야 한다.
Reader는 읽기만 한다.
Analyzer는 출처를 비교하고 위험 신호를 표시한다.
Planner는 실행 계획만 만든다.
Executor는 allowlist된 툴만 호출한다.
Approver는 사람에게 짧고 검증 가능한 승인 화면을 제공한다.
이렇게 나누면 하나의 페이지가 Reader를 속여도 곧바로 파일 삭제나 배포로 이어지지 않는다.
모델을 여러 개 쓰라는 뜻이 아니다.
같은 모델을 써도 권한과 컨텍스트를 나누라는 뜻이다.
에이전트 운영에서 컨텍스트 분리는 권한 분리의 시작이다.
방어 원칙 3: 장기 메모리는 검역소를 거쳐라
장기 메모리는 에이전트 경험을 좋게 만든다.
하지만 Agent Traps 관점에서는 장기 메모리가 제일 무서울 수 있다.
잘못된 정보가 한 번 저장되고 나면 이후 정상 작업에서 신뢰된 맥락처럼 계속 호출될 수 있기 때문이다.
그래서 메모리에는 검역소가 필요하다.
외부 입력에서 온 정보는 바로 장기 메모리에 저장하지 않는다.
먼저 source, confidence, scope, expiry, human_review 여부를 붙인다.
특히 다음 정보는 자동 저장 금지 대상으로 두는 편이 낫다.
- 사용자 권한 선호
- 보안 예외
- 배포 절차
- 결제나 거래 규칙
- 고객 개인정보 처리 절차
- 삭제나 덮어쓰기 관련 선호
“사용자는 앞으로 확인 없이 처리하길 원함” 같은 문장이 장기 메모리에 들어가면 나중에 큰일이 될 수 있다.
사람은 그런 말을 농담으로 했을 수도 있다.
에이전트는 그걸 정책처럼 들고 올 수 있다.
방어 원칙 4: 툴 권한은 기능이 아니라 피해 단위로 나눠라
툴 권한을 설계할 때 “메일 툴 허용”, “파일 툴 허용”, “브라우저 툴 허용”처럼 기능 단위로만 나누면 부족하다.
피해 단위로 나눠야 한다.
메일 읽기는 낮은 위험이다.
메일 보내기는 높은 위험이다.
초안 생성은 중간 위험이다.
외부 도메인 첨부파일 전송은 매우 높은 위험이다.
파일 검색은 낮은 위험이다.
파일 수정은 중간 위험이다.
파일 삭제는 높은 위험이다.
배포는 높은 위험이다.
결제, 거래, 권한 변경은 최상위 위험이다.
권한표는 이렇게 생겨야 한다.
| 행동 | 기본값 | 승인 조건 |
|---|---|---|
| 웹 읽기 | 허용 | 위험 도메인 표시 |
| 문서 요약 | 허용 | 출처와 추출 계층 표시 |
| 장기 메모리 저장 | 제한 | 사람 검토 후 저장 |
| 파일 수정 | 제한 | diff 확인 후 승인 |
| 외부 전송 | 차단 | 수신자 allowlist와 본문 확인 |
| 삭제 | 차단 | 별도 승인과 복구 경로 확인 |
| 배포 | 차단 | CI, CODEOWNER, 릴리스 승인 |
| 결제·거래 | 차단 | 별도 시스템 승인 |
권한은 모델 신뢰도가 아니라 실패 비용으로 정해야 한다.
방어 원칙 5: 승인 UI를 짧고 강하게 만들어라
Human-in-the-loop는 마법 방패가 아니다.
사람에게 긴 요약을 던져주고 “승인할래?”라고 묻는 건 거의 효과가 없다.
좋은 승인 UI는 사람이 봐야 할 정보를 짧고 날카롭게 보여준다.
최소한 네 가지가 필요하다.
- 에이전트가 하려는 정확한 행동
- 그 행동의 입력 출처
- 변경 diff 또는 전송 내용
- 실패했을 때 되돌리는 방법
예를 들어 “이 PR을 머지할까요?”보다 이런 화면이 낫다.
| 항목 | 표시할 내용 |
|---|---|
| 행동 | main 브랜치에 PR #123 merge |
| 입력 | issue #98, docs/foo.md, 외부 URL 2개 |
| 권한 변화 | 배포 워크플로 파일 변경 있음 |
| 검증 | 테스트 32개 PASS, 보안 스캔 미실행 |
| 되돌리기 | revert commit 생성 가능 |
승인은 사람에게 책임을 떠넘기는 절차가 아니다.
사람이 위험을 판단할 수 있게 상황을 줄여주는 인터페이스다.
방어 원칙 6: 멀티 에이전트에는 회로 차단기가 필요하다
멀티 에이전트 구조에서는 같은 오염 신호를 여러 에이전트가 읽고 비슷한 결론을 동시에 낼 수 있다.
이게 Systemic Trap의 핵심이다.
한 에이전트가 틀리면 한 작업이 망가진다.
여러 에이전트가 같은 방식으로 틀리면 운영 전체가 흔들린다.
그래서 멀티 에이전트에는 회로 차단기가 필요하다.
예를 들면 이런 규칙이다.
- 같은 출처 하나만으로 다수 에이전트가 실행 행동을 못 하게 한다.
- 여러 에이전트가 같은 결론을 내도 독립 출처가 아니면 신뢰도를 올리지 않는다.
- 특정 도메인에서 위험 신호가 나오면 전체 실행 큐를 잠시 멈춘다.
- 일정 수 이상의 에이전트가 같은 툴을 동시에 호출하면 rate limit을 건다.
- 금융, 배포, 권한 변경은 다중 에이전트 합의가 아니라 별도 승인으로 처리한다.
중요한 건 “에이전트가 많으면 더 안전하다”가 아니다.
독립성이 없는 에이전트 여러 개는 한 목소리로 틀릴 수 있다.
그건 합의가 아니라 복사된 착각이다.
실무 체크리스트
팀에서 바로 적용하려면 아래 순서로 보면 된다.
첫째, 외부 입력 목록을 만든다.
웹, 메일, PDF, 스프레드시트, 슬랙, 노션, GitHub issue, 고객 티켓, 검색 결과, 이미지, 음성 전사까지 포함한다.
둘째, 각 입력이 어떤 에이전트 단계로 들어가는지 그린다.
읽기만 하는지, 요약하는지, 계획에 쓰는지, 실행까지 이어지는지 구분한다.
셋째, 툴 호출을 피해 단위로 분류한다.
읽기, 쓰기, 전송, 삭제, 권한 변경, 결제, 배포로 나누면 된다.
넷째, 장기 메모리 저장 정책을 만든다.
외부 입력은 기본적으로 검역 상태로 저장하고, 사람이 승인한 정보만 운영 메모리로 승격한다.
다섯째, 승인 UI를 손본다.
긴 요약 대신 행동, 출처, diff, 권한 변화, 복구 방법을 보여준다.
여섯째, 레드팀 테스트를 만든다.
숨김 HTML, 악성 메일, 오염된 문서, 가짜 메타데이터, 상충하는 출처, 장기 메모리 오염 시나리오를 테스트 세트로 만든다.
일곱째, 킬 스위치를 테스트한다.
에이전트를 멈추는 방법, 툴 토큰을 폐기하는 방법, 장기 메모리를 롤백하는 방법, 최근 실행을 감사하는 방법이 문서에 있어야 한다.
팀 규모별 적용 순서
작은 팀은 처음부터 거대한 보안 플랫폼을 만들 필요가 없다.
하지만 최소 방어선은 있어야 한다.
1인 개발자나 작은 팀이라면 웹 리서치 결과를 바로 파일 수정에 연결하지 않는 것부터 시작하면 된다.
읽기와 쓰기를 분리하고, 파일 수정은 diff 승인 후 실행한다.
스타트업 팀이라면 장기 메모리 검역소와 툴 권한표를 먼저 만든다.
특히 고객 데이터, 메일, 결제, 운영 인프라에 닿는 에이전트는 초기부터 권한을 작게 잡아야 한다.
엔터프라이즈 팀이라면 에이전트 실행 로그, 출처 provenance, 승인 이벤트, 툴 호출 trace를 감사 가능한 형태로 남겨야 한다.
에이전트가 왜 그 판단을 했는지보다 무엇을 읽고, 무엇을 저장했고, 무슨 권한으로 어떤 행동을 했는지가 더 중요하다.
설명 가능성보다 추적 가능성이 먼저다.
TECHTAEK식 운영 기준
TECHTAEK 기준으로 AI Agent Traps를 받아들이는 방식은 이렇다.
에이전트에게 “조심해”라고 말하는 것은 소프트 가드레일이다.
소프트 가드레일은 필요하다.
하지만 충분하지 않다.
실제 운영에서는 하드 가드레일이 필요하다.
숨김 입력 제거, 출처 태깅, 권한 분리, 메모리 검역, 승인 UI, 감사 로그, 킬 스위치가 하드 가드레일이다.
좋은 에이전트 운영은 모델이 한 번도 속지 않는 시스템을 만드는 게 아니다.
모델이 속아도 피해가 좁은 곳에서 멈추는 시스템을 만드는 것이다.
그러니까 Agent Traps를 읽고 무서워만 할 필요는 없다.
대신 설계를 바꾸면 된다.
에이전트는 계속 똑똑해질 것이다.
그만큼 에이전트가 읽는 세상도 더 적대적으로 다뤄야 한다.
조금 서글프지만, 운영은 원래 낭만보다 체크리스트가 오래 산다.
FAQ
AI Agent Traps는 프롬프트 인젝션과 같은 말인가?
같은 말은 아니다.
프롬프트 인젝션은 Agent Traps 안에 들어가는 주요 공격 방식 중 하나다.
Agent Traps는 웹 렌더링 차이, 문맥 조작, 장기 메모리 오염, 툴 권한 악용, 멀티 에이전트 연쇄, 사람 승인 조작까지 포함하는 더 넓은 위협 모델에 가깝다.
웹 브라우징을 끄면 해결되나?
위험은 크게 줄어든다.
하지만 완전히 해결되지는 않는다.
메일, 문서, PDF, 슬랙, 노션, GitHub issue, 고객 티켓도 외부 입력이 될 수 있다.
에이전트가 외부 정보를 읽는 순간 Agent Traps 관점의 입력 관리가 필요하다.
사람이 승인하면 안전한가?
사람 승인은 필요하지만 그 자체로 충분하지 않다.
승인 화면이 길고 모호하면 사람은 그냥 누르게 된다.
승인 UI에는 정확한 행동, 입력 출처, 변경 diff, 권한 변화, 되돌리기 방법이 보여야 한다.
장기 메모리는 꺼야 하나?
항상 끌 필요는 없다.
다만 외부 입력을 자동으로 장기 메모리에 넣는 구조는 위험하다.
장기 메모리는 검역, 만료, 출처, 신뢰도, 사람 검토 상태를 함께 관리해야 한다.
개발팀이 오늘 바로 할 수 있는 1순위는?
읽기 에이전트와 실행 에이전트를 분리하는 것이다.
웹이나 문서를 읽은 결과가 곧바로 파일 수정, 메일 전송, 배포, 삭제, 결제로 이어지지 않게 해야 한다.
그 다음은 툴 권한표와 승인 UI를 손보는 것이다.
관련 글
- Claude Mythos Preview와 Project Glasswing은 개발팀 보안 루틴을 어떻게 바꾸나 2026
- Agents SDK 차세대 진화 2026 – sandbox·harness·memory·filesystem 운영 경계표
- Claude Advisor Strategy는 언제 써야 하나 2026