OpenClaw không lừa được tôi: Bài học bảo mật từ thời MS-DOS cho các AI Agent hiện đại
Bài viết phân tích những rủi ro bảo mật trong kiến trúc các AI Agent hiện đại như OpenClaw, so sánh chúng với thời kỳ thiếu an toàn của MS-DOS. Tác giả giới thiệu Wirken.AI như một giải pháp thay thế áp dụng các nguyên tắc bảo mật của Unix/Linux để đảm bảo an toàn hơn khi thực thi lệnh.

OpenClaw không lừa được tôi. Tôi vẫn nhớ MS-DOS.
Những ngày tháng đen tối của DOS là một ký ức đáng sợ. Bất kỳ chương trình nào cũng có thể đọc ghi trực tiếp vào nhân hệ thống (kernel), treo ngắt (hook interrupts) hoặc ghi dữ liệu lên bất kỳ vị trí nào của ổ cứng. Khi đó, an toàn thông tin là một khái niệm xa lạ.
Giải pháp cho vấn đề này không phải là một lớp bao bọc (wrapper) hay một dòng lệnh (shell) khác, mà là một cách tiếp cận hoàn toàn mới. Thế giới lúc đó đã có các vòng bảo vệ (rings), bộ nhớ ảo, danh sách kiểm soát truy cập (ACLs) và các không gian địa chỉ riêng biệt. Ba mươi năm của sự tách biệt mà Unix sở hữu từ đầu đã bị bỏ qua, và cuối cùng nó đã quay lại ám ảnh thế giới của DOS.
Tôi không nói rằng DOS không phổ biến. Chúa ơi, tôi nhớ một đêm đen tối ở một quán bar tại Chicago, một chuyên gia CNTT người Thụy Điển say xỉn đã nhảy lên bàn và hét lên: "Nghe hết cả nhà đi!". Trong lúc vung vẩy chiếc cốc bia, chân đi loạng choạng, ông ta nói rằng ông đến đây để làm việc trên các thiết bị điểm bán hàng (POS) của Wal-Mart chạy MS-DOS. Tại sao ông ta lại hành xử như thế? Ông ta hạnh phúc, rất hạnh phúc. Ông ta muốn chúng tôi biết ông yêu công việc của mình, kiểu như: "CÓ THỂ TIN ĐƯỢC KHÔNG WAL-MART CÓ HÀNG TRĂM NGÀN MÁY DOS CHỨA TẤT CẢ DỮ LIỆU THẺ THANH TOÁN CỦA CÁC BẠN KHÔNG?! HAHAHA! VÀ TẤT CẢ CHỈ CÓ MỘT MẬT KHẨU MÀ AI CŨNG BIẾT! CÁC BẠN CẦN KHÔNG? TÔI CÓ NGAY ĐÂY! TỰ DO, MỸ, ĐẸP QUÁ ĐỊ MẸ KÍA!".
Câu chuyện có thật. Cả gã đàn ông đó lẫn Wal-Mart đã đặt TẤT CẢ thông tin khách hàng lên MS-DOS với mức độ bảo mật bằng không.
Màn hình lỗi thời DOS
NCR vừa công bố một chiếc PC dựa trên MS-DOS... và chúng tôi quyết định xây dựng một giải pháp tùy chỉnh cho Wal-Mart. Tôi đã kết nối thành công một ngăn kéo tiền và máy in POS với chiếc PC mới, đồng thời viết một ứng dụng Layaway chuyên dụng bằng compiled MS Basic. Lần đầu tiên, Wal-Mart có thể lưu trữ thông tin khách hàng lên đĩa. Nhân viên thu ngân có thể tìm kiếm theo tên trong vài giây, và quan trọng hơn, hệ thống theo dõi chính xác hàng hóa được cất ở đâu trong kho sau. Đây là một bước tiến lớn về hiệu quả, và NCR cuối cùng đã triển khai nó cho tất cả các cửa hàng Wal-Mart.
Thông tin cá nhân chưa bao giờ bị lộ nhanh hơn thế! Hiệu quả to lớn thực sự. Khi Wal-Mart bị tấn công vào năm 2006, họ đương nhiên phải mất ba năm dài để thông báo cho bất kỳ ai. Thật hiệu quả.
Các cổng Agent (Agent gateways) hiện nay khiến tôi cảm thấy như chúng ta đang chạy ngược về thời kỳ MS-DOS. Bất kỳ lúc nào trong quán bar, tôi đều mong đợi một chuyên gia CNTT người Thụy Điển say xỉn đứng trên bàn vung một con tôm hùm, chửi bới về token duy nhất cho tất cả các agent. Bởi vì, thừa nhận đi, khi nhìn vào các cổng hiện tại, chúng có thể trao cho mô hình công cụ thực thi (exec tool) và tin tưởng nó. Một quy trình, một token, với LLM giữ thế trận.
Rõ ràng NVIDIA đã nhìn thấy cơn bão đang hình thành và do đó đã xuất bản một hướng dẫn chi tiết, đi qua quy trình thiết lập agent tự lưu trữ "NemoClaw" trên DGX Spark.
Sử dụng NVIDIA DGX Spark để triển khai OpenClaw và NemoClaw từ đầu đến cuối, từ phục vụ mô hình đến kết nối Telegram, với toàn quyền kiểm soát môi trường runtime của bạn.
Tôi đánh giá cao nỗ lực này. Kỹ thuật thực sự, được thực hiện cẩn thận. Tôi đã làm theo hướng dẫn để học hỏi và áp dụng nó trong Wirken – một cổng mà tôi đang xây dựng – để tài liệu hóa từng bước trông như thế nào.
Hướng dẫn yêu cầu bạn bind Ollama tới 0.0.0.0 để agent trong sandbox có thể tiếp cận nó qua không gian tên mạng (network namespace). Sau đó, nó kết nối bot Telegram bằng cách gửi mã qua kênh chat. Tiếp theo, nó phê duyệt các kết nối outgoing bị chặn trong một TUI riêng biệt ở phía máy chủ (host). Mỗi bước dường như là giải pháp cho một vấn đề thực sự, đó là làm thế nào để đặt bảo mật xung quanh thứ không hoạt động khi có bảo mật xung quanh nó. Đây là những gì kiến trúc yêu cầu khi sandbox bao bọc toàn bộ agent.
Hãy gọi tôi là cũ kỹ, nhưng tôi đã dự đoán nhiều điều này trong Wirken bằng cách mang lại sự an toàn hơn cho agent thông qua việc thu hẹp các ranh giới. Mỗi kênh là một quy trình riêng biệt với danh tính Ed25519 của riêng nó. Kho lưu trữ (vault) chạy ngoài quy trình. Suy luận (inference) giữ ở loopback vì agent nằm trên máy chủ. Shell exec chạy trong một container được gia cố (hardened container) được cấu hình ở lớp công cụ, thay vì cố gắng bao bọc xung quanh toàn bộ agent. Mười sáu tiền tố lệnh rủi ro cao sẽ yêu cầu xác nhận mỗi lần gọi; các lệnh khác là sử dụng lần đầu với bộ nhớ 30 ngày.
Dưới đây là những gì tôi tìm thấy, từng bước một
Bước so sánh giữa NemoClaw và Wirken.AI
-
Runtime
- NemoClaw: Đăng ký container runtime của NVIDIA với Docker, đặt chế độ namespace cgroup thành host. Thiết lập nền tảng vì agent chạy bên trong container.
- Wirken.AI: Không có bước tương đương. Cổng chạy dưới dạng quy trình máy chủ. Docker chỉ xuất hiện dưới dạng sandbox cho mỗi lần gọi công cụ shell exec, được cấp phát theo nhu cầu (lazy).
-
Ollama
- NemoClaw: Ghi đè OLLAMA_HOST thành 0.0.0.0 để agent trong sandbox có thể tiếp cận suy luận qua namespace mạng của chính nó.
- Wirken.AI: Ollama giữ ở 127.0.0.1. Agent là quy trình máy chủ, nên loopback là đủ.
-
Cài đặt
- NemoClaw: curl-pipe-bash từ URL của NVIDIA.
- Wirken.AI: curl-pipe-sh tương tự. Trình cài đặt xác minh chữ ký phát hành bằng ssh-keygen đối với khóa nhúng, đóng theo hướng an toàn (fail-closed) trên mọi đường dẫn lỗi. SHA của chính trình cài đặt được ghim trong README cho những người đọc muốn kiểm tra script trước khi pipe.
-
Mô hình
- Cả hai:
ollama pullmô hình, sau đóollama runđể tải trước trọng số vào bộ nhớ GPU.
- Cả hai:
-
Tích hợp (Onboarding)
- NemoClaw: Wizard tạo ra hình ảnh sandbox với chính sách và suy luận được tích hợp sẵn, như một đơn vị có thể xây dựng lại được đặt tên.
- Wirken.AI: Wizard ghi cấu hình nhà cung cấp và đăng ký kênh. Mô hình quyền hạn sống trong tệp nhị phân; trạng thái runtime là các khóa hành động nào đã được phê duyệt.
-
Telegram
- NemoClaw: Mã ghép đôi được gửi qua kênh chat; người dùng phê duyệt từ bên trong sandbox. Liên kết người dùng nền tảng với agent tại lần tiếp xúc đầu tiên.
- Wirken.AI: Token bot vào vault được mã hóa, cặp khóa Ed25519 mới cho bộ điều hợp, không có ghép đôi trong chat. Tính chi tiết của việc phê duyệt là theo từng hành động và từng agent thay vì theo từng người dùng kênh.
-
Web UI
- NemoClaw: URL Localhost với token khả năng trong đoạn (fragment), không hiển thị lại.
- Wirken.AI: URL Localhost, được bind vào loopback, không yêu cầu token.
-
Truy cập từ xa
- NemoClaw: Chuyển tiếp cổng phía máy chủ được bắt đầu qua OpenShell, sau đó là đường hầm SSH. Bước nhảy thêm này là vì UI sống bên trong netns.
- Wirken.AI: Chỉ đường hầm SSH. Trình nghe WebChat đã ở trên loopback của máy chủ.
-
Chính sách
- NemoClaw: Thực thi tại ranh giới netns. Các kết nối outgoing được hiển thị trong TUI với máy chủ, cổng và nhị phân khởi tạo. Phê duyệt cho phiên hoặc lưu liên tục.
- Wirken.AI: Thực thi tại lớp phân phối công cụ. Mười sáu tiền tố lệnh rủi ro cao luôn nhắc nhở; các lệnh khác là sử dụng lần đầu, nhớ trong 30 ngày. Các lệnh được phê duyệt chạy bên trong container Docker được gia cố với
cap_drop ALL,no-new-privileges, rootfs chỉ đọc, tmpfs 64MB tại/tmp, và không có mạng.
Giao diện dòng lệnh và Shell
Nhìn vào nhật ký kiểm toán của tôi
Các tuyên bố kiến trúc trên được ghi lại trong nhật ký của công việc hướng dẫn. Wirken sử dụng cơ sở dữ liệu kiểm toán được nối chuỗi băm (hash-chained) của phiên webchat, vì vậy dưới đây là cách nó trông giống như trong phiên bản 0.7.5.
Thứ nhất, sự từ chối Tier 3 đối với curl:
[ 4] assistant_tool_calls
call: exec({"command":"curl https://httpbin.org/get"})
[ 5] permission_denied
action_key='shell:curl' tier=tier3
[ 6] tool_result
tool=exec success=False
output: Permission denied: 'exec' requires tier3 approval.
[10] attestation
chain_head_seq=9
chain_head_hash=ff57c574ab503a74fa942ddb164def0df5bfbff05e5d5d6ecadcf127bce7e021
Lời gọi công cụ chưa bao giờ đến được sandbox. Sự từ chối được ghi lại như một sự kiện có kiểu trong chuỗi kiểm toán, được bao phủ bởi chứng thực mỗi lượt (per-turn attestation).
Thứ hai, sandbox được gia cố trên sh. Với shell:sh được phê duyệt trước tại Tier 2, cùng một agent đó chạy một lệnh ghép thăm dò ba vị trí:
[14] assistant_tool_calls
call: exec({"command":"sh -c \"touch /cannot_write_here 2>&1; ...\""})
[15] tool_result
tool=exec success=True
output:
touch: cannot touch '/cannot_write_here': Read-only file system
ws_ok=1
tmp_ok=1
[19] attestation
chain_head_seq=18
chain_head_hash=6bf35f22df02b496244091e54b4dbf9b3ffdcf6a03485413f0522b84e2eb08a8
Hệ thống tệp chỉ đọc là nhân từ chối mở tệp mới đối với điểm gắn chỉ đọc. Không phải là kiểm tra DAC, mà là chính rootfs. ws_ok=1 xác nhận điểm gắn workspace vẫn có thể ghi. tmp_ok=1 xác nhận tmpfs tại /tmp cũng vậy.
Cả hai biên lai đều là các hàng liên tiếp từ cùng một phiên, được nối chuỗi băm qua các chữ ký chứng thực tại seq 9 và seq 18. Các phiên wirken xác minh việc phát lại chuỗi và xác nhận mọi băm lá khớp với tải trọng của nó và mọi băm chuỗi khớp với SHA-256(prev_hash || leaf_hash).
Ranh giới của bạn lớn đến mức nào?
Các giải pháp thay thế trong hướng dẫn đang cố gắng tận dụng tốt nhất một nền tảng không tách biệt các mối quan tâm theo cách mà các kỹ sư thường thích. Bind tới 0.0.0.0 vì sandbox không thể tiếp cận loopback. Ghép đôi qua kênh chat vì không có mặt phẳng danh tính riêng biệt. Bọc toàn bộ agent trong một container vì bản thân agent chưa đáng tin cậy. Phê duyệt tại ranh giới netns vì lớp công cụ không có khái niệm về quyền hạn.
Mỗi bước là một sự thỏa hiệp; là phản hồi đối với một ràng buộc. Ràng buộc đó đáng để được xem xét lại như thể chúng ta đang ở năm 1985 một lần nữa và chúng ta có thể ngăn chặn Bill Gates.
Abort, Retry, Fail hôm nay nhưng ngày mai tôi hứa sẽ có một shell tốt hơn.
Năm 1973, Unix có sự tách biệt quy trình, sự tách biệt người dùng, quyền hạn tệp và đường ống giữa các chương trình nhỏ. Đến năm 1995, tôi dồn toàn lực cho Linux, tự xây dựng nhân và bắt đầu blog này tên là flyingpenguin, vì nó đã kế thừa những thứ đó và biến chúng thành mặc định.
Năm 2020, Microsoft cuối cùng cũng thừa nhận Linux là tương lai tốt hơn của họ, điều mà mọi người đều biết ngày nay.
Trở lại năm 2001, cựu CEO Microsoft Steve Ballmer nổi tiếng gọi Linux là "một căn bệnh ung thư" ... Trong một sự kiện [MIT năm 2020], [Chủ tịch Microsoft Brad] Smith đã nói: "Microsoft đã đứng sai về phía lịch sử".
Không gian agent vẫn còn sơ khai và một số người không bao giờ học từ quá khứ. Wirken là một cách tiếp cận về những gì nó trông giống như khi bạn nhớ lại. Như là, nhớ lại nỗi kinh hoàng thuần túy khi cố gắng bảo vệ bất cứ thứ gì trong DOS? Nhớ lại vụ vi phạm Wal-Mart năm 2006, được báo cáo vào năm 2009?
Đó chỉ là câu hỏi liệu chúng ta có áp dụng những gì lịch sử máy tính đã biết để làm cho các agent an toàn cho việc sử dụng hàng ngày hay không. Có hàng chục người khác đang làm các phiên bản Wirken của riêng họ, và tôi thực sự muốn nghe từ những người đang làm việc trên cùng một vấn đề này; các kiến trúc có thể hội tụ theo nhiều cách hơn một.
Kho lưu trữ: wirken.ai
Bài viết liên quan

Phần cứng
Anh điều tra thiết kế chip tiết kiệm năng lượng để giải quyết cơn khát điện của AI
20 tháng 4, 2026

Công nghệ
Nhân viên công nghệ Trung Quốc bị ép huấn luyện AI thay thế chính mình: Xu hướng gây tranh cãi
20 tháng 4, 2026

Phần mềm
Kinh tế ngôi sao giả trên GitHub: Khi 6 triệu sao ảo quyết định hàng triệu USD vốn đầu tư
20 tháng 4, 2026
