- Cung cấp môi trường microVM Linux bảo mật để chạy an toàn mã không đáng tin cậy
- Ngăn rủi ro rò rỉ dữ liệu từ mã do LLM tạo ra hoặc mã người dùng thông qua bảo vệ khóa bí mật và kiểm soát truy cập mạng trong khi thực thi mã
- Có thể triển khai trực tiếp lên Deno Deploy từ môi trường phát triển bằng lệnh
sandbox.deploy(), không cần bước build hay xác thực riêng
- Với tính năng volume và snapshot, có thể nhanh chóng tái tạo cache, cơ sở dữ liệu và môi trường phát triển
- Phù hợp cho môi trường thực thi mã cần bảo mật như AI agent, hệ thống plugin, CI runner, v.v.
Tổng quan về Deno Sandbox
- Deno Sandbox cung cấp khả năng chạy mã không đáng tin cậy trong microVM Linux nhẹ trên đám mây Deno Deploy
- Có thể tạo thông qua JavaScript hoặc Python SDK, với thời gian khởi động dưới 1 giây
- Có thể tương tác trực tiếp qua SSH, HTTP và VS Code
- Nhắm tới việc giải quyết vấn đề bảo mật khi mã do LLM tạo ra hoặc mã do người dùng cung cấp thực hiện các lệnh gọi ra bên ngoài có chứa API key
- Mã chạy trong sandbox được bảo vệ bằng kiến trúc cô lập hệ thống và phòng thủ nhiều lớp (Defense-in-depth)
Secrets That Can’t Be Stolen
- Trong môi trường sandbox, khóa bí mật không bị lộ dưới dạng biến môi trường thực tế
- Bên trong mã chỉ có thể truy cập chuỗi placeholder
- Khóa thực chỉ được chèn vào khi có yêu cầu outbound tới host đã được phê duyệt
- Ví dụ,
OPENAI_API_KEY chỉ được kích hoạt khi gửi yêu cầu tới api.openai.com, và sẽ bị vô hiệu nếu bị rò rỉ sang domain khác
- Nhờ đó có thể chặn các nỗ lực đánh cắp khóa do prompt injection hoặc mã độc gây ra
Kiểm soát lưu lượng mạng đi ra
- Sandbox chặn mọi yêu cầu mạng ngoài danh sách host được cho phép (
allowNet)
- Ví dụ:
["api.openai.com", "*.anthropic.com"]
- Toàn bộ lưu lượng mạng được chặn tại ranh giới VM, và chính sách được áp dụng thông qua proxy outbound tương tự
coder/httpjail
- Trong tương lai dự kiến bổ sung phân tích kết nối outbound và hook lập trình để kiểm tra/chỉnh sửa yêu cầu
- Khi kết hợp với cờ
--allow-net của Deno, có thể tạo hai lớp bảo mật mạng
Từ sandbox lên production
- Với lệnh
sandbox.deploy(), có thể triển khai trực tiếp từ sandbox lên Deno Deploy
- Chuyển ngay môi trường phát triển thành production serverless mà không cần CI build hay quy trình xác thực riêng
- Trong ví dụ,
my-app được triển khai với tùy chọn production: true rồi xuất ra URL
- Nhờ đó có thể thực hiện triển khai serverless tự động mở rộng chỉ với một lệnh gọi
Lưu trữ trạng thái
- Theo mặc định, sandbox là ephemeral (tạm thời), nhưng nếu cần lưu trạng thái thì có các tính năng sau
- Volumes: bộ nhớ đọc/ghi dành cho cache, cơ sở dữ liệu và dữ liệu người dùng
- Snapshots: ảnh chỉ đọc bao gồm toolchain hoặc volume cơ sở
- Nếu tạo snapshot sau khi chạy
apt-get install, thì các sandbox về sau có thể khởi động ngay với môi trường đã cài sẵn
- Có thể tạo môi trường phát triển mới chỉ trong vài giây bằng volume dựa trên snapshot
Chi tiết kỹ thuật
- Khu vực: Amsterdam, Chicago
- vCPU: 2
- Bộ nhớ: 768MB ~ 4GB
- Vòng đời: tạm thời (ephemeral) hoặc dựa trên timeout, có thể gia hạn khi cần
- Thời lượng tối đa: 30 phút
- Thời gian khởi động: dưới 1 giây
- Trường hợp sử dụng phù hợp: thực thi mã của AI agent, hệ thống plugin bảo mật, CI runner tạm thời, môi trường chạy mã do người dùng cung cấp
Giá
- Nằm trong gói Deno Deploy và tính phí theo mức sử dụng
- Thời gian CPU: $0.05/h (gói Pro bao gồm 40 giờ)
- Bộ nhớ: $0.016/GB-h (gói Pro bao gồm 1000 GB-h)
- Lưu trữ volume: $0.20/GiB-month (gói Pro bao gồm 5 GiB)
- Gói Enterprise có thể liên hệ riêng
Bắt đầu
- Deno Sandbox được ra mắt ở bản beta, cung cấp cùng với đợt phát hành chính thức (GA) của Deno Deploy
- Tài nguyên chính
- Đội ngũ Deno mong chờ xem người dùng và AI agent sẽ xây dựng những dự án nào với Deno Sandbox
1 bình luận
Ý kiến trên Hacker News
Điều thú vị là bạn hoàn toàn không cần dùng Deno hay JavaScript
Có thể tạo sandbox, chạy lệnh, đọc/ghi tệp, v.v. thông qua SDK Python là deno-sandbox
Tôi đã xác nhận giao thức API hoạt động dựa trên WebSocket
Cách Deno Sandbox xử lý secret khá ấn tượng
Bên trong mã chỉ hiện placeholder thay vì khóa thật, và khóa thật chỉ được chèn vào khi gửi yêu cầu đến các host đã được phê duyệt
Ngay cả khi mã độc cố rò rỉ placeholder này ra ngoài thì nó cũng vô dụng
Nếu proxy cũng thay thế lại khóa ở chiều phản hồi thì sẽ khó hơn, nhưng có lẽ vẫn không phải là cơ chế phòng vệ hoàn hảo
Tiêm secret dựa trên proxy có hiểu ngữ cảnh có thể sẽ an toàn hơn
Ứng dụng không trực tiếp xử lý khóa, còn proxy sẽ tự thêm API key, qua đó giảm rủi ro lộ bảo mật
Secrets that can’t be stolen
Mã độc không thể đánh cắp vĩnh viễn secret, nhưng vẫn có thể dùng khóa đó để gửi các yêu cầu độc hại
Khá giống việc XSS không thể đọc cookie httpOnly nhưng vẫn có thể gửi request bằng chính cookie đó
Trong trường hợp đó, các tính năng như certificate pinning có thể sẽ khó hỗ trợ
Cũng muốn hỏi xem liệu họ có thêm thứ gì kiểu Vault hay không
Theo đội ngũ Deno, gần đây ngày càng có nhiều dịch vụ dạng nền tảng chạy trực tiếp mã do LLM tạo ra
Để loại mã này gọi được API bên ngoài thì cần thông tin xác thực thật và quyền truy cập mạng
Chỉ sandboxing thôi là chưa đủ, mà còn cần cả kiểm soát mạng và bảo vệ secret
Deno Sandbox cung cấp cả hai, và khi mã đã sẵn sàng thì có thể triển khai thẳng lên Deno Deploy
Đội của chúng tôi cũng đã tự xây một môi trường sandbox tương tự bằng Firecracker + Go
Vì vấn đề chủ quyền dữ liệu, dịch vụ phải chỉ chạy trong EU, nên có thể triển khai ở bất kỳ đâu miễn hỗ trợ ảo hóa phần cứng
Để LLM không trực tiếp đụng vào thông tin xác thực, chúng tôi tạo tức thời một CLI bị giới hạn phạm vi quyền để cung cấp cho nó
LLM chỉ việc gọi nó như gọi một lệnh bash
Vì các model mới nhất được huấn luyện như trợ lý lập trình, cách tiếp cận này tự nhiên và hiệu quả hơn nhiều
Cách thay thế secret khá thú vị, nhưng tôi nghi nó có thể hỏng trong các trường hợp thực tế cần biến đổi khóa như OAuth 1, JWT, HMAC
Ngoài ra, nếu khóa là một phần của payload thì việc thay thế còn có thể gây ra các vấn đề HTTP như Content-Length không khớp
Hơn nữa, cách này cũng vô dụng trước những kiểu tấn công khác như SQL injection
Cuối cùng thì nó có vẻ giống một biện pháp giảm thiểu từng phần hơn là một cơ chế phòng vệ hoàn chỉnh
Có gói miễn phí nên tôi muốn thử nghịch như Glitch, nhưng tôi luôn dè chừng vì từng thấy nhiều dịch vụ miễn phí như vậy bị đóng giữa chừng
Thiết kế placeholder cho secret có vẻ là một lựa chọn tốt
Nhưng dạo này có quá nhiều sản phẩm sandbox — Modal, Daytona, Fly, Cloudflare, Deno, v.v.
Tôi tò mò trong môi trường production thực tế thì mọi người đang dùng cái nào
Deno Sandbox nói rằng họ cung cấp Linux microVM nhẹ chạy trong đám mây Deno Deploy,
và điều tôi tò mò nhất là liệu nó có chạy được cả trong môi trường Linux tự host hay không
Nếu phát hành hoàn toàn mã nguồn mở thì AWS hay GCP sẽ sao chép ngay
Cảm giác như đang xây lâu đài bên trong sandbox của người khác, nhưng thực tế đó lại là mô hình kiếm tiền duy nhất
Nếu dùng Claude Pro hay gói Max trong môi trường này, tôi lo rằng việc kết nối từ IP khác nhau mỗi lần có thể khiến Anthropic hiểu nhầm là nhiều người dùng và chặn tài khoản
Tôi cũng tò mò vì sao phiên lại bị giới hạn 30 phút
Có vẻ Anthropic chỉ dùng heuristic để xác định liệu có phải con người đang trực tiếp sử dụng hay không