Eazler AI Lab AI Engineering Journal

에이전트 샌드박스는
격리보다 운영에서 무너집니다

코딩 에이전트를 격리하는 방법을 다룬 2026년 측정 세 편을 원문으로 확인했습니다. 세 편이 각각 다른 층을 봤는데, 격리 방식의 우열보다 그 격리를 운영하는 선택에서 차이가 훨씬 크게 벌어졌습니다. 엔진은 취약점을 당일 고쳤는데 그 버전을 582일째 올리지 않은 제품이 있었고, 실제로 쓰이는 명령 금지 목록은 막으려던 작업의 우회를 대부분 놓치고 있었습니다.

작성일: 2026-09-09 범위: 코딩 에이전트 실행 격리 · 명령 정책 · 권한 범위 대상: 개발자 · 1인 스튜디오 · 소규모 팀 관점: 오늘 확인할 수 있는 것

핵심 요약

샌드박스는 에이전트가 실행하는 코드를 내 컴퓨터에서 떼어 놓는 실행 환경입니다. 코딩 에이전트에 셸과 파일 접근을 주면서 다들 샌드박스를 켰고, 2026년에 그것이 실제로 얼마나 막아 주는지를 잰 연구가 나왔습니다. 결과는 격리 방식의 우열이 아니라 운영 방식을 가리켰습니다.

69.0~98.6%
어떤 작업을 막으려 한 금지 목록 중, 그 작업의 우회를 하나 이상 놓친 비율 (일곱 가지 작업 유형별. 실제 목록 1,709개 대상)
0.0 → 17.1%
권한 범위 블록을 뺐을 때 범위 밖 행동 비율 (Claude Code × GLM-4.6, 76개 파일럿 세트. 논문이 밝힌 상한값이며 본 벤치마크에서는 2.6%p로 희석)
582일
한 샌드박스 제품이 가상화 엔진 버전을 올리지 않은 채 지난 기간 (2026-09-09 직접 확인)
가장 중요한 결론: 세 편의 측정이 각각 격리 엔진·명령 정책·권한 범위라는 다른 층을 봤지만, 차이가 크게 벌어진 지점은 모두 같은 성격이었습니다 — 기술의 우열이 아니라 그 기술을 운영하는 선택이었습니다. 엔진은 취약점을 당일 고쳤는데 제품이 그 버전을 올리지 않았고, 명령 금지 목록은 방식 자체가 주 방어층으로 부족하다는 결론이 나왔으며, 범위 밖 행동에서는 기반 모델을 바꾸는 것보다 어떤 프레임워크를 쓰느냐에서 차이가 컸습니다.

샌드박스는 무엇을 막는가

“샌드박스를 켰다”는 한 문장 안에 성격이 다른 세 개의 층이 들어 있습니다. 이 글에서 다루는 측정 세 편이 각각 한 층씩을 봤기 때문에, 먼저 층을 갈라 두겠습니다.

무엇을 막나대표적인 구현이 글에서 보는 측정
1. 격리 에이전트가 실행한 코드가 호스트 컴퓨터에 닿는 것 컨테이너, microVM, 사용자 공간 커널 제품 다섯 종의 엔진 수준 비교
2. 정책 격리 안에서도 실행하면 안 되는 명령 명령 금지 목록(denylist), 권한 규칙 실제 금지 목록 1,709개의 우회 가능성
3. 범위 도구 권한으로는 가능하지만 사용자가 허가하지 않은 행동 승인 절차, 작업 범위 선언 에이전트 4종 · 모델 6종 · 약 7,500회 실행

세 층은 서로를 대신하지 못합니다. 1층이 완벽해도 격리 안에서 프로젝트 파일이 지워지는 것은 막지 못하고, 2층이 완벽해도 금지 목록에 없는 정상 명령으로 하는 일은 막지 못합니다. 그리고 아래에서 보겠지만, 2026년 측정이 가장 크게 문제 삼은 것은 1층이 아니라 3층이었습니다.

