Microsoft, 신뢰할 수 없는 코드 실행하는 샌드박스 시스템 MXC 공개
MXC - a sandboxed code execution system
Microsoft가 Windows, Linux, macOS에서 신뢰할 수 없는 코드를 안전하게 실행하는 샌드박스 시스템 MXC(Microsoft eXecution Container)를 공개했다. ProcessContainer, Bubblewrap, Seatbelt 등 OS별 백엔드를 통합 모델로 추상화하고, 파일시스템·네트워크·UI 접근을 JSON 정책으로 제어한다. Rust, .NET, Node SDK를 제공하며, 감사 모드로 거부된 접근을 기록해 정책을 다듬을 수 있다.
MXC는 신뢰할 수 없는 코드(모델 출력, 플러그인, 도구)를 Windows, Linux, macOS에서 실행하기 위한 샌드박스 코드 실행 시스템이다.
HN 토론
73- dannyw
이거 사실 꽤 괜찮아 보이네요. 물론 bubblewrap/seatbelt/processcontainer를 위한 프론트엔드/SDK라고 볼 수도 있겠지만, 그것들을 일관되게 설정하는 건 결코 사소한 일이 아니고, 직접 만드는 건 정말 나쁜 생각이에요(경험에서 말하는 겁니다).
런타임에 어떤 권한/설정이 필요한지 파악할 수 있는 '학습' 모드, MIT 라이선스, 명확한 선택적 텔레메트리 공개, 그리고 다소 가볍지만 여전히 읽을 만한 문서가 마음에 듭니다.
Microsoft에 대한 여러분의 시각과 무관하게, 이건 꽤 유용해 보이고, 명확한 목적을 수행하며, 잠깐 봐도 첫 버전임에도 불구하고 고품질 프로젝트처럼 보입니다.
- epage
이런 샌드박싱을 저수준과 고수준 모두 살펴보고 있었습니다.
그들의 Rust mxc-sdk API는 좋아 보이지만
- 그들의 "sdk"에 바이너리가 있고 빌드 스크립트에 그 바이너리를 위한 로직이 있습니다
- 그들의 빌드 스크립트가 모든 플랫폼에서 Windows 전용 작업을 합니다
- 일부 백엔드를 feature 뒤에 두지 않아서 빌드 스크립트 작업이 더 많아집니다(그리고 그 작업은 미래의 Cargo 버전에서 깨질 겁니다)
- 남은 빌드 스크립트 작업 중 적어도 일부는 빌드 스크립트일 필요가 없습니다
- 의존성이 꽤 많은 것 같습니다
- neobrain
이런 샌드박싱 솔루션 중에 최소한의 샌드박스로 시작해서 필요해질 때마다 비동기적으로 권한을 추가할 수 있는 동적 구성 요소가 있는 게 있나요? 하네스는 프로젝트 외 폴더에 접근할 때 이걸 시도하지만, 항상 엄격하게 강제되는 것도 아니고 일반적으로 취소할 수 없습니다. 하네스는 또한 결정이 내려질 때까지 에이전트 실행을 차단하는데, 이는 에이전트가 곧바로 대안 방법으로 진행할 수 있을 때도 진행이 이루어지도록 지속적인 모니터링을 요구합니다.
실수로 인한 `rm -rf`와 개인 데이터 유출을 방지하는 최소한의 샌드박스 아이디어는 좋아합니다. 하지만 그런 설정은 종종 해야 할 특정 작업에 방해가 됩니다. 이상적으로는 샌드박스가 차단된 접근들을 모아서 외부 TUI 대시보드에 노출하고, 거기서 접근을 활성화할 수 있으면 좋겠습니다(실행 중인 에이전트를 차단하지 않고, 왜냐하면 그건 "확인 누르기" 피로를 유발하기 쉽기 때문입니다).
이와 비슷한 게 이미 존재하나요?
- eminence32
약간 주제에서 벗어날 수 있지만, 저는 샌드박스 플러그인을 작성할 때 wasmtime과 wasm32-wasip3로 큰 성과를 보고 있습니다. Rust로 플러그인을 작성할 때 툴링은 꽤 괜찮은데, 다른 언어의 경우는 현재 어떤지 모르겠습니다.
wasip3는 아직 안정적이지 않지만, 비동기 코드와 통합하기 위한 (wasip2와 비교해) 많은 좋은 변경 사항이 있습니다
- kernc
거의 대부분 Rust인 350,000 SLOC [1] ... 그리고 업스트림 샌드박스는 벤더링조차 되어 있지 않습니다!
내가 파악하고 이해할 수 있는 것 위에 구축하는 게 훨씬 더 자신감 있을 것 같습니다. [2]