AI Agent Có Quyền Root: Khi MCP Server Trở Thành Mối Đe Dọa Bảo Mật Nghiêm Trọng
Bài viết phân tích rủi ro bảo mật nghiêm trọng khi chạy MCP server cho AI agent mà không có cô lập (sandbox). Tác giả chỉ ra rằng MCP server chạy với UID của người dùng có toàn quyền truy cập SSH keys, AWS credentials, và toàn bộ hệ thống, mở ra nguy cơ bị tấn công qua prompt injection. Giải pháp được đề xuất là chạy MCP server trong container với quyền tối thiểu và cấu hình mặc định từ chối (default-deny).

AI Agent Có Quyền Root: Khi MCP Server Trở Thành Mối Đe Dọa Bảo Mật Nghiêm Trọng
Một bài viết mới trên blog Infernal Code đã gióng lên hồi chuông cảnh báo về một lỗ hổng bảo mật mà hầu hết lập trình viên đang bỏ qua: chạy MCP (Model Context Protocol) server cho AI agent mà không có bất kỳ lớp cô lập nào. Tác giả phát hiện ra rằng MCP server chạy với quyền của chính người dùng, có thể đọc mọi file, đánh cắp thông tin đăng nhập, và thực thi mã tùy ý — tất cả chỉ với một câu lệnh.
Vấn đề trở nên nghiêm trọng hơn khi kết hợp với prompt injection, cho phép kẻ tấn công điều khiển AI agent thông qua dữ liệu đầu vào. Bài viết đề xuất giải pháp container hóa với triết lý mặc định từ chối quyền, biến mọi khả năng truy cập thành tùy chọn.
Sự Thật Phũ Phàng: MCP Server Chính Là Bạn
Tác giả bắt đầu cuộc điều tra bằng cách in process tree và kiểm tra UID của MCP server mà coding agent của mình đang sử dụng. Kết quả không có gì bất ngờ: UID giống hệt tài khoản người dùng của anh ta. Điều này có nghĩa là MCP server không chỉ "giống" người dùng — nó chính là người dùng theo góc nhìn của kernel.
Hậu quả thực tế:
- Khóa SSH trong
~/.sshvà AWS credentials trong~/.aws/credentialshoàn toàn có thể bị đọc và gửi ra ngoài - Toàn bộ thư mục home có thể bị sửa, xóa, mã hóa mà không cần mật khẩu sudo
- Mọi file thuộc quyền sở hữu của bạn đều có thể bị thao túng
- Không có audit trail, không có giới hạn, không có cảnh báo
"Đó không phải là giả thuyết. Đó là POSIX hoạt động đúng theo thiết kế. Không cần khai thác bất kỳ lỗ hổng nào."
Prompt Injection: Véc Tơ Tấn Công Bị Đánh Giá Thấp
Trong khi hầu hết mọi người tập trung vào việc kiểm tra nguồn gốc MCP server (có mã nguồn mở không, ai bảo trì, có gọi API lạ không), tác giả chỉ ra một mối đe dọa lớn hơn nhiều: prompt injection.
Kịch bản đơn giản: bạn nhờ Claude tóm tắt một tài liệu nhận qua email. Tài liệu đó chứa một chỉ dẫn ẩn. Mô hình AI không có chế độ phân biệt "nội dung đang đọc" và "chỉ dẫn cần tuân theo" ở mức attention. Cả hai đều nằm trong cùng một context window.
Nếu MCP server không được sandbox, một prompt injection thành công có thể:
- Đọc và gửi đi toàn bộ thông tin đăng nhập của bạn
- Push code lên git remote bất kỳ
- Cài đặt phần mềm qua pip, npm, cargo
- Di chuyển ngang (lateral movement) tới các dịch vụ khác trong hệ thống
Giải Pháp: Container Hóa Với Triết Lý Từ Chối Mặc Định
Tác giả đã tự xây dựng công cụ tên là mcp-box để giải quyết vấn đề. Triết lý thiết kế đơn giản nhưng mạnh mẽ: chạy MCP server trong container với các thiết lập mặc định an toàn tuyệt đối.
Các mặc định quan trọng:
--cap-drop=ALL: Loại bỏ mọi capability của container- Tắt network mặc định: Chỉ bật khi bạn thêm cờ
--network bridgemột cách tường minh - Root filesystem chỉ đọc: Không thể cài đặt hoặc sửa đổi bất cứ thứ gì trong hệ thống
- Host UID mapping: File tạo ra trong container vẫn thuộc quyền sở hữu của bạn trên host, không cần lệnh
sudo chownsau đó
Điểm mấu chốt là inversion of posture: thay vì mặc định là "mọi thứ đều hoạt động" rồi khóa dần, mcp-box bắt đầu từ "không có gì" và bạn phải chủ động thêm từng quyền cần thiết.
Bài Học Cho Người Dùng Việt Nam
Cộng đồng lập trình viên Việt Nam ngày càng sử dụng AI agent và MCP server nhiều hơn — từ tự động hóa code review đến quản lý server. Tuy nhiên, thói quen "chạy cho xong" có thể dẫn đến hậu quả khôn lường. Hãy bắt đầu bằng cách:
- Kiểm tra UID của MCP server đang chạy:
ps aux | grep mcp - Kiểm tra network access: MCP server có thể truy cập internet không?
- Giới hạn quyền: Chỉ cấp quyền tối thiểu cần thiết cho từng task
Nếu câu trả lời là "UID giống tôi" và "không giới hạn", bạn đã trao cho AI agent quyền root mà không hề hay biết. Giống như tác giả đã nói: "You just haven't thought about it yet, but if you haven't I guarantee someone else has" (Bạn chưa nghĩ về điều đó, nhưng tôi đảm bảo ai đó khác đã nghĩ rồi).
Công cụ tham khảo: mcp-box trên GitHub — hỗ trợ Nix và Ubuntu/Debian.