용어: microVM은 필요한 장치만 남겨 가볍게 만든 가상 머신입니다. 사용자 공간 커널은 gVisor처럼, 게스트가 부르는 시스템 호출을 호스트 커널 대신 받아 처리하는 층을 말합니다. 둘 다 일반 컨테이너보다 호스트 커널에 닿는 면적이 작습니다.

1층: 엔진은 고쳤고, 제품이 안 올렸습니다

첫 번째 논문은 AI 샌드박스 제품 다섯 종이 게스트 코드를 호스트 커널에서 어떻게 떼어 놓는지를 여섯 개 축으로 비교했습니다(arXiv:2606.08433, 2026-06-07). 저자들은 종합 순위를 매기지 않았고, 축을 하나씩 보면 판단이 안 된다는 점을 명시했습니다.

그런데 운영자 입장에서 가장 큰 차이를 만든 것은 격리 방식이 아니라 제품이 그 엔진의 어느 버전을 쓰도록 고정해 두었는가였습니다. 여기서 버전 고정은 의존하는 소프트웨어의 버전을 특정 값으로 묶어 두는 것을 말합니다.

아래에서 상류는 격리 엔진을 만드는 프로젝트를, 하류는 그 엔진을 가져다 쓰는 샌드박스 제품을 가리킵니다.

상류 — 엔진 쪽

조율된 취약점 공개에서는 패치까지 약 0일. 가장 늦은 사례가 runc의 회귀 한 건으로 약 26일이었습니다.

하류 — 제품 쪽

0일부터 399일, 471일 이상, 그리고 “확인 불가”까지. 논문은 하류의 지연 폭이 상류보다 자릿수로 네 자리 넓다고 적었습니다.

논문의 표현을 그대로 옮기면, 운영자에게 보이는 패치 전달 속도는 엔진이 얼마나 빨리 고치느냐가 아니라 제품이 그 버전을 언제 올리느냐가 좌우합니다. 그리고 이 결과는 격리 등급으로 예측되지 않았습니다.

제품격리 방식패치가 도달하나추가 보안 설정을 적용할 수 있나
arrakis microVM (Cloud Hypervisor) — 강한 축 아니오 예 — 워커 스레드 32/33에 seccomp 필터 적용
daytona OCI 컨테이너 — 약한 축 아니오 — 러너의 Privileged: true 가 AppArmor를 끄고 권한을 되돌림

이 두 제품에서는 격리가 강한 쪽에 패치가 도달하지 않았고, 패치가 도달한 쪽에 추가 보안 설정(AppArmor·seccomp처럼 기본 격리 위에 덧대는 커널 수준 제한)을 적용할 수 없었습니다. 두 문제 모두 엔진이 만든 것이 아니라 제품이 고른 기본값이 만든 것입니다. 논문은 이를 두고 “엔진은 제 일을 해 왔고, 제품이 수정을 전달하지 않고 있다”고 적었습니다.

직접 확인한 값: 논문은 arrakis가 Cloud Hypervisor v44.0을 471일 이상 고정했다고 보고했습니다(측정 시점 2026-05경). 저희가 2026-09-09에 저장소를 직접 확인한 결과, setup/install-images.py의 해당 줄은 여전히 v44.0이었고 저장소의 마지막 커밋은 2025-06-02였습니다. 버전을 고정한 2025-02-04부터 오늘까지 582일이고, 그 사이 상류에서 태그된 릴리스는 13건(v45.0~v53.0)입니다. 582일과 13건은 공개된 고정 날짜와 릴리스 목록으로 저희가 계산한 파생값입니다.

arrakis는 자체 호스팅용 소규모 프로젝트입니다(별 869개). 여기서 요점은 특정 프로젝트를 지적하는 것이 아니라, 이 값이 누구나 몇 분이면 확인할 수 있는 자리에 공개돼 있다는 것입니다. 상용 제품이라면 오히려 확인이 어렵습니다 — 같은 논문에서 한 제품의 클라우드 호스팅 판은 고정된 버전을 밖에서 볼 수 없어 “확인 불가”로 분류됐습니다.

2층: 금지 목록의 대부분이 우회됐습니다

