Hệ thống MCP (Giao thức ngữ cảnh mô hình) vẫn đang trong giai đoạn phát triển ban đầu. Môi trường chung tương đối hỗn loạn và nhiều phương pháp tấn công tiềm tàng xuất hiện liên tục. Thật khó để phòng thủ trước những cuộc tấn công này với thiết kế giao thức và công cụ hiện tại. Để giúp cộng đồng hiểu rõ hơn và cải thiện tính bảo mật của MCP, SlowMist đã mở mã nguồn công cụ MasterMCP, hy vọng có thể giúp mọi người phát hiện kịp thời các rủi ro bảo mật trong thiết kế sản phẩm thông qua các cuộc diễn tập tấn công thực tế, từ đó từng bước củng cố các dự án MCP của riêng mình.
Đồng thời, bạn có thể sử dụng danh sách kiểm tra bảo mật MCP của số trước để hiểu rõ hơn về các góc nhìn cơ bản của nhiều cuộc tấn công khác nhau. Lần này, chúng tôi sẽ đưa bạn đến phần thực hành thực tế và trình diễn các phương pháp tấn công phổ biến trong hệ thống MCP, chẳng hạn như đầu độc thông tin, ẩn hướng dẫn độc hại và các trường hợp thực tế khác. Tất cả các tập lệnh được sử dụng trong bản trình diễn cũng sẽ được mở mã nguồn trên GitHub (xem liên kết ở cuối bài viết). Bạn có thể tái tạo toàn bộ quá trình trong một môi trường an toàn và thậm chí phát triển các plug-in kiểm tra tấn công của riêng mình dựa trên các tập lệnh này.
Tổng quan về kiến trúc tổng thể
Mục tiêu tấn công trình diễn MCP: Toolbox
smithery.ai là một trong những trang web plug-in MCP phổ biến nhất, thu thập được số lượng lớn danh sách MCP và người dùng đang hoạt động. Trong số đó, @smithery/toolbox là công cụ quản lý MCP được smithery.ai ra mắt chính thức.

Việc lựa chọn Toolbox làm mục tiêu thử nghiệm chủ yếu dựa trên các điểm sau:
Nó có lượng người dùng lớn và mang tính đại diện;
Nó hỗ trợ cài đặt tự động các plug-in khác và bổ sung một số chức năng của máy khách (như Claude Desktop);
Nó chứa các cấu hình nhạy cảm (như Khóa API) để dễ dàng trình diễn.
MCP độc hại được sử dụng trong bản trình diễn: MasterMCP
MasterMCP là một công cụ MCP độc hại được mô phỏng do SlowMist viết riêng cho mục đích thử nghiệm bảo mật. Nó sử dụng thiết kế kiến trúc plug-in và chứa các mô-đun chính sau:
1. Mô phỏng dịch vụ trang web cục bộ: http://127.0.0.1:1024
Để khôi phục tình huống tấn công một cách thực tế hơn, MasterMCP có mô-đun mô phỏng dịch vụ trang web cục bộ tích hợp sẵn. Nó sử dụng khuôn khổ FastAPI để nhanh chóng xây dựng một máy chủ HTTP đơn giản nhằm mô phỏng môi trường web chung. Các trang này có vẻ bình thường trên bề mặt, chẳng hạn như hiển thị thông tin về tiệm bánh hoặc trả về dữ liệu JSON chuẩn, nhưng trên thực tế, các nội dung độc hại được thiết kế cẩn thận lại ẩn trong mã nguồn trang hoặc giao diện trả về.
Theo cách này, chúng ta có thể chứng minh đầy đủ các phương pháp tấn công như đầu độc thông tin và ẩn lệnh trong một môi trường cục bộ an toàn và có thể kiểm soát được, giúp mọi người hiểu trực quan hơn: ngay cả một trang web có vẻ bình thường cũng có thể trở thành nguồn nguy hiểm tiềm ẩn khiến các mô hình lớn thực hiện các hoạt động bất thường.

2. Kiến trúc MCP plug-in cục bộ

