Sandbox Runtime 소개
Anthropic이 공개한 Sandbox Runtime(이하 srt)은 AI 에이전트나 신뢰할 수 없는 프로세스를 격리된 환경에서 실행하기 위해 Anthropic이 개발한 경량 샌드박싱 도구입니다. 최근 대규모 언어 모델(LLM)이 직접 코드를 생성하고 실행하는 코딩 에이전트(Coding Agent) 활용이 늘어나면서, 이들이 시스템의 중요 파일(예: SSH 키, 환경 변수)을 탈취하거나 의도치 않은 네트워크 요청을 보내는 보안 위협도 함께 증가했습니다. srt는 이러한 문제를 해결하기 위해, 무거운 가상머신(VM)이나 컨테이너 없이 운영체제(OS) 수준의 격리 기술을 활용하여 안전한 실행 환경을 제공합니다.
srt는 초기 Anthropic의 Claude Code 기능을 위해 연구용으로 개발되었으나, 현재는 오픈소스로 공개되어 누구나 자신의 AI 에이전트나 MCP(Model Context Protocol) 서버에 통합할 수 있습니다. 핵심 철학은 기본적으로 거부(Secure-by-Default) 입니다. 별도의 설정 없이는 네트워크 접근이 차단되고 파일 시스템 쓰기가 제한되며, 사용자가 명시적으로 허용한 경로와 도메인에 대해서만 접근이 가능합니다. 이를 통해 개발자는 AI가 생성한 코드를 로컬 환경에서도 안심하고 실행할 수 있습니다.
주의
: 현재 Sandbox Runtime은 연구용 미리보기 베타(Beta Research Preview) 단계로 제공되며, 향후 API 및 구성 형식 등이 변경될 수 있습니다. 또한, 더 안전한 AI Agent를 위해 다양한 피드백과 기여를 기다립니다.
The Sandbox Runtime is a research preview developed for Claude Code to enable safer AI agents. It's being made available as an early open source preview to help the broader ecosystem build more secure agentic systems. As this is an early research preview, APIs and configuration formats may evolve. We welcome feedback and contributions to make AI agents safer by default!
srt는 CLI(명령줄 도구) 및 라이브러리 형태를 모두 지원하여, 터미널에서 직접 명령어를 샌드박싱하거나 Node.js 애플리케이션 내에서 프로그래밍 방식으로 제어할 수 있습니다. 특히 macOS와 Linux 환경을 모두 지원하며, 각 OS에 내장된 네이티브 격리 기술을 활용해 성능 오버헤드를 최소화한 것이 특징입니다.
Anthropic의 Sandbox Runtime vs. 기존 컨테이너 기술(Docker) 비교
일반적으로 프로세스 격리에는 Docker와 같은 컨테이너 기술이 주로 사용되지만, srt는 이와 다른 접근 방식을 취합니다. Docker는 애플리케이션과 의존성을 패키징하여 배포하는 데 최적화되어 있어, 단순한 코드 실행 격리용으로 쓰기에는 리소스가 무겁고 설정이 복잡할 수 있습니다.
반면, srt는 컨테이너 이미지를 빌드할 필요 없이, 현재 호스트 OS의 바이너리를 그대로 사용하면서 권한만 제한하는 방식을 사용합니다. 또한,srt는 별도의 데몬이나 가상화 계층 없이 OS가 제공하는 기본 격리 기능(sandbox-exec, bubblewrap)을 직접 호출하므로 실행 속도가 빠르고 리소스 소모가 매우 적습니다.
특히, 일반적인 컨테이너가 파일 시스템 전체를 격리하는 것과 달리, srt는 특정 디렉토리만 읽기/쓰기를 허용하거나 특정 도메인으로의 네트워크 요청만 허용하는 등 AI 에이전트의 행동 패턴에 맞춘 세밀한 보안 정책(Policy) 수립에 특화되어 있습니다.
Sandbox Runtime의 주요 특징
srt의 구조 및 동작
srt는 각 운영체제에 내장된 강력한 샌드박싱 원시 기능(Primitives)을 래핑(Wrapping)하여 작동합니다.
-
Linux 환경: Bubblewrap(
bwrap)을 사용하여 네임스페이스(Namespace) 격리를 수행합니다. 이를 통해 파일 시스템 마운트 지점을 제어하고 네트워크 네임스페이스를 분리합니다. -
macOS 환경: Apple의 sandbox-exec 명령어와 Seatbelt 프로필을 동적으로 생성하여 커널 수준에서 프로세스의 시스템 호출을 제한합니다.
-
네트워크 격리: 단순히 포트를 막는 것을 넘어, 호스트에서 실행되는 프록시 서버를 통해 모든 트래픽을 라우팅합니다. 이를 통해 도메인 기반의 허용 목록(Allow-list) 필터링을 수행합니다.
주요 보안 기능 (Key Security Features)
-
파일 시스템 격리 (Filesystem Isolation):
- 읽기 제한(Read Restrictions): 기본적으로 읽기가 허용되지만, 민감한 파일. 접근은 차단할 수 있습니다.
- 쓰기 제한(Write Restrictions): 기본적으로 모든 쓰기 작업이 차단됩니다. 사용자가 명시적으로 허용한 디렉토리(예:
./output)에만 파일을 생성하거나 수정할 수 있습니다. - 경로 패턴: Linux는 리터럴 경로를, macOS는 Glob 패턴을 지원하여 유연한 정책 설정이 가능합니다.
-
네트워크 격리 (Network Isolation):
- Allow-only 패턴: 기본적으로 모든 외부 통신이 차단됩니다.
google.com,github.com등 허용된 도메인 리스트에 있는 주소로만 연결이 가능합니다.
- Allow-only 패턴: 기본적으로 모든 외부 통신이 차단됩니다.
-
소켓 차단 (Unix Socket Restrictions): 로컬 IPC(프로세스 간 통신) 소켓 생성을 차단하여, 격리된 프로세스가 호스트의 다른 서비스(예: Docker 데몬 등)에 접근하는 것을 방지합니다.
MCP 서버 지원
Sandbox Runtime은 Model Context Protocol (MCP) 서버를 실행할 때 특히 유용합니다. 외부 데이터에 접근해야 하는 MCP 서버를 srt로 감싸서 실행하면, 서버가 탈취되더라도 호스트 시스템에 미치는 영향을 최소화할 수 있습니다.
Sandbox Runtime 설치 및 의존성
srt는 npm 패키지로 제공되므로 Node.js 환경에서 쉽게 설치할 수 있습니다. 설치는 다음과 같이 가능합니다:
npm install -g @anthropic-ai/sandbox-runtime
srt는 Node.js 환경(npm)에서 설치되지만, OS 레벨의 격리 기술을 사용하기 때문에 플랫폼별 필수 패키지를 먼저 설치해야 합니다.
Linux 환경에서의 의존성
Linux 환경에서는 컨테이너 런타임인 bubblewrap, 소켓 중계를 위한 socat, 그리고 경로 탐지를 위한 ripgrep이 필요합니다.
- Ubuntu/Debian:
sudo apt-get install bubblewrap socat ripgrep - Fedora:
sudo dnf install bubblewrap socat ripgrep - Arch Linux:
sudo pacman -S bubblewrap socat ripgrep
선택적 의존성 (Seccomp Fallback): x86-64 및 ARM 아키텍처용 seccomp BPF 필터는 패키지에 포함되어 있습니다. 그 외 아키텍처를 사용하는 경우 필터 컴파일을 위해 다음 패키지가 추가로 필요합니다.
gcc또는clanglibseccomp-dev(Ubuntu/Debian),libseccomp-devel(Fedora),libseccomp(Arch)
macOS 환경에서의 의존성
macOS는 OS 자체 기능을 사용하므로 추가 의존성이 적지만, 파일 감지를 위해 ripgrep 설치가 필요합니다:
- Homebrew 사용 시:
brew install ripgrep - 또는 GitHub Releases에서 직접 다운로드할 수 있습니다.
Sandbox Runtime 사용법: CLI 및 Library 호출
CLI에서의 사용
CLI에서 사용 시에는 srt 명령어를 앞에 붙여 원하는 명령을 실행하면 즉시 샌드박스가 적용됩니다. 예를 들어, 다음과 같이 사용 할 수 있습니다:
# 기본 실행 (네트워크 차단, 쓰기 차단)
srt curl https://example.com
Running: curl example.com
Connection blocked by network allowlist
# -> 결과: 네트워크 차단으로 인해 실패함
# 특정 명령 실행 (정책 설정 필요)
srt --settings ./my-policy.json node script.js
# -> my-policy.json 파일 내 정책에 따라 `node script.js` 실행 가능 여부가 결정됨
다음은 설정 파일 예시(srt-settings.json)입니다:
{
"sandbox": {
"enabled": true,
"network": {
"allowLocalBinding": false
}
},
"permissions": {
"allow": [
"WebFetch(domain:github.com)",
"Edit(path:./src)",
"Read(path:.)"
]
}
}
위와 같은 설정에서는 GitHub.com 도메인으로의 접근, ./src 디렉토리의 파일들에 대한 편집, 현재 디렉토리(.) 파일들 읽기가 가능합니다.
Sandbox Runtime을 라이브러리로 사용하기
만약 AI 에이전트를 개발 중이라면, SandboxManager를 사용하여 코드 내부에서 동적으로 샌드박스를 제어할 수 있습니다:
import { SandboxManager } from '@anthropic-ai/sandbox-runtime';
import { spawn } from 'child_process';
// 1. 샌드박스 초기화 (프록시 서버 시작 등)
await SandboxManager.initialize();
// 2. 명령어에 샌드박스 적용
const sandboxedCmd = await SandboxManager.wrapWithSandbox('curl https://anthropic.com');
// 3. 프로세스 실행
const child = spawn(sandboxedCmd, { shell: true, stdio: 'inherit' });
// 4. 종료 처리
child.on('exit', async (code) => {
console.log(`Process exited with code ${code}`);
await SandboxManager.reset(); // 정리
});
Sandbox Runtime의 보안 제한 사항 및 주의점
srt는 강력한 도구이지만 만능은 아닙니다. 사용 시 다음과 같은 보안 제한 사항을 숙지해야 합니다:
-
네트워크 샌드박싱의 한계:
- 네트워크 필터링은 오직 접속 도메인만을 제한합니다. 프록시를 통과하는 트래픽의 내용(패킷) 자체를 검사하지는 않습니다.
github.com과 같이 광범위한 도메인을 허용할 경우, 이를 통한 데이터 유출(Data Exfiltration) 가능성이 존재합니다.- 도메인 프론팅(Domain Fronting) 기법을 통한 필터링 우회 가능성도 고려해야 합니다.
-
유닉스 소켓(Unix Sockets)을 통한 권한 상승:
allowUnixSockets설정은 신중하게 사용해야 합니다.- 예를 들어
/var/run/docker.sock접근을 허용할 경우, 샌드박스 내부에서 호스트의 도커 데몬을 제어하여 시스템 전체 권한을 탈취할 수 있습니다.
-
파일 시스템 권한 관리:
- 지나치게 넓은 범위의 쓰기 권한(Write Permissions)은 위험합니다.
- 특히
$PATH에 포함된 실행 파일 경로, 시스템 설정 폴더, 또는 사용자 쉘 설정 파일(.bashrc,.zshrc등)에 쓰기 권한을 부여하면, 다른 프로세스가 해당 파일을 실행할 때 악성 코드가 실행될 수 있습니다.
-
Linux Docker 환경 내 실행:
- Linux에서는 Docker 컨테이너 내부에서 작동하기 위해
enableWeakerNestedSandbox모드를 제공합니다. - 이 모드는 권한이 없는(unprivileged) 네임스페이스 환경에서 작동하도록 설계되었으나, 보안 격리 수준이 상당히 약화되므로 꼭 필요한 경우에만 사용해야 합니다.
- Linux에서는 Docker 컨테이너 내부에서 작동하기 위해
그 외, 현재 버전(Beta)에서는 Linux 프록시 우회나 위반 사항 모니터링의 제약 등, 알려진 몇 가지 기술적 제약 사항들(Known Limitations)이 존재합니다. 자세한 내용은 Sandbox Runtime의 GitHub 저장소를 방문하여 확인해주세요.
라이선스
Sandbox Runtime 프로젝트는 Apache License 2.0으로 공개 및 배포 되고 있습니다.
Anthropic Sandbox Runtime 프로젝트 GitHub 저장소
Claude Code 샌드박싱(Sandboxing)에 대한 Anthropic 블로그
더 읽어보기
-
CodeRunner: LLM의 코드를 안전하게 로컬에서 처리하는 프로젝트 (feat. Apple Container)
-
BoxLite: AI 에이전트를 위한, 안전하고 가벼운 샌드박스 런타임 (no daemon, no dependencies)
-
Daytona: AI 코드 실행 및 개발 환경을 위한 보안 샌드박스 인프라 및 오픈소스 개발 환경 관리 도구
-
ScreenEnv: 데스크탑 에이전트를 위한 Docker 기반 풀스택 자동화 환경 (feat. Hugging Face)
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()