두 번째 논문은 터미널에서 도는 에이전트가 셸 명령을 걸러 내는 방식을 봤습니다(arXiv:2606.15549, 2026-06-14 공개 / 06-20 개정). 이런 에이전트는 대개 세 종류의 목록으로 명령의 실행 여부를 정하는데, 실제 판단을 좌우하는 것은 막을 명령을 나열해 둔 금지 목록(denylist)입니다.

저자들은 언어 모델에게 금지 목록을 우회할 명령을 제안하게 하고, 그것을 샌드박스에서 실제로 실행해 통과 여부를 검증하는 파이프라인을 만들었습니다. 제안만 받고 끝내지 않고 실행으로 확인했다는 점이 이 측정의 핵심입니다.

1,709
GitHub에서 수집한 실제 명령 금지 목록 수
13,332
그 목록들에 들어 있던 금지 규칙 수
69.0~98.6%
막으려던 작업의 우회를 놓친 목록의 비율 (작업 유형별)

이 범위를 정확히 읽어야 합니다. 논문은 금지 목록이 막으려는 작업을 일곱 가지 유형으로 나눈 뒤, 각 유형마다 “그 작업을 막으려 한 목록” 중 우회를 하나 이상 놓친 비율을 셌습니다. 69.0%는 가장 잘 막힌 유형, 98.6%는 가장 못 막힌 유형입니다. 전체 목록의 69%가 뚫렸다는 뜻이 아니라, 어떤 작업을 막으려 하든 그 목록의 최소 열에 일곱은 빠진 경로가 있었다는 뜻입니다.

가장 뼈아픈 대목: 논문은 관찰의 출발점으로 Claude Code에 내장돼 개발사가 관리하는 금지 목록조차 우회 명령을 놓칠 수 있다는 점을 들었습니다. 목록을 성의 없이 쓴 팀만의 문제가 아닙니다. 현대 운영체제가 제공하는 셸 명령의 수와 조합이 많아서, 같은 결과에 닿는 경로를 목록으로 다 막는 일 자체가 어렵습니다. 논문 제목이 “하나의 목표, 여러 개의 명령”인 이유입니다.

여기서 짚을 것은 측정 대상입니다. 이 결과는 연구자가 만든 가상의 정책이 아니라 개발자들이 실제로 써서 배포한 목록을 상대로 나왔습니다. 첫 번째로 인용한 종합 논문은 바로 이 점을 들어, 이 결과가 문헌 전체에서 가장 중요한 발견 축에 든다고 평가했습니다 — 방어 기법이 자기가 만든 공격자에게 강하다고 보고하는 것과, 현장에 배포된 정책이 실제로 뚫린다고 보고하는 것은 다른 주장입니다.

다만 논문이 내린 결론은 “목록을 더 잘 쓰자”가 아닙니다. 저자들은 고치려면 빠진 우회 명령을 전부 채워 넣어야 하는데 그 부담이 너무 크다는 점을 함께 보이고, 정적인 명령 문자열 금지 목록은 명령 통제의 주 방어층으로 부적합하다고 맺었습니다.

3층: 권한으로는 걸러지지 않는 행동

세 번째 논문이 이 글에서 가장 중요합니다(arXiv:2605.18583, 2026-05-18). 다루는 것은 공격이 아닙니다. 평범한 요청을 받은 에이전트가 요청하지 않은 일까지 하는 현상입니다 — 관련 없는 파일을 지우고, 오래된 자격증명 백업을 치우고, 언급된 적 없는 설정을 고쳐 씁니다.

저자들은 이것을 범위 밖 행동이라 부르고, 프롬프트 인젝션이나 샌드박스 탈출과는 다른 종류의 문제로 분류합니다. 형식 정의는 “요청이 허가한 행동 집합에 들어 있지 않으면서 파일을 바꾸거나 민감한 위치를 읽은 행동”입니다.

여기서 갈리는 지점이 중요합니다. 그 행동은 도구의 권한으로는 실행 가능합니다 — 셸도 파일도 이미 열려 있습니다. 다만 사용자가 시킨 범위 밖일 뿐입니다. 그래서 권한 규칙으로 걸러지지 않습니다. 규칙은 “이 행동 유형이 허용되는가”에 답하지, “지금 이 실행이 사용자가 시킨 것인가”에는 답하지 않습니다.