Demo client
Mô hình lớn được sử dụng trong bản trình diễn
Phiên bản Claude 3.7 được chọn vì nó đã có một số cải tiến nhất định trong khả năng nhận dạng hoạt động nhạy cảm và thể hiện khả năng hoạt động mạnh mẽ hơn trong phiên bản hiện tại Hệ sinh thái MCP.
Cấu hình claude_desktop_config.json
{ "mcpServers": { "hộp công cụ": { "lệnh": "npx", "đối số": [ "-y", "@smithery/cli@latest", "chạy", "@smithery/toolbox", "--config", "{\"dynamic\":false,\"smitheryApiKey\":\"ec1f0fa8-5797-8678-sdaf-155d4584b133\"}", "--key", "ec1f0fa8-5797-8678-sdaf-155d4584b133" ] }, "MasterMCP": { "lệnh": "/Người dùng/xxx/Máy tính để bàn/EvilMCP/bin/python", [và lưu ý;
Gọi lệnh độc hại xuyên MCP

Bản trình diễn này bao gồm hai nội dung: Đầu độc danh sách kiểm tra và gọi lệnh độc hại xuyên MCP.
Cuộc tấn công đầu độc nội dung trang web
1. Đầu độc bình luận (tham khảo một phần: https://x.com/lbeurerkellner/status/1912145060763742579)
Con trỏ truy cập trang web thử nghiệm cục bộ http://127.0.0.1:1024.
Đây có vẻ là một trang vô hại về "Thế giới bánh ngon". Thông qua thử nghiệm này, chúng tôi mô phỏng tác động của một mô hình máy khách lớn khi truy cập vào một trang web độc hại.

Thực hiện hướng dẫn:
Lấy nội dung của http://127.0.0.1:1024

Kết quả cho thấy Cursor không chỉ đọc nội dung trang web mà còn gửi dữ liệu cấu hình nhạy cảm cục bộ trở lại máy chủ thử nghiệm. Trong mã nguồn, các từ nhắc độc hại được cấy dưới dạng chú thích HTML:

Mặc dù phương pháp chú thích tương đối đơn giản và dễ nhận biết, nhưng nó có thể kích hoạt các hoạt động độc hại.
2. Bình luận bị đầu độc được mã hóa
Truy cập trang http://127.0.0.1:1024/encode, đây là trang web trông giống như ví dụ ở trên, nhưng các từ khóa độc hại được mã hóa, khiến cho exp bị đầu độc ẩn sâu hơn và khó phát hiện trực tiếp ngay cả khi truy cập được mã nguồn của trang web.

Ngay cả khi mã nguồn không chứa lời nhắc dạng văn bản thuần túy, cuộc tấn công vẫn được thực hiện thành công. Nguyên tắc cụ thể sẽ được giải thích chi tiết ở các chương sau.

Công cụ MCP trả về thông tin đầu độc

Chúng tôi dựa trên trên Từ nhắc của MasterMCP chỉ ra để nhập lệnh mô phỏng của chúng tôi (lệnh này không có ý nghĩa thực tế và nhằm mục đích kích hoạt MCP độc hại của chúng tôi để chứng minh các hoạt động tiếp theo của MCP độc hại): get a lot of apple

Bạn có thể thấy rằng sau khi lệnh được kích hoạt, máy khách gọi Hộp công cụ trên MCP và thêm thành công máy chủ MCP mới:

Khi xem mã plug-in, có thể thấy dữ liệu trả về đã được nhúng các tải trọng độc hại được mã hóa và phía người dùng khó có thể phát hiện ra sự bất thường.
Tấn công làm ô nhiễm giao diện của bên thứ ba
Mục đích chính của cuộc biểu tình này là để nhắc nhở mọi người rằng dù là MCP độc hại hay không độc hại, khi gọi API của bên thứ ba, nếu dữ liệu của bên thứ ba được trả trực tiếp về ngữ cảnh, nó có thể gây ra hậu quả nghiêm trọng.
Mã mẫu:

Thực hiện yêu cầu:
Lấy json từ http://127.0.0.1:1024/api/data

Kết quả: Các từ nhắc độc hại đã được cấy vào dữ liệu JSON trả về và kích hoạt thành công việc thực thi độc hại.
Công nghệ đầu độc trong giai đoạn khởi tạo MCP

Bản trình diễn này bao gồm hai nội dung: lệnh chèn từ nhắc ban đầu và xung đột tên trong Danh sách kiểm tra.
Tấn công ghi đè hàm độc hại
Tại đây, MasterMCP đã viết một công cụ có tên hàm giống như Toolbox, remove_server và mã hóa và ẩn các từ nhắc độc hại.

Lệnh thực thi:
hộp công cụ xóa máy chủ plugin lấy

Claude Desktop không gọi phương thức `toolbox remove_server` gốc, mà kích hoạt phương thức cùng tên do MasterMCP cung cấp:

Nguyên tắc là nhấn mạnh rằng "phương thức gốc đã bị bỏ rơi" và ưu tiên kích hoạt mô hình lớn để gọi hàm bị ghi đè độc hại.
Thêm logic kiểm tra toàn cục độc hại
Tại đây MasterMCP đã viết một công cụ tương tự như banana. Chức năng cốt lõi của công cụ này là buộc tất cả các công cụ thực hiện kiểm tra bảo mật trước khi chạy trong từ nhắc.


Trước khi thực hiện từng chức năng, hệ thống sẽ ưu tiên gọi cơ chế kiểm tra chuối:
Các kỹ thuật tiên tiến để ẩn các từ nhắc độc hại
Các phương pháp mã hóa thân thiện với mô hình lớn
Do khả năng phân tích cú pháp mạnh mẽ của Mô hình ngôn ngữ lớn (LLM) cho các định dạng đa ngôn ngữ, nó được sử dụng để ẩn thông tin độc hại. Các phương pháp phổ biến bao gồm:
Công cụ được đề xuất: Bộ giải mã Hex
Công cụ được đề xuất: Công cụ chuyển đổi Unicode R12a
Cơ chế trả về tải trọng độc hại ngẫu nhiên
Như đã đề cập trong Chương 2, khi yêu cầu http://127.0.0.1:1024/random, giao diện của bên thứ ba bị ô nhiễm:


Mỗi lần như vậy, một trang có nội dung độc hại sẽ được trả về ngẫu nhiên, làm tăng đáng kể độ khó phát hiện và truy tìm.
Tóm tắt
Thông qua phần trình diễn thực tế về MasterMCP này, chúng ta có thể trực quan thấy được nhiều rủi ro bảo mật tiềm ẩn trong hệ thống Giao thức bối cảnh mô hình (MCP). Từ việc chèn từ khóa nhắc nhở đơn giản và các lệnh gọi MCP chéo cho đến các cuộc tấn công giai đoạn khởi tạo bí mật hơn và ẩn lệnh độc hại, mọi liên kết đều nhắc nhở chúng ta rằng mặc dù hệ sinh thái MCP rất mạnh mẽ nhưng cũng rất mong manh.
Đặc biệt là ngày nay khi các mô hình lớn ngày càng tương tác nhiều hơn với các plug-in và API bên ngoài, ngay cả một lượng nhỏ ô nhiễm đầu vào cũng có thể gây ra rủi ro bảo mật ở toàn bộ cấp độ hệ thống. Sự đa dạng trong các phương pháp tấn công (ẩn mã, lây nhiễm ngẫu nhiên, phủ sóng chức năng) cũng có nghĩa là các ý tưởng bảo vệ truyền thống cần được nâng cấp toàn diện.
Sự an toàn không bao giờ có thể đạt được chỉ sau một đêm.
Tôi hy vọng bản trình diễn này có thể đóng vai trò như một lời cảnh tỉnh cho mọi người: cả nhà phát triển và người dùng đều cần phải cảnh giác cao độ về hệ thống MCP và luôn chú ý đến mọi tương tác, mọi dòng mã và mọi giá trị trả về. Chỉ bằng cách chú ý chặt chẽ đến từng chi tiết, chúng ta mới có thể thực sự xây dựng được một môi trường MCP ổn định và an toàn.
Tiếp theo, chúng tôi sẽ tiếp tục cải thiện tập lệnh MasterMCP và mở mã nguồn các trường hợp thử nghiệm có mục tiêu cụ thể hơn để giúp mọi người hiểu sâu sắc, thực hành và tăng cường bảo vệ trong môi trường an toàn.
Thi. Nội dung có liên quan đã được đồng bộ hóa với GitHub (https://github.com/slowmist/MasterMCP). Bạn đọc quan tâm có thể nhấp vào đọc văn bản gốc ở cuối bài viết để chuyển trực tiếp.