Agent Sandboxing
Cách ly agent chạy các lệnh và code do AI agent tạo ra trong môi trường biệt lập, giới hạn quyền truy cập vào tệp, mạng, thông tin xác thực và tài nguyên tính toán.
Sandboxing agent là thực hành chạy các hành động của AI agent, chẳng hạn như lệnh shell, code được tạo, chỉnh sửa tệp và duyệt web, trong một môi trường cô lập giới hạn các tệp, mạng, thông tin xác thực và tài nguyên tính toán mà những hành động đó có thể truy cập. Agent được xây dựng trên mô hình ngôn ngữ lớn (LLM) chọn từng lệnh dựa trên văn bản đã đọc, mà văn bản đó có thể sai hoặc độc hại. Sandbox thực thi các giới hạn ở cấp hệ điều hành hoặc hypervisor, nên các giới hạn vẫn được giữ nguyên ngay cả khi model làm theo một prompt injection ẩn trong trang web hoặc README, hay đơn giản là mắc lỗi.
Vì sao Agent cần Sandbox#
Gọi hàm và sử dụng công cụ biến văn bản của model thành hành động thực tế, vì vậy agent có thể chạy shell cũng có thể xóa tệp, đọc khóa SSH hoặc tải mã nguồn lên. Tài liệu hướng dẫn bảo mật AI Agent của OWASP liệt kê việc cho phép agent thực thi code tùy ý mà không có sandbox là một trong những thực hành cần tránh; OWASP Top 10 cho ứng dụng agentic, được công bố vào tháng 12 năm 2025, nêu việc thực thi code ngoài dự kiến là một trong mười rủi ro chính của các hệ thống agentic. Sandbox cũng giúp agent dễ sử dụng hơn: yêu cầu người dùng phê duyệt từng lệnh dẫn đến tình trạng mệt mỏi vì phải phê duyệt, còn Anthropic phát hiện rằng sandboxing Claude Code giảm 84% số yêu cầu cấp quyền trong quá trình sử dụng nội bộ, vì các lệnh nằm trong ranh giới không còn cần yêu cầu phê duyệt.
Sandbox Giới hạn những gì#
Sandbox dành cho agent thường kiểm soát năm yếu tố:
- Hệ thống tệp: Agent chỉ thấy một không gian làm việc tạm hoặc một repository duy nhất, thường dựa trên image chỉ đọc, và không thể đọc thông tin xác thực, hồ sơ trình duyệt hoặc dự án khác.
- Mạng: Lưu lượng đi ra bị chặn hoặc định tuyến qua proxy chỉ cho phép các miền trong danh sách, chẳng hạn như registry gói, để agent bị chiếm quyền không thể gửi dữ liệu đến máy chủ của kẻ tấn công.
- Thông tin xác thực: Bí mật được giữ bên ngoài sandbox hoặc được cung cấp dưới dạng token có thời hạn ngắn, giới hạn cho một tác vụ, theo nguyên tắc đặc quyền tối thiểu của bảo mật dữ liệu.
- Tài nguyên tính toán: Các giới hạn về thời gian CPU, bộ nhớ, số tiến trình và thời gian thực ngăn vòng lặp chạy mất kiểm soát và fork bomb.
- System call: Các bộ lọc như seccomp chặn những giao diện kernel mà công cụ của agent không bao giờ cần đến.
Mức độ cô lập phụ thuộc vào vị trí đặt ranh giới. Container Docker dùng chung kernel với host, vì vậy lỗ hổng kernel có thể giúp thoát khỏi container. gVisor bổ sung kernel ở không gian người dùng để chặn từng system call của container; microVM như Firecracker, được AWS xây dựng cho Lambda, cung cấp cho mỗi sandbox một kernel tối giản riêng, đồng thời khởi động trong chưa đến 125 ms với mức bộ nhớ bổ sung dưới 5 MiB. Các trình thông dịch code được lưu trữ và cloud coding agent thường chạy mỗi tác vụ trong một container hoặc microVM mới rồi hủy sau đó. Trên máy của nhà phát triển, sandbox Claude Code dùng Seatbelt trên macOS và bubblewrap trên Linux, chỉ cho phép lệnh shell ghi vào thư mục làm việc và một thư mục tạm, đồng thời định tuyến lưu lượng mạng qua proxy kiểm tra từng host theo allowlist.
Sandbox là một lớp trong agent harness, tức phần mềm thực thi các lệnh gọi công cụ của model. Harness kiểm tra từng hành động được đề xuất theo chính sách, chạy các hành động được phép bên trong sandbox và tạm dừng để người dùng phê duyệt trước những hành động không thể đảo ngược như thanh toán, triển khai hoặc gửi tin nhắn ra ngoài tổ chức:
Sandboxing Code được tạo#
Agent viết và chạy code, từ trợ lý phân tích dữ liệu đến công cụ lập trình agentic, cần các giới hạn chặt nhất vì code được tạo có thể làm mọi thứ mà trình thông dịch cho phép. Lớp bên trong cùng là cách ly tiến trình thông thường, có thể minh họa bằng thư viện chuẩn của Python: script này chạy code do model viết trong một thư mục dùng một lần, với môi trường trống và giới hạn thời gian CPU được thiết lập thông qua module resource (Linux và macOS).
import os
import resource
import subprocess
import sys
import tempfile
os.environ["API_KEY"] = "sk-live-123" # Một bí mật mà chính tiến trình của agent đang nắm giữ
# Code do model viết: đọc môi trường rồi lặp vô hạn
generated = "import os\nprint('API_KEY =', os.environ.get('API_KEY'), flush=True)\nwhile True: pass"
def limit_cpu():
"""Stop the child process after 2 seconds of CPU time."""
resource.setrlimit(resource.RLIMIT_CPU, (2, 2))
# Chạy ở chế độ cô lập, trong thư mục dùng một lần, với môi trường trống
cmd = [sys.executable, "-I", "-c", generated]
with tempfile.TemporaryDirectory() as workspace:
proc = subprocess.run(cmd, cwd=workspace, env={}, capture_output=True, text=True, preexec_fn=limit_cpu)
print(proc.stdout.strip())
print("exit code:", proc.returncode)Tiến trình con in ra API_KEY = None vì được khởi chạy với môi trường trống và không thể thấy bí mật của tiến trình cha; tiến trình kết thúc với mã -24, nghĩa là kernel đã chấm dứt tiến trình bằng SIGXCPU khi vòng lặp vô hạn chạm giới hạn CPU 2 giây. Container hoặc microVM bổ sung ranh giới hệ thống tệp và mạng xung quanh tiến trình này.
Sandboxing so với các cơ chế kiểm soát liên quan#
- Rào chắn an toàn AI: Bộ phân loại và quy tắc sàng lọc đầu vào, đầu ra hoặc hành động được đề xuất trước khi chúng được thực thi. Sandbox kiểm soát những gì hành động có thể làm sau khi được rào chắn an toàn cho phép.
- Quyền: Kiểm soát truy cập quyết định agent được phép sử dụng những công cụ và tài nguyên nào. Sandboxing thực thi các quyết định đó ở cấp hệ điều hành, bên dưới mọi bước kiểm tra mà model có thể tìm cách vượt qua bằng lời lẽ.
- Đóng gói container: Đóng gói phần mềm cùng các dependency để triển khai có thể tái tạo. Container trở thành sandbox khi chạy với quyền đã bị hạ, mount bị hạn chế và quy tắc lưu lượng đi ra.
- Sandbox kiểm thử: Bản sao phi sản xuất của hệ thống, nơi có thể thử phần mềm một cách an toàn. Sandbox dành cho agent bao bọc mọi hành động agent thực hiện, cả trong môi trường sản xuất lẫn phát triển.
Nơi sử dụng Sandbox cho Agent#
- Coding agent: Mỗi tác vụ được cấp một container hoặc máy ảo mới chứa một repository, nơi agent cài dependency, chạy kiểm thử và trả về diff để con người xem xét.
- Agent điều khiển máy tính: Agent điều khiển desktop hoặc trình duyệt bằng ảnh chụp màn hình và thao tác nhấp chuột sẽ chạy trong máy ảo có tài khoản riêng, vì bất kỳ trang nào agent xem cũng có thể chứa chỉ dẫn nhắm vào agent.
- Trình thông dịch code: Trợ lý phân tích bảng tính hoặc hình ảnh được tải lên chạy Python trong sandbox riêng cho từng phiên, thường không có quyền truy cập Internet.
- Máy chủ MCP và kỹ năng agent: Công cụ của bên thứ ba và script kỹ năng chạy bằng thông tin xác thực của người dùng, vì vậy các hệ thống lưu trữ thận trọng khởi chạy máy chủ và script cục bộ trong cùng ranh giới với shell của agent.
Các nền tảng agent được lưu trữ áp dụng những giới hạn tương tự cho quy trình làm việc của chính chúng. Agent của Ultralytics Platform, kết hợp phát hiện bằng YOLO26, model ngôn ngữ-thị giác và các khối cảnh báo, giới hạn mỗi lần chạy thử nghiệm được chia sẻ ở mức 60 giây, 20 ảnh đầu vào và 20 lần gọi model hoặc nhà cung cấp; khối Webhook chỉ gửi đến URL HTTPS công khai, không theo redirect và hết thời gian chờ sau 5 giây.