측정 규모

검증을 통과한 시나리오 500개를, 에이전트 제품 4종(Claude Code · OpenHands · Codex CLI · Gemini CLI)과 기반 모델 6종에 걸쳐 약 7,500회 실행했습니다. 50건을 다시 분류해, 두 평가자가 같은 자료에 같은 판정을 내리는 정도를 0~1로 나타내는 카파 계수로 일치도를 쟀습니다. 결과는 0.73으로, 실무에서 쓸 만한 일치로 봅니다.

발견 1 — 권한 범위 블록을 빼면 크게 올라갑니다

벤치마크를 만들다가 저자들이 걸린 문제가 있습니다. 프롬프트 안에 허가 범위를 적어 두면 에이전트가 작업 자체로부터 경계를 추론하는 대신 그 선언 문장을 패턴으로 맞추기 시작한다는 것입니다. 그래서 Authorized:OUT OF SCOPE: 를 담은 권한 범위 블록의 유무만 다르고 나머지는 바이트 단위까지 같은 시나리오 쌍을 만들어 짝지어 비교했습니다.

Claude Code에 GLM-4.6을 물린 조합에서 권한 범위 블록만 제거하자 범위 밖 행동 비율이 0.0%에서 17.1%로 올랐습니다. 작업도 모델도 그대로였고 바뀐 것은 그 블록 하나입니다. 짝지은 자료의 차이를 보는 맥니마 정확검정에서, 이 차이가 우연으로 나올 확률은 0.00024였습니다. 함께 시험한 기반 모델 셋 모두 같은 방향으로 올랐고(MiniMax-M2.7은 3.9%→21.1%, Sonnet-4.6은 3.9%→15.8%), 증가 폭은 두 백분율의 차를 뜻하는 퍼센트포인트로 11.9~17.2%p였습니다.
이 숫자를 크게 읽으면 안 됩니다. 논문이 직접 붙인 단서입니다. 위 값은 76개짜리 수작업 파일럿 세트에서 권한 범위 축 하나만 바꿔 잰 것이고, 저자들은 이것이 “민감한 하위집단에서 효과의 상한”이라고 명시했습니다. 시나리오를 다섯 개 축으로 무작위화한 본 벤치마크(500개)에서 같은 효과는 2.6%p로 떨어집니다 — 5.5~6.6배 희석입니다. 논문은 모집단 평균을 말할 때는 본 벤치마크 쪽을 기준으로 삼으라고 못박았습니다.

그래서 이 측정에서 가져갈 것은 17.1%라는 크기가 아니라 방향입니다. 에이전트는 작업의 경계를 스스로 이해한 것이 아니라 범위를 적어 둔 텍스트에 반응하고 있었고, 그 텍스트를 빼면 세 모델 모두에서 범위 밖 행동이 늘었습니다. 크기는 시나리오 구성에 따라 2.6%p까지 줄어듭니다.

발견 2 — 모델보다 프레임워크가 크게 작동합니다

더 큰 차이는 어느 모델을 쓰느냐가 아니라 어느 도구를 쓰느냐에서 났습니다.

논문의 분류해당 제품범위 밖 행동 비율
허용형으로 분류된 무리 Claude Code, Codex CLI, Gemini CLI 5.4~27.7%
확인 후 진행형으로 분류된 쪽 OpenHands 0.2~4.5%

두 무리의 차이가 우연일 확률은 피셔 검정에서 10만분의 1 이하였습니다. 같은 무리 안에서 기반 모델만 바꿨을 때의 편차는 최대 15.9%p였습니다. 저자들은 이를 두고 모델을 더 안전하게 조정해도 그 효과가 허용형 권한 통제를 온전히 통과하지 못한다고 적었습니다. 더 잘 정렬된 모델로 바꾸는 것이 이 문제를 대신 풀어 주지 않는다는 뜻입니다.

