← 목록으로

프로그래밍은 특별하지 않다

요약
  • Microsoft는 신뢰할 수 없는 코드를 Windows, Linux, macOS에서 격리 실행할 수 있는 시스템인 MXC(Microsoft eXecution Container)를 공개했다.
  • MXC는 SDK를 통해 애플리케이션에 내장되어 파일, 네트워크, UI 접근 등을 제어하며, 다양한 플랫폼별 백엔드와 진단 기능을 제공한다.
  • 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 라이선스 로 제공하며, 복사본이나 주요 부분을 배포할 때 저작권과 허가 고지 유지 필요
그냥 목록으로
원문 보기 ↗