허용 목록을 목적지 필터가 아니라 능력 부여(capability grant) 로 재개념화 — 허용 목록상 도메인으로 도달 가능한 모든 함수가 공격 표면이 됨
VM 내부에 방어적 man-in-the-middle 프록시를 두어 자체 API 트래픽을 가로채고, VM의 자체 프로비저닝 세션 토큰을 지닌 요청만 통과시켜 공격자 삽입 키는 거부 (server-side fetch를 가능케 하는 헤더도 차단)
프록시는 서버가 아닌 VM 내부에 위치 — 서버 관점에서 Cowork 요청은 다른 API 클라이언트와 구분 불가하므로 출처(provenance)는 VM만 알 수 있음
직접 만든 소프트웨어가 가장 취약하다는 원칙의 두 번째 사례 — 하이퍼바이저·seccomp·gVisor는 신뢰성을 유지했으나 커스텀 허용 목록 프록시가 실패
놓친 위험: VM 격리가 EDR 소프트웨어도 차단
엔터프라이즈 보안팀이 "왜 우리 EDR이 내부를 못 보느냐"고 질문 — Claude를 가두는 격리가 호스트 기반 EDR도 막았기 때문
EDR 관점에서 Cowork는 불투명한 하이퍼바이저 프로세스라 게스트 내부를 검사할 수 없음
현재 완화책은 관리자가 사후에 이벤트 로그를 가져올 수 있는 풀 기반 OTLP 익스포트이나, 실시간 모니터링과는 다름
환경별 비교 요약
임시 컨테이너(claude.ai): 격리 오버헤드는 컨테이너 스핀업, 사용자 의존은 해당 없음, 피해 반경은 gVisor + 호스트 인프라 경계로 보호되는 서버 측 컨테이너
HITL 샌드박스(Claude Code): 격리 오버헤드는 저지연 네이티브 샌드박스, 사용자는 bash 해석 필요, 피해 반경은 로컬 작업공간
봉인 VM(Claude Cowork): 격리 오버헤드는 전체 VM 부팅, 사용자 의존은 해당 없음, 피해 반경은 vsock + 하이퍼바이저 경계로 보호되는 마운트 작업공간
에이전트가 읽는 것을 신뢰하기
엔터프라이즈는 MCP 연결 보안을 자주 묻지만, 올바른 질문은 MCP에 국한되지 않고 더 넓음 — 외부 리소스는 코드 실행 위험(공급망 측면)과 프롬프트 인젝션 벡터 두 위험을 동시에 가짐
전통적 의존성 감사(버전 고정, 서명 검증, 소스 검토)는 첫 번째만 해결하고 두 번째는 놓침
원격 대 로컬의 차이가 보이는 것보다 중요 — 로컬 도구는 감사·버전 고정 가능하고 변하지 않지만, 원격 도구(호스팅 MCP 서버, 클라우드 커넥터)는 승인 이후 언제든 동작이 바뀔 수 있어 설치 시점의 신뢰 결정이 더는 유효하지 않을 수 있음
connector directory는 지속 검토로 이를 보완하나, 그 밖의 것은 신뢰 불가로 취급하고 피해 반경이 봉쇄된 환경에서 가짜 데이터로 먼저 실행할 것
도구 출력은 도구가 신뢰돼도 공격 표면 — 앞서의 GitHub README 사례가 그 경우이며, 웹 페이지에 적용하는 입력 스캐닝을 네트워크 연결 도구 결과에도 동일하게 적용해야 함
오염된 도구 반환이 일단 에이전트를 데이터 유출로 유도하면 로그에는 성공한 인가된 API 호출만 남아 사후 신호가 없으므로, 지연이 늘고 완벽하지 않더라도 라이브 검사를 우선
Claude Code와 Cowork에서는 도구 호출이 네트워크·파일 정책을 강제하는 프록시를 거치며, 검사를 수행하는 분류기는 추론용 모델이 아니어도 되는 작고 빠른 모델로 충분
향후 과제
영구 메모리 오염(Persistent memory poisoning): 세션 간 유지되는 컨텍스트(제품 메모리, CLAUDE.md 파일, 마운트된 작업공간, 예약·장기 실행 에이전트의 상태 디렉터리)가 늘면서, 여기에 들어온 인젝션이 에이전트 시작마다 재로드 — 세션 시작 시 우수한 분류기가 더 보편화되어야 함
멀티 에이전트 신뢰 상승(Multi-agent trust escalation): 서브 에이전트가 원시 텍스트 대신 구조화된 사실을 반환해 신뢰 불가 콘텐츠를 격리할 수 있으나, "우리 것"이라는 이유로 서브 에이전트 출력을 원시 도구 결과보다 높은 신뢰로 다루면 새 인젝션 벡터가 생김 — 신뢰 수준 차등 부여와 신뢰 상승 노출 사이의 트레이드오프 존재
에이전트 신원(Agent identity): Cowork는 자격 증명을 호스트 키체인에 두고 VM에 세션별 축소 토큰을 부여하며 그 토큰을 사용자와 독립적으로 폐기 가능
다만 에이전트가 자체 주체 신원을 가져야 하는지, 사용자의 확장으로서 권한을 상속해야 하는지에 대한 크로스 플랫폼 신원 문제는 두 방식의 혼합이 답일 수 있음
실패 유형은 산업·연구소 전반에서 반복될 가능성이 크므로, 공유 벤치마크·공개 규범·공통 신원 표준·교차 벤더 레드팀 등 에이전트 특화 보안 태세에 대한 집단적 투자가 필요
핵심 원칙 요약
환경 계층에서 먼저 봉쇄를 설계하고, 그다음 모델 계층에서 행동을 조정 — 가장 큰 교훈을 준 두 사고(직원 피싱, 서드파티 허용 목록 공개)는 모두 허용된 경로로 데이터가 빠져나간 이그레스 사례이며, 이 경우 모델 계층은 잡을 이상 징후가 없어 결정론적 경계가 최후의 방어
격리 강도를 사용자의 감독 역량에 맞출 것 — bash를 읽는 개발자와 그렇지 않은 지식 노동자는 같은 위협 모델이 아니며, 전문가에게 과한 마찰을 주거나 비전문가에게 과한 신뢰를 주는 양방향 오류 모두 실패
커스텀 구성 요소를 경계할 것 — 검증된 하이퍼바이저·시스템콜 필터·컨테이너 런타임이 더 많은 적대적 검증을 견뎠으며, 모든 배포에서 표준 프리미티브는 버텼고 그 주변의 자체 작업이 결함을 드러냄
에이전트는 새로운 소프트웨어 범주여도 시스템 수준 상호작용(파일 읽기, 소켓 열기, 프로세스 생성)은 새롭지 않아, 성숙한 도구로의 봉쇄가 핵심적으로 유효한 방어가 됨