여기서 조심할 것: 이 실험은 네 제품 모두 대화형 확인을 꺼 놓고 돌렸습니다(Claude Code는 --dangerously-skip-permissions, OpenHands는 confirmation_mode=false, Codex는 --ask-for-approval=never). 그러니 이 표는 “매번 물어보게 하면 안전해진다”를 보인 것이 아닙니다. 확인 절차를 모두 끈 상태에서도 제품 사이에 큰 차이가 남았다는 뜻이고, 그 차이가 승인 설계에서 오는지 다른 구현 차이에서 오는지는 이 측정으로 갈라지지 않습니다. 제품과 결과의 연관이지 승인 절차의 인과가 아닙니다.
이 표를 읽는 법: 특정 제품을 쓰라는 결론이 아닙니다. 이 측정이 말해 주는 것은 선택의 축이 어디인지입니다 — 범위 밖 행동의 크기는 기반 모델보다 도구 쪽에서 더 크게 갈렸습니다. 어느 설계 요소가 그 차이를 만드는지는 아직 밝혀지지 않았습니다.

실제로 터진 네 건이 있던 자리

앞의 세 층은 측정입니다. 실제로 공개된 취약점은 어땠을까요. 종합 논문(arXiv:2607.05743, 2026-07-07)은 2023~2026년 논문 39편을 17개 범주로 정리하면서, 실제 제품에 영향을 준 취약점 네 건을 — CVE는 공개된 취약점 하나하나에 붙는 식별번호입니다 — 미국 국립취약점데이터베이스(NVD) 원문과 대조해 확인했습니다. 저희도 같은 네 건을 NVD API로 직접 다시 확인했습니다. CVSS는 취약점의 심각도를 나타내는 10점 만점 점수입니다.

CVE대상CVSS 3.1무엇이 가능했나수정
CVE-2024-21626 runc (컨테이너 런타임) 8.6 파일 디스크립터가 새어 나와, runc exec로 새로 뜬 컨테이너 프로세스의 작업 디렉터리가 호스트 쪽에 놓임 → 호스트 파일시스템으로 탈출. 별칭 “Leaky Vessels” (CWE-403/668/200) 1.1.12
CVE-2025-53773 GitHub Copilot / Visual Studio 2022 7.8 명령 주입으로 로컬에서 코드 실행 (CWE-77) 17.14.12
CVE-2025-59536 Claude Code 8.8 시작 시 신뢰 대화상자를 사용자가 수락하기 전에 프로젝트 안의 코드를 실행 (CWE-94). 신뢰하지 않는 디렉터리에서 실행했을 때 1.0.111
CVE-2026-21852 Claude Code 7.5 악성 저장소가 설정 파일에 ANTHROPIC_BASE_URL을 공격자 주소로 넣어 두면, 저장소를 여는 순간 신뢰 확인이 뜨기 전에 API 요청이 나가 키가 유출 (CWE-522) 2.0.65

네 건 중 컨테이너 격리를 실제로 뚫은 것은 첫 번째 하나입니다. 그것도 에이전트 도구가 나오기 전부터 있던 컨테이너 런타임의 결함으로, 에이전트 샌드박스가 같은 부품 위에 지어졌기 때문에 물려받는 종류입니다.

Copilot 건은 명령 주입으로만 기술돼 있어 신뢰 경계와 직접 엮이지 않습니다. Claude Code의 두 건이 같은 자리를 가리킵니다 — 신뢰하지 않는 저장소를 여는 시점과 사용자의 신뢰 판단이 실제로 효력을 갖는 시점 사이의 틈입니다. 둘 다 격리를 뚫은 것이 아니라 격리와 신뢰 판단이 적용되기 전에 일어났습니다.

확인한 시점과 실제로 쓰는 시점 사이에 상태가 바뀌는 문제TOCTOU(time-of-check to time-of-use)라고 부릅니다. 엄밀히 말하면 이 두 건은 확인 뒤에 상태가 바뀐 것이 아니라 확인이 끝나기 전에 실행이 앞질렀다는 쪽이라 고전적 정의와 딱 맞지는 않습니다. 다만 종합 논문은 “사용자가 이 프로젝트를 신뢰했는가”라는 확인을 뒤따르는 동작이 앞질렀다는 점에서 TOCTOU와 구조가 같은 검사 순서 문제로 분류했습니다. 종합 논문은 이 구조가 MCP(Model Context Protocol, 에이전트가 외부 도구를 붙이는 표준)의 도구 설명을 변조하는 공격과 구조가 같은데도 두 분야의 문헌이 서로를 인용하지 않는다는 점을, 다섯 가지 연구 공백 중 하나로 꼽았습니다.

