Sự tiêm nhiễm và thao túng ẩn trong hệ thống MCP: Trình diễn thực tế
MCP (Mô Hình Ngữ Cảnh Giao Thức) hệ thống hiện đang ở giai đoạn phát triển sớm, môi trường tổng thể khá hỗn loạn, nhiều phương thức tấn công tiềm ẩn xuất hiện liên tục, thiết kế các giao thức và công cụ hiện có khó có thể phòng thủ hiệu quả. Để giúp cộng đồng hiểu rõ hơn và nâng cao tính bảo mật của MCP, Slow Mist đã đặc biệt mã nguồn mở công cụ MasterMCP, hy vọng thông qua các bài thực hành tấn công thực tế, giúp phát hiện các lỗ hổng bảo mật trong thiết kế sản phẩm, từ đó dần dần củng cố dự án MCP.
Bài viết này sẽ hướng dẫn mọi người thực hành các phương thức tấn công phổ biến trong hệ thống MCP, chẳng hạn như tiêm thông tin độc hại, ẩn giấu các lệnh độc hại, và các trường hợp thực tế khác. Tất cả các kịch bản trình diễn cũng sẽ được mã nguồn mở, mọi người có thể tái hiện toàn bộ quy trình trong môi trường an toàn, thậm chí phát triển các plugin thử nghiệm tấn công của riêng mình dựa trên các kịch bản này.
Tổng quan về kiến trúc tổng thể
Mục tiêu tấn công mẫu MCP:Toolbox
smithery.ai là một trong những trang web plugin MCP phổ biến nhất hiện nay, tập hợp nhiều danh sách MCP và người dùng hoạt động. Trong đó, @smithery/toolbox là công cụ quản lý MCP do smithery.ai chính thức phát hành.
Chọn Toolbox làm mục tiêu thử nghiệm, chủ yếu dựa trên các điểm sau:
Cơ sở người dùng lớn, có tính đại diện
Hỗ trợ cài đặt tự động các plugin khác, bổ sung một số chức năng của khách hàng ( như Claude Desktop )
Bao gồm cấu hình nhạy cảm ( như API Key ), thuận tiện cho việc trình diễn
Mục đích sử dụng MCP độc hại: MasterMCP
MasterMCP là công cụ mô phỏng MCP độc hại được Slow Mist phát triển đặc biệt cho kiểm tra an ninh, sử dụng thiết kế kiến trúc plugin, bao gồm các mô-đun chính sau:
Dịch vụ mô phỏng trang web địa phương:
Để tái hiện chân thực hơn cảnh tấn công, MasterMCP đã tích hợp mô-đun mô phỏng dịch vụ web cục bộ. Nó nhanh chóng xây dựng máy chủ HTTP đơn giản thông qua khung FastAPI, mô phỏng môi trường trang web phổ biến. Những trang này bề ngoài có vẻ bình thường, như hiển thị thông tin tiệm bánh hoặc trả về dữ liệu JSON tiêu chuẩn, nhưng thực tế trong mã nguồn trang hoặc phản hồi API ẩn chứa tải trọng độc hại được thiết kế tinh vi.
Kiến trúc MCP plugin hóa địa phương
MasterMCP sử dụng cách tiếp cận plugin hóa để mở rộng, thuận tiện cho việc thêm nhanh các phương thức tấn công mới sau này. Sau khi chạy, MasterMCP sẽ chạy dịch vụ FastAPI của mô-đun trước đó trong một tiến trình con. ( Có nguy cơ an ninh đã tồn tại ở đây - plugin cục bộ có thể tùy ý khởi động tiến trình con không phải là mong đợi của MCP ).
ứng dụng demo
Cursor: Một trong những IDE hỗ trợ lập trình AI phổ biến nhất toàn cầu hiện nay
Claude Desktop:Anthropic(MC giao thức tùy chỉnh ) ứng dụng chính thức
mô hình lớn được sử dụng cho trình diễn
Claude 3.7
Chọn phiên bản Claude 3.7, vì nó đã có những cải tiến nhất định trong việc nhận diện các thao tác nhạy cảm, đồng thời đại diện cho khả năng thao tác mạnh mẽ trong hệ sinh thái MCP hiện tại.
Gọi ác ý Cross-MCP
Bản trình bày này bao gồm hai nội dung: tiêm độc và gọi xấu Cross-MCP.
tấn công tiêm nhiễm nội dung web
Tiêm độc kiểu chú thích
Cursor truy cập trang web thử nghiệm cục bộ.
Đây là một trang "Thế giới bánh ngọt ngon" có vẻ vô hại, chúng tôi thông qua thí nghiệm này, mô phỏng tác động gây ra bởi việc khách hàng của mô hình lớn truy cập vào các trang web độc hại.
Thực hiện lệnh:
Lấy nội dung của
Kết quả cho thấy, Cursor không chỉ đọc nội dung trang web mà còn truyền dữ liệu cấu hình nhạy cảm cục bộ về máy chủ thử nghiệm. Trong mã nguồn, các từ khóa độc hại được chèn dưới dạng chú thích HTML.
Mặc dù cách chú thích khá thẳng thừng, dễ bị nhận diện, nhưng đã có thể kích hoạt các hành động độc hại.
Tiêm độc chú thích mã hóa
Truy cập trang /encode, đây là một trang web trông giống như ví dụ trước, nhưng các từ khóa độc hại đã được mã hóa, điều này làm cho việc tiêm mã độc trở nên khó phát hiện hơn, ngay cả khi truy cập mã nguồn của trang web cũng khó nhận ra.
Ngay cả khi mã nguồn không chứa từ gợi ý rõ ràng, cuộc tấn công vẫn được thực hiện thành công.
Thông tin trả về công cụ MCP bị tiêm độc
Theo hướng dẫn từ MasterMCP, nhập lệnh mô phỏng (. Lệnh này không có ý nghĩa thực tế, nhằm kích hoạt MCP độc hại để trình diễn các thao tác tiếp theo của nó ):
lấy nhiều táo
Có thể thấy, sau khi kích hoạt lệnh, khách hàng đã gọi Toolbox qua MCP và thành công thêm máy chủ MCP mới.
Xem mã plugin có thể phát hiện, dữ liệu trả về đã nhúng mã độc đã được xử lý mã hóa, người dùng gần như không thể phát hiện ra sự bất thường.
Tấn công ô nhiễm giao diện bên thứ ba
Bản trình bày này chủ yếu nhằm nhắc nhở rằng, bất kể là MCP ác ý hay không ác ý, khi gọi API của bên thứ ba, nếu trực tiếp trả dữ liệu của bên thứ ba vào ngữ cảnh, đều có thể mang lại ảnh hưởng nghiêm trọng.
Thực hiện yêu cầu:
Lấy json từ /api/data
Kết quả: Các từ gợi ý độc hại đã được chèn 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.
Kỹ thuật tiêm độc trong giai đoạn khởi tạo MCP
Bản trình bày này bao gồm hai nội dung là tiêm từ gợi ý ban đầu và xung đột tên.
tấn công ghi đè hàm độc hại
Ở đây MasterMCP đã viết một công cụ với cùng tên hàm remove_server như Toolbox, và mã hóa ẩn các từ khóa độc hại.
Thực hiện lệnh:
công cụ hộp công cụ xóa plugin máy chủ
Claude Desktop không gọi phương thức remove_server của toolbox ban đầu, mà đã kích hoạt phương thức cùng tên do MasterMCP cung cấp.
Nguyên lý là thông qua việc nhấn mạnh "phương pháp ban đầu đã bị loại bỏ", ưu tiên dẫn dắt mô hình lớn gọi các hàm bị ghi đè độc hại.
Thêm logic kiểm tra toàn cầu độc hại
Ở đây MasterMCP đã viết một công cụ banana, chức năng cốt lõi của nó là yêu cầu tất cả các công cụ phải thực hiện công cụ này để kiểm tra an toàn trước khi chạy.
Trước mỗi lần thực hiện hàm, hệ thống sẽ ưu tiên gọi cơ chế kiểm tra banana.
Đây là việc tiêm logic toàn cầu bằng cách nhấn mạnh "phải chạy kiểm tra banana" trong mã.
Kỹ thuật nâng cao để ẩn các từ gợi ý ác ý
cách mã hóa thân thiện với mô hình lớn
Do vì mô hình ngôn ngữ lớn (LLM) có khả năng phân tích định dạng đa ngôn ngữ rất mạnh, điều này đã bị lợi dụng để ẩn giấu thông tin độc hại, các phương pháp thường dùng bao gồm:
Trong môi trường tiếng Anh: Sử dụng mã hóa Hex Byte
Môi trường tiếng Trung: sử dụng mã NCR hoặc mã JavaScript
cơ chế trả về tải trọng độc hại ngẫu nhiên
Như đã đề cập trong chương hai về ô nhiễm giao diện bên thứ ba, khi yêu cầu /random:
Mỗi lần sẽ ngẫu nhiên trả về một trang có tải trọng độc hại, làm tăng đáng kể độ khó trong việc phát hiện và truy nguyên.
Tóm tắt
Thông qua buổi trình diễn thực chiến của MasterMCP, chúng ta đã trực quan nhìn thấy những nguy cơ an ninh tiềm ẩn trong hệ thống Model Context Protocol (MCP). Từ việc tiêm từ khóa đơn giản, gọi chéo MCP, đến các cuộc tấn công giai đoạn khởi tạo ẩn danh hơn và việc ẩn giấu lệnh độc hại, mỗi khía cạnh đều nhắc nhở chúng ta: mặc dù hệ sinh thái MCP mạnh mẽ, nhưng cũng rất dễ bị tổn thương.
Đặc biệt trong bối cảnh các mô hình lớn ngày càng thường xuyên tương tác với các plugin và API bên ngoài, một sự ô nhiễm đầu vào nhỏ có thể gây ra rủi ro an ninh toàn hệ thống. Đồng thời, sự đa dạng hóa các phương thức tấn công như mã hóa (, ô nhiễm ngẫu nhiên, và ghi đè hàm ) cũng có nghĩa là, các tư duy bảo vệ truyền thống cần phải được nâng cấp toàn diện.
An toàn không bao giờ đạt được ngay lập tức.
Hy vọng buổi trình diễn lần này có thể đánh thức mọi người: dù là nhà phát triển hay người sử dụng, đều nên giữ đủ sự cảnh giác đối với hệ thống MCP, luôn chú ý đến từng tương tác, từng dòng mã, từng giá trị trả về. Chỉ khi mọi chi tiết được đối xử một cách nghiêm ngặt, mới có thể thực sự xây dựng một môi trường MCP vững chắc và an toàn.
Bước tiếp theo, chúng tôi cũng sẽ tiếp tục hoàn thiện kịch bản MasterMCP, mở nguồn nhiều trường hợp thử nghiệm có mục tiêu hơn, giúp mọi người hiểu sâu, thực hành và củng cố bảo vệ trong môi trường an toàn.
Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
15 thích
Phần thưởng
15
5
Chia sẻ
Bình luận
0/400
faded_wojak.eth
· 13giờ trước
Nhìn thấu mcp nhà bạn chơi trò.
Xem bản gốcTrả lời0
PanicSeller
· 13giờ trước
đồ ngốc còn chưa chơi đùa với mọi người xong mà đã buông tay như vậy?
Xem bản gốcTrả lời0
LiquiditySurfer
· 13giờ trước
Blockchain an toàn cũng phải điều chỉnh điểm lên chuỗi tốt nhất để lướt sóng~ Thị trường hỗn loạn hiện tại thật sự martini thêm đá cũng không đủ để hạ nhiệt.
Xem bản gốcTrả lời0
consensus_failure
· 13giờ trước
Nói thật, đừng để lỗ hổng này cứ mở ra mãi.
Xem bản gốcTrả lời0
AllInAlice
· 13giờ trước
Công việc này quá hoang dã, khiến tôi hơi lo lắng.
Mô phỏng thực chiến rủi ro an toàn của hệ thống MCP: Từ đầu độc đến thao tác ngầm.
Sự tiêm nhiễm và thao túng ẩn trong hệ thống MCP: Trình diễn thực tế
MCP (Mô Hình Ngữ Cảnh Giao Thức) hệ thống hiện đang ở giai đoạn phát triển sớm, môi trường tổng thể khá hỗn loạn, nhiều phương thức tấn công tiềm ẩn xuất hiện liên tục, thiết kế các giao thức và công cụ hiện có khó có thể phòng thủ hiệu quả. Để giúp cộng đồng hiểu rõ hơn và nâng cao tính bảo mật của MCP, Slow Mist đã đặc biệt mã nguồn mở công cụ MasterMCP, hy vọng thông qua các bài thực hành tấn công thực tế, giúp phát hiện các lỗ hổng bảo mật trong thiết kế sản phẩm, từ đó dần dần củng cố dự án MCP.
Bài viết này sẽ hướng dẫn mọi người thực hành các phương thức tấn công phổ biến trong hệ thống MCP, chẳng hạn như tiêm thông tin độc hại, ẩn giấu các lệnh độc hại, và các trường hợp thực tế khác. Tất cả các kịch bản trình diễn cũng sẽ được mã nguồn mở, mọi người có thể tái hiện toàn bộ quy trình trong môi trường an toàn, thậm chí phát triển các plugin thử nghiệm tấn công của riêng mình dựa trên các kịch bản này.
Tổng quan về kiến trúc tổng thể
Mục tiêu tấn công mẫu MCP:Toolbox
smithery.ai là một trong những trang web plugin MCP phổ biến nhất hiện nay, tập hợp nhiều danh sách MCP và người dùng hoạt động. Trong đó, @smithery/toolbox là công cụ quản lý MCP do smithery.ai chính thức phát hành.
Chọn Toolbox làm mục tiêu thử nghiệm, chủ yếu dựa trên các điểm sau:
Mục đích sử dụng MCP độc hại: MasterMCP
MasterMCP là công cụ mô phỏng MCP độc hại được Slow Mist phát triển đặc biệt cho kiểm tra an ninh, sử dụng thiết kế kiến trúc plugin, bao gồm các mô-đun chính sau:
Để tái hiện chân thực hơn cảnh tấn công, MasterMCP đã tích hợp mô-đun mô phỏng dịch vụ web cục bộ. Nó nhanh chóng xây dựng máy chủ HTTP đơn giản thông qua khung FastAPI, mô phỏng môi trường trang web phổ biến. Những trang này bề ngoài có vẻ bình thường, như hiển thị thông tin tiệm bánh hoặc trả về dữ liệu JSON tiêu chuẩn, nhưng thực tế trong mã nguồn trang hoặc phản hồi API ẩn chứa tải trọng độc hại được thiết kế tinh vi.
MasterMCP sử dụng cách tiếp cận plugin hóa để mở rộng, thuận tiện cho việc thêm nhanh các phương thức tấn công mới sau này. Sau khi chạy, MasterMCP sẽ chạy dịch vụ FastAPI của mô-đun trước đó trong một tiến trình con. ( Có nguy cơ an ninh đã tồn tại ở đây - plugin cục bộ có thể tùy ý khởi động tiến trình con không phải là mong đợi của MCP ).
ứng dụng demo
mô hình lớn được sử dụng cho trình diễn
Chọn phiên bản Claude 3.7, vì nó đã có những cải tiến nhất định trong việc nhận diện các thao tác nhạy cảm, đồng thời đại diện cho khả năng thao tác mạnh mẽ trong hệ sinh thái MCP hiện tại.
Gọi ác ý Cross-MCP
Bản trình bày này bao gồm hai nội dung: tiêm độc và gọi xấu Cross-MCP.
tấn công tiêm nhiễm nội dung web
Cursor truy cập trang web thử nghiệm cục bộ.
Đây là một trang "Thế giới bánh ngọt ngon" có vẻ vô hại, chúng tôi thông qua thí nghiệm này, mô phỏng tác động gây ra bởi việc khách hàng của mô hình lớn truy cập vào các trang web độc hại.
Thực hiện lệnh:
Lấy nội dung của
Kết quả cho thấy, Cursor không chỉ đọc nội dung trang web mà còn truyền dữ liệu cấu hình nhạy cảm cục bộ về máy chủ thử nghiệm. Trong mã nguồn, các từ khóa độc hại được chèn dưới dạng chú thích HTML.
Mặc dù cách chú thích khá thẳng thừng, dễ bị nhận diện, nhưng đã có thể kích hoạt các hành động độc hại.
Truy cập trang /encode, đây là một trang web trông giống như ví dụ trước, nhưng các từ khóa độc hại đã được mã hóa, điều này làm cho việc tiêm mã độc trở nên khó phát hiện hơn, ngay cả khi truy cập mã nguồn của trang web cũng khó nhận ra.
Ngay cả khi mã nguồn không chứa từ gợi ý rõ ràng, cuộc tấn công vẫn được thực hiện thành công.
Thông tin trả về công cụ MCP bị tiêm độc
Theo hướng dẫn từ MasterMCP, nhập lệnh mô phỏng (. Lệnh này không có ý nghĩa thực tế, nhằm kích hoạt MCP độc hại để trình diễn các thao tác tiếp theo của nó ):
lấy nhiều táo
Có thể thấy, sau khi kích hoạt lệnh, khách hàng đã gọi Toolbox qua MCP và thành công thêm máy chủ MCP mới.
Xem mã plugin có thể phát hiện, dữ liệu trả về đã nhúng mã độc đã được xử lý mã hóa, người dùng gần như không thể phát hiện ra sự bất thường.
Tấn công ô nhiễm giao diện bên thứ ba
Bản trình bày này chủ yếu nhằm nhắc nhở rằng, bất kể là MCP ác ý hay không ác ý, khi gọi API của bên thứ ba, nếu trực tiếp trả dữ liệu của bên thứ ba vào ngữ cảnh, đều có thể mang lại ảnh hưởng nghiêm trọng.
Thực hiện yêu cầu:
Lấy json từ /api/data
Kết quả: Các từ gợi ý độc hại đã được chèn 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.
Kỹ thuật tiêm độc trong giai đoạn khởi tạo MCP
Bản trình bày này bao gồm hai nội dung là tiêm từ gợi ý ban đầu và xung đột tên.
tấn công ghi đè hàm độc hại
Ở đây MasterMCP đã viết một công cụ với cùng tên hàm remove_server như Toolbox, và mã hóa ẩn các từ khóa độc hại.
Thực hiện lệnh:
công cụ hộp công cụ xóa plugin máy chủ
Claude Desktop không gọi phương thức remove_server của toolbox ban đầu, mà đã kích hoạt phương thức cùng tên do MasterMCP cung cấp.
Nguyên lý là thông qua việc nhấn mạnh "phương pháp ban đầu đã bị loại bỏ", ưu tiên dẫn dắt mô hình lớn gọi các hàm bị ghi đè độc hại.
Thêm logic kiểm tra toàn cầu độc hại
Ở đây MasterMCP đã viết một công cụ banana, chức năng cốt lõi của nó là yêu cầu tất cả các công cụ phải thực hiện công cụ này để kiểm tra an toàn trước khi chạy.
Trước mỗi lần thực hiện hàm, hệ thống sẽ ưu tiên gọi cơ chế kiểm tra banana.
Đây là việc tiêm logic toàn cầu bằng cách nhấn mạnh "phải chạy kiểm tra banana" trong mã.
Kỹ thuật nâng cao để ẩn các từ gợi ý ác ý
cách mã hóa thân thiện với mô hình lớn
Do vì mô hình ngôn ngữ lớn (LLM) có khả năng phân tích định dạng đa ngôn ngữ rất mạnh, điều này đã bị lợi dụng để ẩn giấu thông tin độc hại, các phương pháp thường dùng bao gồm:
cơ chế trả về tải trọng độc hại ngẫu nhiên
Như đã đề cập trong chương hai về ô nhiễm giao diện bên thứ ba, khi yêu cầu /random:
Mỗi lần sẽ ngẫu nhiên trả về một trang có tải trọng độc hại, làm tăng đáng kể độ khó trong việc phát hiện và truy nguyên.
Tóm tắt
Thông qua buổi trình diễn thực chiến của MasterMCP, chúng ta đã trực quan nhìn thấy những nguy cơ an ninh tiềm ẩn trong hệ thống Model Context Protocol (MCP). Từ việc tiêm từ khóa đơn giản, gọi chéo MCP, đến các cuộc tấn công giai đoạn khởi tạo ẩn danh hơn và việc ẩn giấu lệnh độc hại, mỗi khía cạnh đều nhắc nhở chúng ta: mặc dù hệ sinh thái MCP mạnh mẽ, nhưng cũng rất dễ bị tổn thương.
Đặc biệt trong bối cảnh các mô hình lớn ngày càng thường xuyên tương tác với các plugin và API bên ngoài, một sự ô nhiễm đầu vào nhỏ có thể gây ra rủi ro an ninh toàn hệ thống. Đồng thời, sự đa dạng hóa các phương thức tấn công như mã hóa (, ô nhiễm ngẫu nhiên, và ghi đè hàm ) cũng có nghĩa là, các tư duy bảo vệ truyền thống cần phải được nâng cấp toàn diện.
An toàn không bao giờ đạt được ngay lập tức.
Hy vọng buổi trình diễn lần này có thể đánh thức mọi người: dù là nhà phát triển hay người sử dụng, đều nên giữ đủ sự cảnh giác đối với hệ thống MCP, luôn chú ý đến từng tương tác, từng dòng mã, từng giá trị trả về. Chỉ khi mọi chi tiết được đối xử một cách nghiêm ngặt, mới có thể thực sự xây dựng một môi trường MCP vững chắc và an toàn.
Bước tiếp theo, chúng tôi cũng sẽ tiếp tục hoàn thiện kịch bản MasterMCP, mở nguồn nhiều trường hợp thử nghiệm có mục tiêu hơn, giúp mọi người hiểu sâu, thực hành và củng cố bảo vệ trong môi trường an toàn.