AI 에이전트가 시스템 권한을 광범위하게 보유하게 되면서, 고전적인 'Confused Deputy' 보안 취약점이 재부상하고 있다. 2026년 6월 Meta AI 어시스턴트를 통해 2만 개 Instagram 계정이 탈취된 사례가 이를 실증한다. 문제의 핵심은 자연어 인터페이스가 권한 검증 정보를 포함하지 않아, 낮은 권한의 공격자가 높은 권한의 에이전트를 조종할 수 있다는 점이다.
핵심 포인트- AI 에이전트의 자연어 인터페이스는 authorization 정보를 포함하지 않아, 모든 컨텍스트(메시지, 문서, 이메일)를 명령으로 해석할 수 있다
- Confused Deputy 취약점은 높은 권한의 프로세스가 낮은 권한 요청자의 지시로 권한을 남용하는 클래식 보안 패턴이다
- 기존 add_recovery_email() 함수가 호출자 소유권 검증 없이 작동하면 에이전트가 계정 탈취 도구가 된다
- 방어 핵심은 에이전트 레벨 판단이 아닌 코드 레벨의 명시적 권한 검증 — "그 판단이 이제 코드로 존재해야 한다"
- 비가역적 작업(결제, 삭제, 권한 변경)에는 반드시 인간 승인 단계를 삽입해야 한다
상세 정리- 사건 경위: 공격자들이 Meta AI 어시스턴트에 타인 계정에 자신의 이메일을 연결해달라고 요청, 비밀번호 재설정으로 2만 개 계정 탈취
- 취약한 코드 패턴: def add_recovery_email(account, new_email) 형태로 호출자가 account를 소유하는지 확인하지 않는 함수
- 자연어 인터페이스 위험성: 에이전트는 메시지, 문서, 이메일 등 모든 입력을 명령으로 해석 — Prompt Injection 공격의 자연스러운 표적
- Confused Deputy 개념: 높은 권한 프로세스가 낮은 권한 요청자에게 속는 패턴, AI 에이전트가 정확히 이 역할을 수행하게 됨
- 수정된 코드: if not principal.owns(account): raise Unauthorized(...) 를 함수 시작에 명시적으로 추가
- 대책 1 — 최소 권한: 단기 스코프 토큰 사용, 에이전트에 필요 최소한의 권한만 부여, 장기 공급자 토큰 지양
- 대책 2 — 비가역 작업 보호: 결제, 계정 삭제, 권한 변경은 AI 판단이 아닌 인간 승인 게이트 필수
- 대책 3 — 감사 추적: 모든 에이전트 행동의 출처와 호출자를 로그로 기록, 사후 추적 가능하게
- 대책 4 — 정책 기반 코드: AI의 자연어 판단 대신 명시적 조건문과 코드 규칙으로 권한 제어
- 보안 설계 원칙: 에이전트 자체가 문제가 아니라 설계 결함 — 인간 판단을 코드로 명시화하는 게 해결책
왜 읽나AI 에이전트를 프로덕션에 도입하는 백엔드/보안 엔지니어에게 실제 탈취 사례 분석과 방어 코드 패턴을 제공한다.