- MXC(Microsoft eXecution Container) 는 AI 모델 출력, 플러그인, 도구처럼 신뢰할 수 없는 코드를 Windows, Linux, macOS에서 격리 실행하는 시스템
- 애플리케이션에 Rust, .NET, Node SDK로 내장하고, OS의 프로세스 샌드박스부터 VM까지 여러 실행 백엔드를 공통 API와 정책으로 사용 가능
- 파일 경로별 읽기/쓰기와 접근 차단, 네트워크 송수신, 클립보드와 GUI 접근을 제어하며, 실제로 강제할 수 있는 정책은 백엔드별로 다름
- 실행 명령과 격리 정책을 지정해 워크로드를 시작하고, 지원 백엔드에서는 지속형 컨테이너의 준비, 시작, 중지, 해제까지 관리 가능
- 접근 거부 원인을 분석하는 진단 기능을 제공하며, MIT 라이선스로 공개. --audit는 샌드박스 보안을 모두 끄므로 신뢰하는 도구의 정책 작성에만 사용
애플리케이션에 실행 격리를 내장
- 애플리케이션이 컨테이너 유형, 격리 규칙, 실행 명령을 지정하면 MXC가 요청을 검증하고 백엔드를 선택해 실행
- 컨테이너 생성 요청과 보안 정책은 버전이 지정된 JSON으로 표현하며, SDK도 버전이 지정된 API 제공
- SDK는 패키지 관리자로 설치할 수 있어 저장소를 복제할 필요 없음
- Rust: mxc-sdk
- .NET: Microsoft.Mxc.Sdk
- Node: @microsoft/mxc-sdk
- Node와 .NET 패키지는 네이티브 런타임 파일을 포함하고, Rust 크레이트는 SDK와 엔진, 선택한 백엔드를 애플리케이션에 빌드해 넣음
- SDK를 내장하기 어려운 환경에서는 JSON 생성 요청을 받는 플랫폼별 독립 실행기도 사용 가능
- SDK 예제, 표준 입출력 스트리밍 예제, API 참조 제공
플랫폼별 실행 백엔드
| 플랫폼 | 기본 백엔드 | 다른 백엔드 |
|---|---|---|
| Windows 11, x64/ARM64 | ProcessContainer | WSLC, IsolationSession, Windows Sandbox, MicroVM, Hyperlight |
| Linux, x64/ARM64 | Bubblewrap | LXC, MicroVM, Hyperlight |
| macOS, x64/ARM64 | Seatbelt | 별도 백엔드 없음 |
- Windows의 Windows Sandbox, MicroVM, Hyperlight는 실험적 백엔드
- Windows의 세부 요구사항은 OS 버전 지원 문서, 플랫폼별 전제 조건은 백엔드 가이드에서 확인 가능
- 지원 백엔드에서는 지속형 컨테이너를 준비하고 시작한 뒤 여러 작업을 실행하고 중지하거나 해제 가능
- macOS Seatbelt는 macOS 15 이상에서 프로세스 트리를 격리하며, 지속형 컨테이너의 연결과 수명주기 관리는 지원하지 않음
파일, 네트워크, UI 접근 정책
- 파일시스템: 읽기 전용, 읽기/쓰기 허용, 접근 금지 경로를 지정
- 네트워크: 외부 송신과 수신, 프록시 사용 등을 설정하며 세부 필터링 지원은 백엔드에 따라 다름
- UI: 클립보드, 화면과 GUI 접근 등을 제어
- README의 Node 예제는 외부 송신을 기본 차단하고 실행 제한 시간을 30초로 설정
macOS의 네트워크 제어 범위
- Seatbelt 백엔드는 외부 통신의 전체 허용/차단과 일부 로컬 연결 제어를 지원
- 호스트명이나 원격 IP, CIDR, 포트, 프로토콜별 직접 허용/차단은 지원하지 않음
- 외부 송신을 지정한 프록시 연결로 제한할 수 있지만, 목적지별 허용/차단 정책은 호출자가 관리하는 프록시에서 설정
- 프록시 설정을 따르지 않는 클라이언트의 트래픽을 자동으로 프록시에 돌려주는 방식은 아님
접근 거부 진단과 정책 작성
- 필요한 파일과 기능이 차단되어 실행에 실패하면 진단 결과를 바탕으로 격리 규칙을 조정
- 네이티브 실행기의 --debug로 MXC 진단 출력을 확인할 수 있으며, 자세한 내용은 진단 문서 제공
- --audit는 분석 대상의 모든 샌드박스 보안을 비활성화
- 신뢰할 수 없는 코드 실행에는 사용하면 안 됨
- 지원되는 Windows 환경에서 신뢰하는 도구의 실제 접근을 관찰하고, 필요한 파일과 기능을 허용하는 ProcessContainer 정책을 작성하는 용도
- 차단을 유지하면서 접근을 기록하는 진단 방식과 감사 결과물은 접근 거부 로깅 문서에서 확인 가능
텔레메트리와 라이선스
- Microsoft 공식 빌드의 진단 텔레메트리는 기본 비활성화
- 전송하려면 개별 실행의 수집 동의, Windows 사용자의 명시적 동의, 관리자 정책의 허용, 애플리케이션 요청의 텔레메트리 활성화 조건을 모두 충족해야 함
- 관리자는 수집을 차단할 수 있지만 사용자를 대신해 동의할 수는 없음
- 로컬 오픈소스 빌드는 Microsoft로 텔레메트리를 보내도록 구성되지 않으며, Windows 이외 플랫폼에서는 동작하지 않음
- 자세한 조건은 텔레메트리 정책 문서에서 확인 가능
- MIT 라이선스 로 제공하며, 복사본이나 주요 부분을 배포할 때 저작권과 허가 고지 유지 필요