Chuyển đến nội dung chính
Một MCP server hoặc skill đã cài đặt bên thứ ba là một dependency chuỗi cung ứng. Hai chế độ thất bại nổi bật:
  • Poisoning — server đã độc hại ngay từ ngày đầu. Manifest của nó trông lành tính; hành vi nguy hiểm nằm trong implementation tool, không phải trong phạm vi đã khai báo.
  • Rug-pull — bạn tin nó, rồi nó thay đổi. Một tool mới xuất hiện mà operator của server thêm âm thầm, hoặc mục registry cộng đồng bị chiếm và cập nhật để gọi về nhà.
Cả hai mối đe dọa chia sẻ nguyên nhân gốc rễ: sau khi bạn nói “tôi tin server này,” agent của bạn tiếp tục gọi các tool của nó — ngay cả những cái mới hoặc đã sửa đổi — mà không có thêm bất kỳ xem xét nào.

1. Cách mcp tool poisoning đến agent của bạn

Mọi tools/call mà agent của bạn phát ra đều di chuyển qua tập tool đã khai báo của MCP server. Một server bị poisoned hoặc bị rug-pull khai thác sự tin tưởng đó theo một vài cách:
VectorĐiều gì xảy ra
Tool không được khai báoMột tool mới xuất hiện trong tools/list mà manifest của server không bao giờ khai báo. Agent tìm thấy nó và gọi nó.
Mục registry bị chiếmMột listing registry cộng đồng bị tiếp quản; endpoint giờ trỏ đến server do kẻ tấn công kiểm soát.
Thu hoạch credentialImplementation tool của server gửi input được thu thập đến host bên ngoài.
Prompt-injection qua kết quả toolMột tool trả về văn bản do kẻ tấn công kiểm soát hướng lại hành động tiếp theo của agent.

2. Các biện pháp phòng thủ của OrcaRouter

2.1 Mọi tools/call đều được đánh giá firewall trước khi chạy

Các MCP server kết nối với agent của bạn qua Firewall MCP gateway tại /api/v1/firewall/mcp. Gateway không chuyển tiếp lời gọi tool cho đến khi engine firewall đánh giá nó đối với chính sách của bạn. Điều đó có nghĩa là allow-list của bạn là nguồn truth — không phải manifest tool của server. Nếu một rug-pull thêm shell.exec và chính sách của bạn không có quy tắc cho phép nó, verdict là deny và cuộc gọi không bao giờ rời gateway. Mô hình nhận lỗi tool (firewall deny: …) và có thể phản ứng; tool được thêm bởi kẻ tấn công chết ngay khi đến. Các verdict mà engine có thể trả về:
VerdictHiệu ứng
allow / auditCuộc gọi được chuyển tiếp; audit bổ sung ghi log đối số.
sanitizeĐối số được viết lại trước khi chuyển tiếp.
denyCuộc gọi bị block; mô hình nhận lỗi tool.
pending_approvalCuộc gọi được giữ lại; con người phải phê duyệt trước khi nó tiếp tục.
cap_costCost cap được thực thi; cuộc gọi bị block nếu nó sẽ vượt quá.

2.2 Khả năng tự phát hiện bị quarantine cho đến khi xem xét

Khi agent tự cài đặt khả năng — hoặc một rug-pull thêm tool mới không có trong khi bạn đăng ký server — Firewall tự phát hiện khả năng mới ngoài hot path, tổng hợp manifest, quét nó, và gán band rủi ro và enforcement mode. Quan trọng là, các khả năng tự phát hiện luôn bị quarantine bất kể kết quả scan: chúng được giữ trong pending_approval cho đến khi con người xem xét chúng. Đây là cách rug-pull được kiểm soát. Operator không thể âm thầm thêm tool mới và để agent của bạn bắt đầu dùng nó — các cuộc gọi đó được giữ lại cho đến khi bạn kiểm tra và phê duyệt khả năng mới.

2.3 Skill scanning gán band rủi ro và enforcement mode

Mọi khả năng có thể cài đặt — dù bạn đăng ký hay Firewall tự phát hiện — đều được đưa qua skill scanner. Scanner chạy các lượt tất định trên manifest và phạm vi đã khai báo:
  • prompt_injection — văn bản manifest cố gắng chiếm đoạt hướng dẫn.
  • tool_creep — các tool mà manifest dùng nhưng không bao giờ khai báo.
  • network_egress — host HTTP(S) bên ngoài phạm vi mạng được phê duyệt.
  • fs_write_unsafe — truy cập filesystem chế độ ghi bên ngoài /tmp.