표의 네 건은 모두 수정 버전이 나와 있습니다. Claude Code 두 건은 자동 업데이트를 쓰는 사용자에게 이미 배포됐습니다. 수정 버전 1.0.111은 2025-09-10, 2.0.65는 2025-12-11에 나왔고, 2026-09-09 기준 최신은 2.1.263입니다(npm 레지스트리 확인). 문제가 되는 쪽은 버전을 손으로 고정해 둔 환경입니다 — 3장에서 본 버전 고정 문제가 에이전트 도구 자체에도 그대로 적용됩니다.

점수를 하나만 믿지 마세요: CVE-2026-21852는 CVSS 3.1로는 7.5(High)지만 CVSS 4.0으로는 5.3(Medium)입니다. 같은 취약점에 두 체계가 다른 등급을 줍니다. 인용한 논문은 3.1 점수만 적었습니다. 심각도 숫자 하나로 대응 여부를 정하면 어느 체계를 봤느냐에 따라 판단이 갈립니다.

아직 아무도 측정하지 않은 것

종합 논문이 39편을 가로질러 읽고 찾은 공백 다섯 개 중, 실무에 바로 걸리는 셋을 옮깁니다.

정책을 잘못 쓰는 경우를 아무도 안 잽니다

검토한 모든 정책 집행 방식이 작성자가 정책을 정확하게 썼다고 가정한 채, 시스템이 그 정책을 제대로 집행하는지만 봅니다. 정책이 애초에 틀렸거나, 너무 넓게 허용됐거나, 서로 모순되는 경우를 다룬 연구가 없습니다. 실제로 배포된 목록이 막으려던 작업의 우회를 그렇게 자주 놓쳤다는 점을 감안하면, 정책 작성 오류가 집행 실패만큼 큰 위험원일 수 있는데도 측정되지 않은 자리입니다.

방어를 실제 실패율로 다시 시험하지 않습니다

격리와 접근 제어를 다룬 논문들은 저자가 직접 구성한 공격자에게 방어율을 보고합니다. 실제 배포 정책을 상대로 나온 우회 기법으로 자기 방어를 다시 시험한 논문은 없습니다. 종합 논문은 이 재평가에 새 인프라가 필요 없다고 지적합니다 — 공개된 우회 모음을 그대로 돌려 보면 됩니다.

세 번째 공백이 이 글의 3장입니다. 범위 밖 행동은 측정됐지만, 종합 논문이 다룬 어떤 접근 제어나 권한 메커니즘도 이것을 대상으로 설계돼 있지 않습니다. 권한 토큰이든 정책 규칙이든 사전 승인 게이트든, 전부 “이 행동 유형이 허가됐는가”를 전제로 만들어졌는데, 범위 밖 행동은 도구 권한으로는 실행 가능하면서 사용자가 시킨 범위 밖이라 그 질문에 걸리지 않기 때문입니다. 적어도 이 39편의 문헌 안에서는, 그 층을 겨냥해 설계된 메커니즘이 없습니다.

오늘 할 수 있는 것

앞의 측정에서 직접 따라 나오는 것만 적었습니다.

1. 에이전트 도구의 버전을 확인합니다

확인한 네 건은 모두 수정 버전이 나와 있고, 자동 업데이트를 쓰면 이미 받았습니다. 버전을 고정해 둔 환경이라면 지금 올리세요. Claude Code라면 2.0.65 이상이어야 두 건이 모두 해결됩니다.

2. 샌드박스 제품의 엔진 버전 고정을 확인합니다

격리 방식(microVM인지 컨테이너인지)보다 그 엔진 버전을 마지막으로 언제 올렸는지가 운영자에게 더 큰 변수였습니다. 오픈소스라면 설치 스크립트에서 하드코딩된 버전을 찾아보면 됩니다. 상용이라면 물어보고, 답을 못 주면 그 자체가 정보입니다.

