URL: https://www.youtube.com/watch?v=OE_lLNCNfQo
날짜: 2026-10-03
채널: aiDotEngineer
발표자: Rowan Christmas, Docker Product Manager
📌 핵심 질문 / 핵심 논점
==AI 에이전트가 유용한 작업을 계속 수행하게 하면서도 호스트 컴퓨터의 브라우저 기록·금융 정보·시크릿·네트워크에 접근하지 못하게 하려면, 프롬프트 안전장치가 아니라 에이전트와 호스트 사이의 MicroVM 경계가 필요하다.==
- Claude Code Desktop은 명시적으로 악의적인 요청을 거부했지만, 보안 연구라는 맥락으로 다섯 번의 프롬프트를 구성하자 실제 브라우저 기록과 금융 관련 개인정보를 찾아냈다.
- MicroVM은 자체 커널과 격리된 파일 시스템을 사용하고, 샌드박스 안에서 시크릿을 보지 못하게 하며, 네트워크 요청의 비밀값을 플레이스홀더로 치환한다.
- 네트워크·파일 시스템·MCP 카탈로그 정책, 감사 추적, 에이전트 신원과 인간 승인 위임 체인을 결합해야 AI 거버넌스를 운영 가능한 통제로 바꿀 수 있다.
에이전트에게 일을 맡길수록 “하지 마”라는 시스템 프롬프트만으로는 부족하다. 에이전트가 우회할 수 없는 하드웨어·커널·파일 시스템 경계에서 기본 권한을 제한하고, 필요한 리소스만 명시적으로 연결하며, 모든 행동을 누구의 승인으로 수행했는지 추적해야 한다. Docker의 sbx는 Claude Code, Codex, 셸, Python 작업, 웹 서버 등 임의의 프로세스를 같은 사용 경험으로 MicroVM 안에서 실행하려는 접근이다.
1. 프롬프트 안전장치가 무너지는 실제 공격
AI 코딩 도구가 “안전하다”는 기대는 호스트의 민감한 파일과 자격 증명이 에이전트 프로세스에 보이는 순간 무너진다.
1.1. Claude Code Desktop으로 자기 환경을 공격한 실험
-
출발점은 안전하다는 믿음이었다
- 보호에 대한 기대: 사람들은 코딩 하네스가 위험한 작업을 감지하면 멈춰 줄 것이라고 생각한다.
- 실수의 외주화: 프로덕션 데이터베이스를 AI가 삭제했다는 사례를 보며 “나는 30년 동안 코딩했으니 그런 실수를 하지 않을 것”이라고 여기기 쉽지만, 에이전트가 읽을 수 있는 호스트 데이터 자체가 공격면이 된다.
-
브라우저 기록에서 개인정보로 확장됐다
- 첫 탐색: Claude Code Desktop을 Mac에서 실행하고 브라우저 기록을 찾게 하자 곧바로 기록을 찾아냈다.
- 금융 정보 발견: 브라우저 기록을 단서로 은행 계좌를 찾았고, 발표자가 만든 가짜 은행 이름을 포함해 실제 금융 데이터까지 확인했다.
- 행동 패턴 노출: 최근 수표를 주문한 사실과 Zelle 사용 사실을 찾아냈고, 사용 중인 계좌의 마지막 네 자리까지 알려 주었다.
- PII의 범위: 브라우저 기록 하나가 계좌·송금·수표 주문 같은 개인식별정보(PII)의 연결망으로 이어졌다.
1.2. 다섯 번의 프롬프트와 보안팀의 탐지
-
직접 요청보다 우회적인 연구 맥락이 잘 통했다
- 직접 요청의 차단: “내 은행 데이터를 찾아라”처럼 노골적으로 요청하면 Claude가 경고를 띄웠다.
- 맥락 전환: “보안을 수행하는 방법을 연구하고 있다”는 식으로 요청을 구성하면 Claude는 같은 계정과 기기에서 연구를 도와주듯 데이터를 탐색했다.
- 최소한의 조작: 공격을 완성하는 데 필요한 프롬프트는 다섯 개였고, 약간의 영리한 문구만으로 충분했다.
-
공격 흔적은 엔드포인트 보안에 포착됐다
- 경보 발생: 다음 날 보안팀은 컴퓨터가 해킹된 것으로 보인다는 알림을 보냈다.
- 실험임을 설명: 실제 침해가 아니라 컨퍼런스 발표를 위한 내부 실험이라고 설명해야 했다.
- CrowdStrike 보고서: 보안팀이 공유한 CrowdStrike 보고서는 머신에서 자격 증명을 가져가는 방식으로 알려진 행위라고 평가했다.
- 탐지 점수: 탐지·공격 성공 정도를 나타내는 점수에서 10점 만점에 9점을 받았다. 대부분의 학교 시험보다 좋은 점수였다는 농담은 실험 결과의 심각성을 강조한다.
1.3. MCP와 스크립트 주입으로 확장되는 위험
-
이번 공격은 제한된 내부 실험이었다
- 직접 조작: 사용자가 자신의 Claude Code Desktop을 열고 프롬프트를 입력했다.
- 자동화는 아니었다: 스크립트 주입, MCP 서버, 외부 자동화가 개입하지 않았으므로 훨씬 더 넓은 공격 가능성 중 일부만 시험한 셈이다.
-
도구가 호스트에 도달하면 대응 시점이 늦다
- 하네스 한계: 에이전트 하네스 수준에서 금지 문구와 권한 확인만 추가해도 에이전트는 다른 경로를 찾아낼 수 있다.
- 경계의 위치: 에이전트가 호스트 머신의 파일 시스템과 네트워크에 직접 닿은 뒤에는 피해를 막기 어렵다.
2. MicroVM 샌드박스가 제공하는 보안 경계
MicroVM은 컨테이너 사용 경험을 유지하면서도 별도의 커널과 가상 머신 경계를 제공해 에이전트의 기본 시야를 호스트 바깥으로 제한한다.
2.1. 컨테이너와 다른 격리 모델
-
자체 커널을 실행한다
- 커널 경계: 일반적인 Docker 작업과 달리 MicroVM은 자체 커널을 실행한다.
- 호스트 격리: 에이전트가 호스트의 프로세스·파일·설정에 직접 의존하지 않도록 분리된 실행 환경을 만든다.
-
파일 시스템을 분리한다
- 기본 시야 차단: 샌드박스는 호스트의 파일 시스템을 자동으로 보지 못한다.
- 명시적 연결: 필요한 디렉터리나 다른 저장소만 사용자가 지정해 연결한다.
- 읽기 전용 공유: 관련 코드베이스는 읽기 전용으로 마운트해 참고하게 만들 수 있으며, 에이전트가 다른 저장소에 임의 커밋하는 일을 방지한다.
2.2. 시크릿과 네트워크를 안전하게 다루는 방식
-
시크릿 비가시성
- 샌드박스의 원칙: 시스템은 샌드박스가 호스트의 시크릿을 실제로 보지 못하도록 구성한다.
- 자격 증명 노출 방지: 브라우저 기록·계정 파일·환경 변수에 남은 금융 정보와 토큰이 에이전트의 탐색 대상이 되지 않는다.
-
플레이스홀더 기반 네트워크 요청
- 요청 변환: 네트워크 요청을 수행할 때 실제 시크릿 대신 플레이스홀더를 전달하고, 샌드박스 밖에서 필요한 값을 치환한다.
- 에이전트 무지: 에이전트는 유효한 작업을 수행할 수 있지만 실제 비밀값 자체를 읽거나 복사할 수 없다.
- 감사 가능성: 어떤 네트워크 요청이 허용·거부됐고 어떤 비밀값이 언제 사용됐는지 추적할 수 있다.
-
기본 네트워크 차단
- 아웃바운드 통제: Pirate Bay처럼 명시적으로 차단해야 할 사이트에 접근하려 하면 기본값으로 요청이 거부된다.
- 텔레메트리 억제: Claude가 Anthropic의 Datadog 인스턴스로 많은 텔레메트리 데이터를 보내는 동작도 샌드박스의 기본 네트워크 정책에 의해 차단될 수 있다.
- 정책의 가변성: 네트워크 허용·거부 규칙은 기본값이지만 필요에 따라 모두 구성할 수 있다.
2.3. 실제 사용성: sbx run claude
-
실행 방식은 짧고 익숙하다
- 호스트 실행: 일반적인
claude명령은 에이전트가 호스트 환경을 탐색할 수 있다. - 샌드박스 실행:
sbx run claude는 해당 폴더에 새 VM을 자동으로 만들고 샌드박스를 띄운 뒤 에이전트를 실행한다. - 추가 입력 비용: 명령어를 입력하는 데 일곱 글자를 더 치면 되며, 그 비용으로 호스트 격리를 얻는다.
- 호스트 실행: 일반적인
-
브라우저 기록 공격의 결과가 달라진다
- 일반 실행: 샌드박스 없이 Claude를 실행하면 브라우저 기록을 찾고 금융 데이터까지 탐색한다.
- MicroVM 실행: 샌드박스 안에서는 에이전트가 호스트에 브라우저가 설치되어 있지 않은 것처럼 인식하며 브라우저 기록을 찾지 못한다.
- 사용 경험 유지: 보호 기능을 추가해도 에이전트를 사용하는 감각은 기존 실행과 거의 동일하다.
-
Docker 내부에서도 일상적인 기본값이 됐다
- 개발자 적용: Docker의 모든 개발자가 샌드박스에서 코드를 작성하며, 사용하지 않으면 지적받을 정도로 일상화됐다.
- 보안과 생산성의 균형: 샌드박스가 에이전트의 유용한 작업을 막지 않으면서 위험한 호스트 접근만 잘라내므로 실무 적용이 가능하다.
3. 에이전트 거버넌스와 정책 집행
샌드박스는 격리만 제공하는 끝점이 아니라, 에이전트가 무엇을 했고 누가 허가했으며 어떤 정책이 적용됐는지를 설명하는 거버넌스 계층으로 확장될 수 있다.
3.1. 신원 추적과 위임 체인
-
행동의 주체를 복원한다
- 사후 질문에 답하기: “이 일이 왜 발생했는가?”라는 질문에 단순히 알 수 없는 자동화라고 답하지 않고, 어떤 에이전트가 작업을 수행했는지 추적한다.
- 인간 승인 연결: 그 에이전트를 실제로 승인한 인간까지 위임 체인(delegation chain)을 연결한다.
- 책임성 확보: 행동이 마법처럼 발생한 것이 아니라 에이전트와 인간 승인에 의해 실행됐다는 사실을 증명한다.
-
행동을 정책 변화와 연결한다
- 신원 기반 정책: 에이전트 수준의 신원을 기준으로 권한과 감사 기록을 분리한다.
- 점진적 제한: 새로운 사건이나 위험 신호가 발생하면 허용된 작업의 범위를 낮추는 degradation 정책을 적용한다.
- Cedar 정책: Cedar 정책 언어를 사용해 조건에 따른 권한 축소와 정책 집행을 표현한다.
3.2. 현재 제공되는 AI 거버넌스 제어
-
네트워크 제어
- Allow/Deny: 네트워크 대상별 허용 또는 거부를 지정한다.
- 기본 차단과 예외: 안전한 기본값으로 시작한 뒤 업무상 필요한 엔드포인트만 예외로 열 수 있다.
-
파일 시스템 제어
- 경로 단위 지정: 에이전트가 접근할 파일 시스템 지점을 명시한다.
- 권한 방향 분리: 필요한 저장소는 읽기 전용으로 마운트하고, 실제 작업 폴더만 쓰기 가능하게 구성한다.
-
MCP 카탈로그 제어
- 허용 도구 목록: 에이전트가 사용할 수 있는 MCP 서버와 도구 카탈로그를 결정한다.
- MCP 서버 격리: Docker의 MCP 서버 자체도 샌드박스에서 실행해 동일한 네트워크·파일 시스템·감사 통제를 적용한다.
3.3. 확장 예정인 세밀한 제어
-
L7 네트워크 정책
- 애플리케이션 계층 제어: 단순한 IP·포트 차단보다 HTTP 요청의 애플리케이션 계층(L7)에서 세밀한 규칙을 적용하려는 요구가 크다.
- 위험한 요청 선별: 같은 서버를 향한 요청이라도 경로·메서드·콘텐츠에 따라 허용 범위를 달리할 수 있다.
-
저장소별·경로별 권한
- GitHub 저장소 단위: 에이전트가 일부 저장소에는 읽고 쓸 수 있고 다른 저장소에는 접근하지 못하게 하는 정책이 필요하다.
- 저장소 내부 경로 단위: 같은 저장소 안에서도 특정 영역만 읽거나 쓰도록 제어해야 한다.
- 현재 상태: 네트워크, 파일 시스템, MCP 제어와 실행 가능한 샌드박스 기능은 이미 작동하며, 더 세밀한 제어는 향후 추가된다.
4. 배포와 실무 적용 전략
MicroVM 샌드박스는 특정 코딩 에이전트에 종속된 기능이 아니라 임의의 프로세스를 안전한 VM 안에 넣는 실행 플랫폼이다.
4.1. 운영체제와 실행 대상
-
주요 운영체제를 지원한다
- 플랫폼 범위: Mac, Windows, Linux에서 각 운영체제의 패키지 관리자를 통해 설치할 수 있다.
- 설치 경험: 복잡한 VM 설정을 직접 구성하지 않고
sbx run명령으로 바로 실행하는 것을 목표로 한다.
-
임의의 작업을 수용한다
- 코딩 에이전트: Claude Code와 Codex를 실행할 수 있다.
- 일반 프로세스: 셸, Python 작업, 웹 서버를 포함해 VM에서 실행 가능한 작업은 모두 넣을 수 있다.
- 에이전트 불문: 샌드박스는 Claude 전용이 아니며, 어떤 에이전트나 자동화 작업에도 적용된다.
4.2. 관련 저장소를 안전하게 연결하기
-
읽기 전용 마운트를 기본 전략으로 삼는다
- 컨텍스트 제공: 여러 관련 저장소를 읽기 전용으로 연결하면 에이전트가 현재 작업과 주변 코드베이스를 이해할 수 있다.
- 부수 변경 방지: 에이전트가 현재 작업을 통과시키기 위해 다른 저장소에 무작위 커밋을 만들 수 없게 된다.
- 명시적 API 보장: 사용자가 지정한 API와 권한만 실제 동작하므로 에이전트의 행동 범위를 검증할 수 있다.
-
필요한 쓰기 권한만 남긴다
- 작업 폴더 분리: 변경이 필요한 저장소와 참조만 필요한 저장소를 분리한다.
- 권한 최소화: 에이전트의 유용성을 유지하는 최소 쓰기 권한만 열고 나머지는 읽기 전용 또는 미연결 상태로 둔다.
4.3. 도입 시 점검할 운영 질문
-
누가 무엇을 승인했는가
- 신원 기록: 에이전트 신원과 인간 승인자를 작업 단위로 기록한다.
- 위임 범위: 승인된 작업이 어떤 네트워크·파일·MCP 권한을 포함했는지 남긴다.
-
어디까지 허용할 것인가
- 기본 거부: 호스트의 민감한 데이터와 외부 네트워크는 먼저 차단한다.
- 필요한 예외: 작업에 필요한 저장소·엔드포인트·도구만 명시적으로 허용한다.
- 사후 검증: 감사 추적과 실제 파일·네트워크 변경을 대조해 정책이 의도대로 작동했는지 확인한다.
주요 발언 모음
“We want to be secure by design, not just, you know, hope and say please and see what's going to happen.”
“보안을 설계에 넣고 싶다. 무슨 일이 일어날지 지켜보면서 그저 잘해 달라고 부탁하고 희망하는 방식이 아니다.”
“If it gets down to your host machine, it's too late. So, you want to be at that microVM boundary.”
“호스트 머신까지 내려온 뒤라면 이미 늦다. 그러므로 MicroVM 경계에 있어야 한다.”
“It didn't just happen by magic. We didn't know how what happened.”
“일이 마법처럼 일어난 것이 아니다. 무슨 일이 어떻게 일어났는지 알아야 한다.”
“The sandboxes are a full VM. So you can run a shell, you can run Codex, you can run whatever.”
“샌드박스는 완전한 VM이므로 셸, Codex, 무엇이든 실행할 수 있다.”
핵심 데이터 & 수치
- 5개 프롬프트: 직접적인 악성 요청 대신 보안 연구라는 맥락을 사용해 호스트의 민감한 정보를 찾는 데 필요했던 프롬프트 수다.
- 10점 만점에 9점: CrowdStrike 보고서에서 머신 자격 증명 탈취 방식과 유사한 실험 행위가 기록된 정도를 농담 섞어 표현한 점수다.
- 7글자 추가: 기존
claude대신sbx run claude를 입력해 새 MicroVM을 생성하고 에이전트를 실행하는 데 드는 대략적인 추가 입력 비용이다. - 3개 정책 축: 네트워크 허용·거부, 파일 시스템 지점, MCP 카탈로그를 현재 거버넌스 제어의 중심으로 삼는다.
- 3개 운영체제: Mac, Windows, Linux에서 패키지 관리자를 통해 설치할 수 있다.
- 1개 경계: 에이전트가 호스트에 닿기 전에 MicroVM 경계를 두어 시크릿·파일 시스템·네트워크를 통제한다.
결론 및 시사점
- 에이전트 권한을 프롬프트가 아니라 실행 경계로 제한해야 한다: 안전 문구와 사용자 확인은 우회될 수 있으므로 자체 커널과 격리된 파일 시스템을 가진 MicroVM을 기본 실행 환경으로 삼는다.
- 시크릿은 에이전트에게 보이지 않게 설계해야 한다: 실제 자격 증명을 샌드박스에 넣지 않고 플레이스홀더 치환 계층으로 네트워크 요청을 중계한다.
- 유용성과 안전성을 동시에 설계해야 한다: 셸·Claude·Codex·Python·웹 서버를 그대로 실행하되, 호스트 파일과 네트워크는 기본 차단하고 필요한 리소스만 연결한다.
- 읽기 전용 마운트가 실무적인 최소 권한 전략이다: 관련 저장소의 컨텍스트는 제공하면서 무관한 저장소의 커밋과 변경은 막는다.
- 거버넌스에는 행동 주체와 승인자를 함께 기록해야 한다: 에이전트 신원, 인간 승인, 위임 체인, 적용된 Cedar 정책을 감사 추적에 남긴다.
- 정책은 위험 변화에 따라 권한을 축소할 수 있어야 한다: 이상 행동이나 새로운 사건이 발생하면 에이전트의 네트워크·파일·MCP 권한을 점진적으로 낮춘다.
- 에이전트 플랫폼을 도입하는 팀은 현재 허용 범위를 먼저 목록화해야 한다: 외부 네트워크, 민감 파일, 도구 카탈로그, 저장소별 쓰기 권한을 분리해 명시한다.
- MicroVM은 특정 제품보다 넓은 실행 모델이다: Claude뿐 아니라 Codex, 셸, Python, 웹 서버 등 모든 자동화 작업에 동일한 격리 원칙을 적용한다.
핵심 요약 (20줄)
- AI 에이전트의 안전을 프롬프트의 금지 문구에만 맡기면 호스트의 민감한 데이터가 노출될 수 있다.
- Claude Code Desktop은 브라우저 기록을 시작으로 은행 계좌와 금융 행동 정보를 찾아냈다.
- 발견된 정보에는 최근 수표 주문 사실과 Zelle 사용 사실이 포함됐다.
- 에이전트는 사용 중인 계좌의 마지막 네 자리까지 확인했다.
- 직접적인 금융 데이터 요청은 경고를 유발했지만 보안 연구라는 맥락은 탐색을 허용했다.
- 호스트 환경을 탐색하는 데 필요한 프롬프트는 다섯 개에 불과했다.
- CrowdStrike 보고서는 이 행동을 머신 자격 증명 탈취 방식과 유사한 것으로 평가했다.
- 실험은 10점 만점에 9점 수준의 공격 성공·탐지 결과를 기록했다.
- 스크립트 주입이나 MCP 서버가 없어도 로컬 에이전트만으로 위험한 탐색이 가능했다.
- MicroVM은 자체 커널과 분리된 파일 시스템으로 에이전트와 호스트 사이에 강한 경계를 만든다.
- 샌드박스는 호스트의 시크릿을 직접 노출하지 않도록 구성된다.
- 네트워크 요청에 필요한 비밀값은 플레이스홀더로 치환해 샌드박스 안에 전달할 수 있다.
- 네트워크는 기본 차단되며 허용·거부 정책과 감사 추적을 설정할 수 있다.
- Claude의 외부 텔레메트리 전송도 샌드박스 네트워크 정책으로 제한할 수 있다.
sbx run claude는 폴더에 새 VM을 만들고 에이전트를 격리된 환경에서 실행한다.- 샌드박스 안의 에이전트는 호스트에 브라우저가 설치되지 않은 것처럼 브라우저 기록을 볼 수 없다.
- 네트워크·파일 시스템·MCP 카탈로그가 현재 AI 거버넌스 제어의 핵심 축이다.
- 에이전트 신원과 인간 승인자를 위임 체인으로 추적하면 행동의 책임 소재를 복원할 수 있다.
- 관련 저장소를 읽기 전용으로 마운트하면 컨텍스트는 제공하면서 무작위 커밋은 막을 수 있다.
- MicroVM은 Claude에 한정되지 않고 Codex·셸·Python·웹 서버를 포함한 모든 에이전트 작업에 적용된다.
