Khám phá microsoft/mxc: Hệ thống cô lập mã nguồn dựa trên chính sách do Microsoft phát triển bằng Rust

6 phút đọc

Trong bối cảnh các ứng dụng AI và hệ thống plugin tự động ngày càng phổ biến, việc thực thi an toàn các đoạn mã không đáng tin cậy như đầu ra của mô hình ngôn ngữ lớn (model output), các công cụ bên thứ ba hoặc plugin là một thách thức lớn. Để giải quyết vấn đề này, Microsoft đã phát triển repository microsoft/mxc – một hệ thống thực thi mã đóng hộp (sandboxed code execution) hoạt động đa nền tảng. Dự án hiện đã đạt được 1.392 stars cùng 91 forks trên GitHub, sử dụng ngôn ngữ lập trình Rust hiệu năng cao và có hoạt động cập nhật gần đây vào ngày 06/10/2026.

Kiến trúc cô lập đa tầng và cơ chế cấu hình thống nhất

Điểm nổi bật của microsoft/mxc là khả năng cung cấp nhiều backend cô lập khác nhau – từ các sandbox tiến trình gốc của hệ điều hành (OS-native process sandboxes) cho đến các máy ảo (VM) hoàn chỉnh. Toàn bộ các cơ chế phức tạp này được ẩn phía sau một cấu hình schema JSON thống nhất và một bộ TypeScript SDK tiện dụng cho các nhà phát triển Node.js.

Hệ thống phân chia các backend thành hai nhóm chính:

  • Các backend một lần ổn định (Stable one-shot backends): Bao gồm processcontainer, bubblewrap, lxc, seatbelt, wslc, và isolation_session. Các backend này không yêu cầu chế độ thực nghiệm. Riêng đối với môi trường Linux, máy chủ cần cài đặt sẵn các bộ công cụ tương ứng như bwrap (Bubblewrap) cho backend mặc định hoặc bộ công cụ lxc cho backend lxc.
  • Các backend thực nghiệm (Experimental backends): Bao gồm windows_sandbox, microvm, và hyperlight. Để kích hoạt các công nghệ này, lập trình viên bắt buộc phải thiết lập thuộc tính { experimental: true } trong SandboxSpawnOptions hoặc truyền thêm cờ --experimental thông qua giao diện dòng lệnh (CLI).

Khả năng thực thi chính sách của backend processcontainer trên Windows cũng phụ thuộc chặt chẽ vào phiên bản hệ điều hành. Các mức độ giới hạn về hệ thống tệp (filesystem), mạng (network) và giao diện người dùng (UI-restriction) sẽ có sự khác biệt rõ rệt giữa các phiên bản Windows 11 như 23H2, 24H2, 25H2 và các bản cập nhật mới hơn.

Chế độ kiểm tra chính sách (Audit Mode) và Giám sát vận hành

Để hỗ trợ các nhà phát triển trong việc xây dựng và tinh chỉnh chính sách bảo mật mà không làm gián đoạn quá trình vận hành của ứng dụng, microsoft/mxc cung cấp chế độ Audit Mode thông qua tham số --audit. Chế độ này hoạt động như một lớp bọc tương thích dựa trên tính năng captureDenials của tiến trình container.

Cảnh báo bảo mật từ nhà phát triển: Tham số --audit sẽ kích hoạt chế độ permissiveLearningMode. Trong suốt quá trình chạy ở chế độ này, các hạn chế của AppContainer sẽ không được thực thi nghiêm ngặt, cho phép các thao tác bị chặn vẫn có thể tiếp tục để ghi nhận lại nhật ký. Do đó, nhà phát triển chỉ nên sử dụng chế độ này cho mục đích thiết lập và viết chính sách bảo mật ban đầu.

Trên các hệ thống Windows tương thích, trình chạy ProcessContainer sẽ sử dụng API thu thập dữ liệu gốc. Đối với các phiên bản cũ hơn hoặc không tương thích, hệ thống sẽ tự động chuyển sang cơ chế dự phòng có giám sát (guarded-WPR), thiết lập kết nối an toàn qua một đường ống định danh nội bộ (named pipe) được xác thực để ghi lại các hành vi bị từ chối vào tệp denials.json và tệp vết trace.etl.

Ngoài ra, dự án hỗ trợ tùy chọn giám sát từ xa TraceLogging ETW trên Windows thông qua crate tracelogging của Rust. Các sự kiện có cấu trúc bao gồm MXC.Execution, MXC.Error và MXC.VerboseDenials sẽ được gửi đến hệ thống ETW nội bộ. Microsoft lưu ý rằng tính năng thu thập dữ liệu đo lường (telemetry) này mặc định bị tắt và chỉ hoạt động khi người dùng chủ động cấu hình "telemetry": { "enabled": true }.

Cách thức vận hành và tích hợp mã nguồn

Để sử dụng hệ thống, nhà phát triển cần biên dịch mã nguồn Rust thành các tệp nhị phân phù hợp với nền tảng đích, sau đó sao chép tệp nhị phân này vào thư mục sdk/node/bin/<arch>/ để đóng gói cùng SDK.

Cú pháp khởi chạy CLI cơ bản trên các nền tảng được thiết lập như sau:

  • Trên Windows: Sử dụng lệnh wxc-exec.exe --version để kiểm tra nhanh phiên bản mà không cần tệp cấu hình hoặc chạy sandbox. Đối với các yêu cầu thực thi, các đối số phía sau ký tự phân tách -- sẽ được tự động phân tích và đưa vào lệnh chạy của backend đã chọn.
  • Trên Linux: Khởi chạy thông qua lệnh ./lxc-exec config.json.
  • Trên macOS: Sử dụng lệnh thực nghiệm ./mxc-exec-mac --experimental config.json.

Bên cạnh đó, SDK của MXC còn cung cấp một API vòng đời (lifecycle API) cho các container có tính chất hoạt động lâu dài (persistent containers), cùng với API probe (như probeSandboxSupport trong Node.js hoặc MxcSandbox.Probe trong .NET) để truy vấn thông tin môi trường của máy chủ và kiểm tra khả năng hỗ trợ của hệ thống mà không cần phải khởi tạo một sandbox thực tế.

Những điểm cần lưu ý thêm

Mặc dù tài liệu kỹ thuật của dự án mô tả chi tiết về các tệp cấu hình JSON, kiến trúc phân tầng của Rust workspace và cơ chế hoạt động của từng backend, tài liệu nguồn hiện tại vẫn chưa cung cấp các số liệu đo lường cụ thể về hiệu năng (benchmark) so sánh giữa việc chạy các backend siêu nhẹ như hyperlight hay microvm với các giải pháp container truyền thống như lxc. Người dùng cần tự thử nghiệm thực tế trên hạ tầng của mình để xác định mức hao phí tài nguyên CPU và bộ nhớ cho từng use case cụ thể.

Nguồn tham khảo: Xem bài gốc