3. 금지 목록을 방어선으로 세지 않습니다

금지 목록은 실수를 줄이는 보조 장치이지 공격을 막는 보안 경계가 아닙니다. 논문은 정적인 명령 문자열 목록이 주 방어층으로 부적합하다고 결론지었고, 개발사가 관리하는 내장 목록도 예외가 아니었습니다. 보안 경계는 명령 목록이 아니라 그 프로세스가 애초에 접근할 수 있는 자원의 범위로 정해야 합니다.

4. 작업 범위를 프롬프트에 적습니다

측정에서 가장 값싼 대응입니다. 무엇을 건드려도 되고 무엇은 안 되는지 적어 두면 범위 밖 행동이 줄었고, 이 방향은 시험한 세 모델 모두에서 같았습니다. 다만 크기는 기대하지 마세요 — 단일 축 실험의 17.1%p는 상한이고, 시나리오를 다양하게 섞으면 2.6%p까지 내려갑니다. 그리고 에이전트가 경계를 이해해서가 아니라 그 텍스트에 반응하는 것이므로, 대책이 아니라 완화로 다뤄야 합니다.

5. 되돌릴 수 없는 작업은 실행 전에 끊습니다

범위 밖 행동의 크기는 모델보다 도구 쪽에서 크게 갈렸습니다. 다만 그 실험은 확인 절차를 모두 끈 상태였으므로 “매번 물어보게 하라”는 처방은 거기서 나오지 않습니다. 대신 삭제·자격증명 변경·배포처럼 되돌리기 어려운 작업은 에이전트가 닿는 자리에서 아예 빼 두세요 — 권한을 안 주는 쪽이 확인을 거는 쪽보다 확실합니다.

6. 신뢰하지 않는 저장소는 여는 순간부터 위험합니다

Claude Code의 두 취약점 모두 신뢰 대화상자가 뜨기 전에 일어났습니다. 처음 보는 저장소는 확인 창을 믿지 말고, 격리된 환경에서 열거나 최소한 자격증명이 없는 환경에서 여세요.

이 블로그의 코딩 에이전트 보안 2026에서 “웹을 읽는 작업과 비밀을 다루는 작업의 실행 환경을 나누라”고 썼습니다. 이 글은 그 처방의 다음 질문에 해당합니다 — 나눈 그 환경이 실제로 얼마나 막아 주는가. 답은 “층에 따라 다르고, 가장 약한 곳은 격리가 아니라 범위”입니다.

아직 결론이 아닌 것

  • CVE 네 건은 예시이지 표본이 아닙니다. 종합 논문이 “실제로 터진 일”을 보이려고 고른 네 건이고, 무작위 표본도 전수도 아닙니다. 그래서 이 글은 네 건의 구성으로 “격리가 대체로 안전하다”거나 운영 문제가 더 흔하다는 빈도 결론을 내지 않았습니다. 네 건 중 하나는 실제 격리 탈출입니다.
  • 제품 비교는 다섯 종, 그것도 1부입니다. 엔진 비교 논문은 스스로 종합 순위를 매기지 않았고 “축 하나로는 판단할 수 없다”고 명시했습니다. 이 글에서 arrakis와 daytona를 대비시킨 것은 격리 등급이 운영 결과를 예측하지 못한다는 점을 보이기 위해서지, 두 제품의 우열을 말하려는 것이 아닙니다. 2부(런타임 수준)는 확인하지 못했습니다.
  • 582일과 13건은 저희가 계산한 값입니다. 버전을 고정한 커밋 날짜(2025-02-04)와 상류 릴리스 목록에서 2026-09-09 기준으로 셌습니다. 논문의 471일은 그보다 이른 측정 시점 기준이며, 두 숫자는 세는 시점이 다를 뿐 서로 어긋나지 않습니다.
  • 17.1%는 상한값이고, 한 조합의 값입니다. Claude Code에 GLM-4.6을 물린 한 셀에서, 76개짜리 수작업 파일럿 세트에 권한 범위 축 하나만 바꿔 잰 결과입니다. 논문 자신이 “민감한 하위집단에서 효과의 상한”이라고 적었고, 다섯 축을 무작위화한 본 벤치마크에서는 같은 효과가 2.6%p로 떨어집니다. 실무 업무 분포에서의 발생률은 어느 쪽으로도 알 수 없습니다.
  • 제품 간 차이의 원인은 밝혀지지 않았습니다. 실험은 네 제품 모두 대화형 확인을 끈 상태로 돌렸으므로, OpenHands가 낮게 나온 것을 “매번 묻기 때문”으로 읽을 수 없습니다. 제품마다 승인 외에도 구현이 다르고, 어느 요소가 차이를 만드는지는 이 측정으로 갈라지지 않습니다. 연관이지 인과가 아닙니다.
  • 보안 업체가 낸 샌드박스 탈출 보고들은 확인하지 않았습니다. 검색 과정에서 2026년 여러 건이 보였지만, 1차 자료로 대조할 수 없어 이 글에 넣지 않았습니다.
  • 세 논문 모두 사전 공개본(arXiv)입니다. 동료 심사를 거쳤는지 확인하지 못했습니다. 다만 셋 다 자료 출처(GitHub 수집 목록, 공개 저장소, NVD)를 밝히고 있어 값 자체는 추적 가능합니다.
  • 자체 측정은 버전 고정 확인 하나뿐입니다. 금지 목록 우회나 범위 밖 행동은 저희가 재현하지 않았고, 논문이 보고한 값을 원문에서 확인만 했습니다.
  • 금지 목록 편수에 논문 내부 불일치가 있습니다. 초록과 결론은 1,709개, 서론은 1,731개로 적혀 있습니다. 이 글은 둘이 일치하는 1,709를 썼습니다.

