
오픈소스 샌드박스형 AI 에이전트 런타임 — gVisor/Docker 격리, 자격 증명 금고, 불변 감사 로그. CVE-2026-25253 이후 구축됨.
AI 에이전트를 위한 오픈소스 샌드박스 런타임
AI 에이전트를 안심하고 실행하세요. 모든 에이전트는 자체 권한 범위, 자격 증명 금고, 감사 추적, 킬 스위치를 갖습니다.
2026년 1월 27일, CVE-2026-25253은 에이전틱 AI 시스템에 부여된 최초의 CVE가 되었습니다. OpenClaw의 치명적인 WebSocket 하이재킹 취약점으로 인해 노출된 모든 인스턴스 — localhost에만 바인딩된 인스턴스까지 포함 — 에 대해 원클릭 원격 코드 실행이 가능해졌습니다.
같은 주, ClawHavoc 캠페인은 OpenClaw의 마켓플레이스에 341개 이상의 악성 스킬을 침투시켰습니다. ClawHub에서 설치된 모든 스킬은 OpenClaw 자체와 동일한 권한 — 전체 디스크 접근, OAuth 토큰, API 키 — 으로 실행되었습니다. 샌드박스도, 감사 추적도, 킬 스위치도 없었습니다.
"ClawHub에서 스킬을 설치하면 OpenClaw 자체와 동일한 리소스에 접근할 수 있습니다. 기본적으로 스킬 간 샌드박스 격리가 없습니다." — DEV Community 보안 분석, 2026년 4월
수치로 보는 현황:
AgentBox는 구조적 해결책입니다. 패치가 아니라 런타임입니다.
실행하는 모든 에이전트는 다음을 얻습니다:
| 보호 기능 | 방법 |
|---|---|
| 제로 트러스트 권한 | 에이전트는 정확히 필요한 것만 선언합니다. 그 외에는 접근할 수 없습니다. |
| 커널 수준 격리 | gVisor가 모든 시스템 콜을 가로챕니다. 프롬프트 인젝션은 이 경계를 넘을 수 없습니다. |
| 자격 증명 금고 | AES-256-GCM 암호화. 에이전트는 원시 비밀값을 절대 볼 수 없습니다 — 범위가 제한된 토큰만 볼 수 있습니다. |
| 변조 불가 감사 로그 | SHA-256 해시 체인. 모든 작업이 기록됩니다. 변조 감지 가능. |
| 킬 스위치 | 100ms 이내에 모든 에이전트를 종료합니다. 한도 위반 시 자동 종료. |
| 리소스 한도 | 시간, 메모리, 요청 수 — 구성이 아닌 런타임에서 강제됩니다. |
AgentBox 이전 AgentBox 이후
───────────────── ──────────────
에이전트 → 전체 디스크 ❌ 에이전트 → 허용된 경로만 ✅
에이전트 → 전체 네트워크 ❌ 에이전트 → 허용된 호스트만 ✅
에이전트 → 원시 비밀값 ❌ 에이전트 → 범위 제한 토큰 ✅
감사 추적 없음 ❌ 모든 작업 기록 ✅
킬 스위치 없음 ❌ <100ms 내 종료 ✅
스킬이 root로 실행됨 ❌ 커널 격리 샌드박스 ✅
# 설치
go install github.com/siyad01/agentbox/cmd/agentbox@latest
# 실행 전 매니페스트 검증
agentbox validate manifests/email-sorter.yaml
# 샌드박스에서 에이전트 실행
agentbox run --manifest manifests/email-sorter.yaml python agent.py
# 에이전트가 수행한 작업 확인
agentbox audit --log logs/email-sorter-audit.log
# 로그가 변조되지 않았는지 검증
agentbox verify logs/email-sorter-audit.log
# 비밀값 관리
agentbox vault add ANTHROPIC_API_KEY
agentbox vault list
모든 에이전트는 정확히 필요한 것만 선언합니다. 목록에 없는 것은 접근할 수 없습니다.
name: "email-sorter"
version: "1.0.0"
description: "받은 편지함을 읽고, 이메일을 분류하고, 정리된 폴더에 씁니다"
runtime: docker # 또는: gvisor (커널 수준), firecracker (MicroVM)
permissions:
filesystem:
read:
- "~/Documents/inbox"
write:
- "~/Documents/sorted"
deny: # 항상 차단 — 읽기 목록에 있어도
- "~/.ssh"
- "~/.aws"
- "~/.config"
- "/etc"
network:
allow:
- "api.anthropic.com"
- "gmail.googleapis.com"
deny:
- "*" # 그 외 모든 것 차단
tools:
allow:
- "read_file"
- "write_file"
- "list_*"
deny:
- "execute_shell" # 셸 접근 금지, 절대
- "*_delete" # 삭제 도구 금지
credentials:
- ANTHROPIC_API_KEY # 런타임에 금고에서 주입
- GMAIL_TOKEN # 에이전트는 원시 값을 절대 볼 수 없음
limits:
max_tokens: 50000 # LLM 토큰 예산
max_duration: "30m" # 30분 후 종료
max_memory_mb: 256 # RAM 상한
max_requests: 500 # 최대 도구 호출 수
audit:
log_level: full
alert_on:
- filesystem_deny
- network_deny
- token_budget_80pct
log_path: "logs/email-sorter-audit.log"
agentbox run --manifest agent.yaml python agent.py
│
▼
┌─────────────────────────────────────────────────────┐
│ 정책 엔진 │
│ 매니페스트 파싱 → 허용/거부 목록 생성 │
│ 서명 검증 → 서명되지 않은 스킬 거부 │
│ 금고에서 자격 증명 주입 │
└──────────────────────┬──────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ 격리 계층 │
│ │
│ Docker → 컨테이너 + seccomp + cap-drop │
│ gVisor → 사용자 공간 커널, 시스템 콜 가로채기 │
│ Firecracker → 에이전트별 전용 MicroVM 커널 │
│ │
│ 파일시스템: 선언된 경로만 마운트 │
│ 네트워크: 선언된 호스트만 연결 가능 │
│ Capabilities: 모두 제거, 추가 없음 │
└──────────────────────┬──────────────────────────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
감사 로거 자격 증명 리소스
(해시 체인) 금고 모니터
모든 작업 AES-256-GCM 한도 초과 시
기록 범위 제한 토큰 자동 종료
다른 모든 샌드박스는 컨테이너 경계에서 멈춥니다. 커널 취약점을 악용하는 에이전트는 탈출할 수 있습니다.
gVisor는 호스트 커널에 도달하기 전에 모든 시스템 콜을 가로챕니다:
에이전트 시도: write("/home/user/.ssh/id_rsa")
│
▼
gVisor 사용자 공간 커널
│
거부 목록에 있는 경로? → 예
│
▼
EPERM 즉시 반환
호스트 커널은 이 시스템 콜을 볼 수 없음
프롬프트 인젝션은 이 계층을 넘을 수 없음
agentbox <command> [options]
명령어:
run 샌드박스에서 에이전트 실행
validate 매니페스트 파일 검증
kill 실행 중인 에이전트 종료
audit 에이전트 감사 로그 보기
verify 감사 로그 무결성 검증
vault 암호화된 자격 증명 관리
serve REST API 서버 시작
version 버전 표시
예시:
agentbox validate manifests/email-sorter.yaml
agentbox run --manifest manifests/email-sorter.yaml python agent.py
agentbox kill agent-abc123
agentbox audit --log logs/email-sorter.log --deny
agentbox audit --log logs/email-sorter.log --last 1h
agentbox verify logs/email-sorter.log
agentbox vault add ANTHROPIC_API_KEY
agentbox vault list
agentbox vault delete OLD_KEY
agentbox serve :8081
agentbox serve로 시작합니다 (기본값: :8081).
| 메서드 | 엔드포인트 | 설명 |
|---|---|---|
| GET | /health | 상태 확인 |
| GET | /dashboard | 웹 대시보드 |
| GET | /api/agents | 모든 에이전트 목록 |
| POST | /api/agents | 새 에이전트 시작 |
| DELETE | /api/agents/:id | 에이전트 종료 |
| GET | /api/audit | 감사 로그 조회 |
# 실행 중인 에이전트 목록
curl http://localhost:8081/api/agents
# 에이전트 시작
curl -X POST http://localhost:8081/api/agents \
-H "Content-Type: application/json" \
-d '{"manifest":"manifests/email-sorter.yaml","command":["python","agent.py"]}'
# 에이전트 종료
curl -X DELETE http://localhost:8081/api/agents/abc123
# 감사 로그 조회
curl "http://localhost:8081/api/audit?deny=true&agent=email-sorter"
모든 에이전트 작업은 추가 전용, 해시 체인 방식의 JSON Lines 파일에 기록됩니다:
{"id":1,"hash":"a3f2...","prev_hash":"genesis","timestamp":"2026-05-05T09:00:00Z","agent_id":"abc123","agent_name":"email-sorter","event_type":"agent_start","allowed":true,"resource":"manifests/email-sorter.yaml"}
{"id":2,"hash":"b7c1...","prev_hash":"a3f2...","timestamp":"2026-05-05T09:00:01Z","agent_id":"abc123","agent_name":"email-sorter","event_type":"filesystem_allow","allowed":true,"resource":"read:/home/user/Documents/inbox/mail.txt","rule":"filesystem.read: ~/Documents/inbox"}
{"id":3,"hash":"d9e4...","prev_hash":"b7c1...","timestamp":"2026-05-05T09:00:01Z","agent_id":"abc123","agent_name":"email-sorter","event_type":"filesystem_deny","allowed":false,"resource":"read:/home/user/.ssh/id_rsa","rule":"filesystem.deny: ~/.ssh","reason":"path is explicitly denied"}
변조 감지:
agentbox verify logs/email-sorter-audit.log
✅ 감사 로그가 온전합니다
항목: 47 (ID 1–47)
해시 체인: 끊김 없음
항목의 문자 하나라도 변경하면 검증이 즉시 실패합니다 — 체인이 끊어집니다.