에이전트와 개발

Perplexity, 에이전트 샌드박스 SPACE 오픈소스 공개, 생성 지연 185ms→60ms

Perplexity가 자사 에이전트 작업 환경인 SPACE를 Apache 2.0 라이선스로 GitHub에 공개했다. 작업마다 별도 microVM을 쓰며, 자체 레드팀 시험에서 호스트 쪽 비밀 값에 닿은 경우는 108회 중 0회였다.

루카스 ·

Perplexity가 에이전트의 코드 실행을 격리하는 샌드박스 플랫폼 SPACE(Sandboxed Platform for Agentic Code Execution)를 오픈소스로 공개했다. Perplexity는 Perplexity Computer 세션의 100%가 SPACE에서 실행된다고 밝혔다. 코드는 Apache 2.0 라이선스로 GitHub에 올라 있다.1

SPACE는 에이전트 작업마다 Firecracker microVM을 하나씩 준다. 인증 정보와 외부로 나가는 트래픽은 VM 밖에서 통제한다. 공개된 버전은 0.8.0이며, 애플리케이션은 HTTP API와 서버 전송 이벤트(SSE)로 쓴다. 구현은 Rust지만 Rust 라이브러리를 직접 끼워 넣을 필요는 없다.1,2

작동 방식

템플릿이 시작 파일 시스템을 제공하고, 샌드박스는 그 템플릿에서 만든 인스턴스로 자기 VM과 쓰기 가능한 디스크를 갖는다. 한 샌드박스 안에서 명령을 여러 번 실행할 수 있다. 샌드박스 수명주기 변경은 비동기여서 API가 작업 ID를 돌려주면 완료 여부를 조회하는 방식이다. 명령 출력은 별도 데이터 연결과 세션 전용 토큰으로 주고받는다.2

각 샌드박스는 자체 게스트 커널을 가진다. 호스트에 있는 샌드박스별 네트워크 게이트웨이가 모든 외부 연결에 송신 정책을 적용한다. 비밀 값은 게스트 안으로 들어가지 않고 네트워크 계층에서 주입되며, 인증 정보 저장소는 계층별 범위 지정, 호출 제한, 감사 로그를 지원한다고 Perplexity는 7월 엔지니어링 글에서 설명했다. 시스템은 PostgreSQL 기반 API, 컨트롤러, 워커 서비스, 데이터 플레인으로 나뉘고 루트 파일 시스템은 btrfs 쓰기 시 복사 기능으로 만든다.

샌드박스 상태는 실행, 일시중지, 중단(suspended), 삭제 넷이다. 일시중지는 VM 메모리를 워커에 그대로 두는 것이라 영구 스냅샷이 아니다. 중단은 메모리, 런타임 상태, 루트 파일 시스템을 스냅샷으로 저장하고 활성 자원을 반납한다. 활동이 없으면 기본 6시간 뒤 중단된다. 빠른 생성을 위해 Kubernetes 배포는 미리 부팅한 샌드박스 풀을, 단일 노드는 기본 스냅샷을 쓴다.1

성능과 보안 시험

Perplexity는 이전 제공업체와 비교해 운영 환경의 생성 지연 시간 중앙값이 185ms에서 60ms로, 90번째 백분위수가 447ms에서 89ms로 줄었다고 밝혔다.

Perplexity의 레드팀 보고서 Escaping SPACE: Part I은 게스트 안에서 루트 권한을 가진 9개 모델을 2개 과제, 4개 설정으로 216회 시험했다. 호스트 쪽 비밀 값에 도달한 경우는 탈출 시험 108회 중 0회였고, 네트워크를 완전히 막은 설정의 우회도 54회 중 0회였다. 일부만 허용한 설정에서는 수정 전 54회 중 11회가 우회에 성공했다. Claude Opus 5.0, GPT-5.6 Sol, GPT-5.6 Cyber, Kimi K3 4개 모델이 경로를 찾았고 수법은 DNS 위조와 공유 CDN IP 주소였다.

Perplexity는 nftables로 출발지 주소 검증을 더했고, 게이트웨이가 TLS를 종료해 SNI와 HTTP 호스트를 허용 목록과 대조하게 했다. 재시험에서는 확인된 우회가 나오지 않았다. 같은 팀이 서드파티 플랫폼 10곳을 시험한 결과 8곳에서 네트워크 정책 우회가 하나 이상 나왔고, Perplexity는 해당 업체에 모두 알렸다고 밝혔다. 이 수치는 모두 Perplexity가 자체 수행한 시험이다.1

오픈소스 샌드박스 비교(MarkTechPost 정리, Perplexity 송신 시험 기준)1
항목Perplexity SPACEE2B RuntimemicrosandboxDaytona
격리 방식샌드박스별 Firecracker microVM샌드박스별 Firecracker microVMlibkrun microVM샌드박스별 전용 커널
라이선스Apache 2.0Apache 2.0Apache 2.0공개 저장소, 2026년 6월부터 관리 중단
언어RustGoRust미공개
호스트 요건Linux x86_64 + KVM미공개KVM이 있는 Linux미공개
송신 제어샌드박스별 게이트웨이, TLS 종료nftables 방화벽, SNI/Host 목록미공개미공개
Perplexity 송신 시험수정 후 우회 0건HTTPS 우회, 완화 예정HTTP·HTTPS 우회, v0.6.18에서 수정HTTPS 우회, 완화 공개
E2B SDK 지원ECW 래퍼로 지원네이티브미공개미공개

설치 조건과 버전 계획

설치 안내는 SPACE를 로컬 Kind 클러스터에 배포하는 방법을 다룬다. 호스트는 Linux x86_64에 KVM(/dev/kvm), /dev/net/tun, 루프 장치, btrfs, Docker가 필요하며 macOS는 지원하지 않는다. VM 안에서 돌리려면 중첩 가상화가 있어야 한다. 저장소에는 AWS EKS 참조 배포도 들어 있다.1

E2B를 쓰던 팀은 E2B Compatibility Wrapper(ECW)를 시험해 볼 수 있다. 검증된 기준은 Python 패키지 e2b==2.21.1이다. 스키마에서 incubating으로 표시된 필드는 지원 계약 밖이다.1,2

버전 문서에 따르면 0.8.0은 공개 기준선이고, 0.9.0이 마지막으로 예정된 호환성 파괴 릴리스다. 이후 0.9.x는 호환되는 개선과 안정화에 쓰고, 1.0.0에서 서비스와 샌드박스 수명주기 계약을 안정화한다. 1.0부터는 네이티브 HTTP API와 두 gRPC/protobuf API(워커 node-api, spaced-bridge)가 1.x 내내 하위 호환을 보장받는다. Rust 크레이트 API는 보장 대상이 아니다. 0.8 호스트는 spaced 게스트 0.1.0 이상 0.9.0 미만을 받아들인다.3

댓글

기사에 대한 의견이나 틀린 내용 제보를 남겨 주세요.

댓글을 불러오고 있습니다.