DEV Community

BeanBean
BeanBean

Posted on Originally published at nextfuture.io.vn

Audit 675 MCP server: 89% high-risk, checklist trước khi cài

Originally published on NextFuture

Bạn thấy một MCP server tiện, copy config vào mcp.json của Cursor rồi restart editor. Từ giây đó agent có đúng quyền server cho phép — và bạn chưa đọc dòng nào về việc quyền đó rộng tới đâu.

Một bản audit vừa công bố cho thấy mặc định của cả hệ sinh thái rộng hơn nhiều so với hình dung của dev. Dưới đây là số liệu và checklist 5 phút để lọc trước khi cài.

Con số: 603/675 server rơi vào nhóm high-risk

Directory RepoAI chấm MCP server theo 15 tín hiệu cấu trúc — không phải pentest, mà là trust score dựa trên dữ kiện công khai: có read-only mode không, có xác thực request không, còn được maintain không, ai publish. Nhóm này nói họ vừa sửa hai bug đang under-count rủi ro rồi chấm lại toàn bộ directory.

Kết quả họ công bố trên 675 server: 6 server (0,9%) đạt mức Safe (80–100 điểm), 66 server (9,8%) ở mức Medium, và 603 server (89,3%) ở mức High risk (0–59 điểm).

Ba tín hiệu kéo phần lớn điểm số xuống, theo bài audit:

  • 92,1% server không có read-only mode — mọi lần cài đều là full read/write, không có cách chạy an toàn hơn.

  • 35,9% có ít nhất một tool bị xếp loại nguy hiểm (chạy code, xoá dữ liệu, ghi file); trong số đó 43,1% đồng thời không có read-only — tổ hợp bị chấm nặng nhất trong mô hình của họ.

  • 1,9% không có cơ chế xác thực nào; chỉ 14,7% hỗ trợ OAuth và chỉ 12% do chính vendor publish.

Để loại khả năng thiên lệch mẫu, họ lấy thêm 20 server chưa import từ GitHub, sắp theo star, chấm nguội cùng phương pháp: ứng viên phổ biến nhất có 1.860 star, không server nào chạm tier Medium — cao nhất 55/100.

Ví dụ cụ thể trông như thế nào

Bài viết lấy mcp-server-trello làm ví dụ: một MCP cộng đồng nối assistant với board Trello, expose 35 tool — có cả delete_checklist_itemdelete_comment đều bị gắn cờ nguy hiểm — không có read-only mode, chấm 20/100. Tác giả nhấn mạnh đây là mặc định phổ biến của hệ sinh thái, không phải lỗi maintainer.

Rủi ro đi kèm không nằm ở bug trong server mà ở prompt injection: agent bị một trang web hay tài liệu nó được yêu cầu đọc lừa gọi tool không nên gọi — blast radius đúng bằng những gì tool đó làm được, và kiểu lỗi này không tạo crash, không tạo alert.

Checklist 5 phút trước khi thêm một MCP server

Ba câu hỏi đầu tiên, đọc thẳng trong README của repo:

  • Có flag read-only không? Nếu tool có khả năng ghi mà không có chế độ chỉ đọc, mặc định bạn đang trao quyền ghi vĩnh viễn. Theo bài audit, đây là tín hiệu tác động mạnh nhất tới điểm số trong toàn bộ dataset của họ.

  • Có xác thực không? Một static API key đã đủ qua bar của họ — cái bị trừ điểm là hoàn toàn không có gì.

  • Tool nào ghi/xoá? Đọc danh sách tool và tìm tiền tố delete_, write_, exec_. Ai publish repo cũng là một tín hiệu: vendor chính chủ hay bên thứ ba.

Phân tích chung về workflow: tách MCP có quyền ghi khỏi project mà agent phải đọc nội dung ngoài (issue công khai, trang web, email), và cài từng server một thay vì bê nguyên block config có sẵn.

Server đọc-là-chính thì nhẹ đầu hơn

Ví dụ Figma MCP: theo trang giới thiệu, đây là tích hợp chính thức của Figma cho Claude, Cursor và Windsurf, đọc design token và component thẳng từ file — agent lấy padding: 12px, background: #2563EB, font-weight: 600 thay vì screenshot. Cài bằng npx -y figma-developer-mcp.

Theo dõi tiếp

Điểm kiểu này là số động, đổi khi server thêm tính năng an toàn. Nếu bạn đang maintain một MCP server, thêm flag read-only là thay đổi rẻ nhất có tác động lớn nhất tới cột rủi ro người khác nhìn trước khi cài.


This article was originally published on NextFuture. Follow us for more fullstack & AI engineering content.

Top comments (0)