Các phát hiện tổng hợp thành band rủi ro (low / medium / high / critical) và enforcement mode:
ModeĐiều gì xảy ra lúc runtime
allowSkill không áp đặt gì của riêng nó; các quy tắc chính sách của bạn quyết định.
quarantineMọi verdict không phải deny đều leo thang thành pending_approval. Con người phải phê duyệt mỗi lời gọi tool.
blockÉp deny trên tất cả tool của skill này, bất kể quy tắc chính sách.
Một skill band high bị quarantine tự động; critical bị block. Một phát hiện error đơn (vd: tool_creep cho shell.exec không được khai báo) là đủ để block một skill ngay cả khi điểm số số của nó trông thấp. Mode chỉ ratchet chặt hơn — phê duyệt skill không bao giờ nới lỏng block được đặt bởi scan mới.

2.4 Credential được lưu mã hóa

Secret xác thực server được mã hóa lúc nghỉ với workspace secrets key và được tiêm bởi gateway tại thời điểm dispatch. Chúng không bao giờ đến mô hình, agent, hoặc đối số cuộc gọi. Một server bị xâm phạm không thể exfiltrate API key của bạn bằng cách đọc auth_json của chính nó.
Danh sách kiểm tra vetting MCP server bên thứ baTrước khi đăng ký MCP server bên ngoài:
  • Xác minh danh tính publisher — ai kiểm soát URL endpoint?
  • Đọc source hoặc changelog; tìm các tool mới được thêm sau khi phát hành ban đầu.
  • Kiểm tra liệu skill scan có trả về phát hiện tool_creep hoặc prompt_injection nào khi đăng ký không.
  • Scope một quy tắc firewall với tool_name_glob: <server>.* thành audit hoặc pending_approval cho đến khi bạn có lịch sử cuộc gọi.
  • Xem xét phát hiện network_egress: manifest có tuyên bố chỉ cần một domain nhưng mô tả tool lại đề cập đến domain khác không?
  • Re-probe server sau bất kỳ version bump thượng nguồn nào (POST /api/workspace/firewall/mcp_servers/:id/probe) để phát hiện tool mới.

3. Phải làm gì sau khi nghi ngờ rug-pull

  1. Vô hiệu hóa server ngay lập tức — server bị vô hiệu hóa bị loại khỏi runtime registry và credential của nó không bao giờ được giải mã. Dùng PUT /api/workspace/firewall/mcp_servers với "enabled": false.
  2. Re-probe để phát hiện thay đổiPOST /api/workspace/firewall/mcp_servers/:id/probe chạy tools/list và trả về bất kỳ tool mới nào xuất hiện kể từ probe cuối cùng của bạn.
  3. Rescan skill recordPOST /api/workspace/firewall/skills/:id/rescan chạy lại scanner đối với manifest cập nhật. Nếu verdict xuống cấp thành flagged hoặc blocked, Firewall phát ra sự kiện trong feed của bạn.
  4. Xem xét hàng đợi pending_approval — mọi cuộc gọi được giữ lại kể từ rug-pull đều trong hàng đợi. Kiểm tra và từ chối chúng thay vì bulk-approve.
  5. Kiểm tra call log — kiểm tra Firewall event trail cho các cuộc gọi đã đi qua trước khi bạn phát hiện thay đổi.

4. Kết hợp skill scanning với quy tắc firewall

Skill scanning và quy tắc firewall là bổ trợ và kết hợp:
  • Một quy tắc với tool_name_glob: community.* được đặt thành pending_approval đảm bảo bạn xem xét mọi cuộc gọi từ server nguồn cộng đồng, bất kể band rủi ro.
  • Một skill bị quarantine ghi đè quy tắc allow — ngay cả khi chính sách của bạn cho phép http.fetch rộng rãi, một skill bị quarantine sở hữu nó vẫn giữ cuộc gọi lại.
  • Dùng skill_name_glob trong một quy tắc để scope các chính sách chặt hơn cho server không tin tưởng mà không ảnh hưởng tích hợp first-party của bạn.
Xem Firewall: MCP Server để biết mô hình gateway đầy đủ và Firewall: Skills để biết tham chiếu scanner và enforcement-mode.

5. Mối đe dọa liên quan

  • Lời gọi tool nguy hiểm — các quy tắc block hành động tool phá hủy hoặc không thể đảo ngược bất kể nguồn.
  • Data exfiltration — quy tắc egress hạn chế nơi lời gọi tool có thể gửi dữ liệu.
  • Mô hình đe dọa — bề mặt tấn công đầy đủ mà OrcaRouter được thiết kế để phòng thủ.

Firewall: MCP Server

Đăng ký MCP server đằng sau gateway, probe tool của chúng, và áp dụng verdict theo từng cuộc gọi trước khi bất kỳ cuộc gọi nào đến server thực.

Firewall: Skills

Quét và chấm điểm rủi ro mọi khả năng có thể cài đặt. Quarantine hoặc block skill rủi ro trước khi tool của chúng có thể chạy.