참고자료

자료성격이 글에서 쓴 것
AI Code Sandboxes: A Comparative Security Study (Part 1)
arXiv:2606.08433 · 2026-06-07
1차 (측정) 제품 다섯 종의 엔진 수준 비교, 상류 ≈0일 대 하류 0~471일 이상, arrakis / daytona 대비
One Goal, Many Commands: Characterizing Denylist Fragility in AI Agents
arXiv:2606.15549 · 2026-06-14 (v2 06-20)
1차 (측정) 금지 목록 1,709개 · 규칙 13,332개 · 작업 유형 일곱 가지별로 우회를 놓친 목록 비율 69.0~98.6%
Overeager Coding Agents: Measuring Out-of-Scope Actions on Benign Tasks
arXiv:2605.18583 · 2026-05-18
1차 (측정) 0.0%→17.1%, 증가폭 11.9~17.2%p, 허용형 5.4~27.7% 대 승인형 0.2~4.5%, 카파 0.73
The Balkanization of Execution-Security Research for AI Coding Agents
arXiv:2607.05743 · 2026-07-07
2차 (39편 종합) 17개 범주 분류, 다섯 개 공백, CVE 네 건의 선정. 개별 수치는 위 1차 논문에서 다시 확인했습니다
NVD — CVE-2024-21626 · CVE-2025-53773 · CVE-2025-59536 · CVE-2026-21852 1차 (공식) 네 건의 CVSS 점수·CWE·영향 버전·수정 버전. CVE-2026-21852의 실제 수법과 CVSS 4.0 점수, CVE-2024-21626의 8.6점과 수정 버전 1.1.12는 NVD에서 가져왔습니다
abshkbh/arrakis · Cloud Hypervisor 릴리스 1차 (직접 확인) 2026-09-09 확인 — v44.0 고정 유지, 마지막 커밋 2025-06-02, 상류 릴리스 13건, 582일

모든 수치는 2026-09-09에 원문에서 확인했습니다. 논문 값은 초록과 본문을 직접 읽어 대조했고, CVE는 NVD API 응답으로, 버전 고정 상태는 저장소 파일과 릴리스 목록으로 확인했습니다. 582일과 13건은 공개 날짜로부터 저희가 계산한 파생값입니다. 초고에서 69.0~98.6%의 기준 축, 17.1%의 적용 범위, 제품 간 차이의 인과 해석을 잘못 썼고, 발행 전 검토에서 지적받아 세 논문의 원문으로 다시 확인해 고쳤습니다.