Đã tìm thấy lỗi thực thi trùng lặp trong công cụ MCP thông qua phân tích tĩnh (không có LLM)
URL bài viết: https://www.getnexum.dev/blog/nexum-004-fabian-williams URL nhận xét: https://news.ycombinator.com/item?id=49329849 Điểm: 1 # Bình luận: 0
Nghiên cứu điển hình: NEXUM-004 IdempotencyThiếu trên thông số MCP thực - Nexum
nexum
sản phẩm
Blog
Đăng ký
GitHub
Quét API của bạn →
NGHIÊN CỨU TRƯỜNG HỢP
Ngày 17 tháng 5 năm 2026
NEXUM-004 trên thông số kỹ thuật thực tế: cách một cửa hàng MCP công cộng đóng một Phát hiện thiếu quyền lực trong một ngày
Đây không phải là thông số demo. Fabian Williams (@fabianwilliams) đã xây dựng một cửa hàng công khai, có thể gọi MCP — một luồng mua hàng thực sự, trực tiếp trên fabswill.com. Khi các quy tắc của Nexum được thực hiện bằng tay theo thông số kỹ thuật của anh ấy, một trong số chúng đã thất bại: NEXUM-004. Đây là những gì đã xảy ra, theo lời nói của chính anh ấy và yêu cầu kéo của chính anh ấy.
Thông số kỹ thuật
Mặt tiền cửa hàng của Fabian phục vụ một điểm cuối có thể gọi MCP tạo ra một giao thức trung lập, giống hệt nhau
Biên nhận dấu vết kiểm tra bất kể người gọi — anh ấy đã thử nghiệm nó với cả Claude Desktop được lưu trữ trên máy chủ và một
Qwen3.6 27B hoàn toàn cục bộ chạy ngoại tuyến trên máy tính xách tay của anh ấy, sáu lần kiểm tra thời gian chạy giống nhau, kết quả tương tự. Anh ấy
đã đăng nó dưới dạng chủ đề trên X
vào ngày 16 tháng 5 năm 2026.
Mehdi trả lời vào ngày hôm sau: quá trình kiểm tra thời gian chạy có vẻ chắc chắn, nhưng thông số kỹ thuật trông như thế nào
trước khi nó đến tay khách hàng? Mẫu URL biên nhận - một điểm cuối đáp ứng cả hai
chế độ xem kiểm toán an ninh và thanh toán tài chính - rất thú vị từ góc độ bán kính bùng nổ: một
điểm cuối phục vụ hai người tiêu dùng cũng là một điểm cuối mà tổng đài viên có thể gọi cho cả hai.
Fabian đã nhận lời đề nghị. Hệ nhị phân của máy quét Nexum vẫn chưa được công khai nên anh ấy đã bước đi
thông số buy_free_bundle dựa trên năm quy tắc được liệt kê thủ công của bảng kê khai.
Bốn đã vượt qua hoặc không áp dụng. Một thất bại.
Phát hiện - NEXUM-004 IdempotencyMissing
CAO
buy_free_bundle là một công cụ MCP có tính đột biến: nó tạo ra một biên lai, thêm một liên hệ vào
Brevo, tạo ra mã thông báo tải xuống có chữ ký JOSE và gửi email thực hiện. Công cụ này
inputSchema không hiển thị Khóa Idempotency. Bất kỳ đại lý nào thử lại
hết thời gian chờ — hành vi thử lại mặc định trong hầu hết các chính sách máy khách LLM-SDK — sẽ phát hành hai lần
nhóm và gửi email gấp đôi.
Tại sao những người bảo vệ thời gian chạy không bắt được nó
Mặt tiền cửa hàng của Fabian đã có sẵn quản trị thời gian chạy: giới hạn tốc độ 5 yêu cầu mỗi giờ cho mỗi
IP và mức chi phí trần là $5/ngày. Không ai kích hoạt lỗi này. Hai lần thử lại trong cùng một giờ
cả hai đều hạ cánh thoải mái dưới giới hạn tỷ lệ trong lần thử đầu tiên. Chi phí phát hành gói miễn phí trùng lặp
không nơi nào gần mức trần hàng ngày. Như Fabian đã nói, đó chính xác là khoảng cách về chiều sâu phòng thủ của Nexum.
dự đoán khung: bộ bảo vệ thời gian chạy và đánh giá thông số kỹ thuật tĩnh phát hiện các loại lỗi khác nhau. A
kiểm tra cấp độ thông số kỹ thuật trên chính lược đồ sẽ nắm bắt được những biện pháp bảo vệ dựa trên chi phí và khối lượng yêu cầu
về mặt cấu trúc không thể nhìn thấy.
Cách khắc phục – PR #1
Fabian đã gửi bản sửa lỗi ngay trong ngày, hợp nhất vào ngày 17 tháng 5 năm 2026:
Lược đồ. Đã thêm idempotency_key (tùy chọn, 8–128 ký tự, mẫu [A-Za-z0-9._-]) vào inputSchema của công cụ MCP, với mô tả công cụ được cập nhật để đề xuất cho các đại lý sản xuất.
Tiêu đề HTTP. Cả /api/a2a/mcp và /api/a2a/purchase cũng chấp nhận tiêu đề yêu cầu Idempotency-Key tiêu chuẩn — đối số công cụ sẽ thắng nếu có cả hai.
Kho. Mô-đun idempotency.ts mới được hỗ trợ bởi Azure Table Storage. DiskKey và RowKey là các giá trị băm — không có khóa thô hoặc email nào được lưu trữ.
Phát lại ngữ nghĩa, kiểu sọc. Trên mọi yêu cầu có khóa hợp lệ, bảng sẽ được kiểm tra trước khi chạy xác thực đầu vào. Khi có lần truy cập, biên nhận ban đầu được tải từ bộ lưu trữ Blob và được trả về chính xác như hiện trạng.
Chỉ những thành công mới được lưu trữ. Biên nhận lỗi không bao giờ được lưu trữ, do đó, một lỗi xuôi dòng tạm thời (ví dụ như lỗi Brevo) không bị ảnh hưởng bởi lỗi được lưu trong bộ nhớ đệm — thao tác thử lại của tác nhân sẽ chạy lại luồng như dự định.
Không mở được. Cả hai lần truy cập bộ đệm bị thiếu hoặc ghi không thành công đều bị nuốt chửng thay vì hiển thị dưới dạng lỗi. Idempotency là một vành đai an toàn ở đây, không phải là một chế độ thất bại mới.
Những hạn chế v1 đã biết
Fabian đã ghi lại những điều này trong chính PR, thay vì bỏ qua chúng:
Các yêu cầu đồng thời có cùng một khóa có thể vừa bỏ sót bộ đệm vừa chạy luồng - lần ghi cuối cùng sẽ thắng trên bảng và hai biên nhận được ghi vào Blob. Khóa đang thực hiện theo kiểu Stripe (đặt trạng thái thành xử lý theo đồng thời lạc quan, trả về 409 khi va chạm) là quá trình tăng cường v2 theo kế hoạch.
Chưa có bảng TTL - ánh xạ tồn tại cho đến khi được thu thập theo cách thủ công. Chi phí không đáng kể ở khối lượng demo; được gắn cờ để xem lại hơn 10 nghìn hàng trước đây.
Fabian Williams
@fabianwilliams
“Tín dụng khi đến hạn @MBelckadi - bảng kê khai tin cậy của bạn là một lược đồ phân tích tĩnh rõ ràng.”
Ngày 17 tháng 5 năm 2026
Tại sao điều này lại quan trọng
Bảo vệ thời gian chạy — giới hạn tốc độ, trần chi phí — chi phối hành vi: tần suất và số lượng.
Họ không nói gì về việc liệu một lệnh gọi, được thực hiện đúng một lần như thiết kế, có an toàn để thử lại hay không.
Việc đọc thông số kỹ thuật tĩnh sẽ phát hiện loại rủi ro đó trước khi tác nhân đầu tiên gọi công cụ —
bảo vệ chuyên sâu dựa trên quản trị thời gian chạy chứ không phải là sự thay thế cho nó. Đó là toàn bộ tiền đề
đằng sau Chứng chỉ Nexum.
Quét API của bạn
Tác nhân máy chủ MCP của bạn có an toàn không?
Tải lên thông số OpenAPI của bạn và nhận báo cáo Nexum Cert + PDF sau vài giây.
Miễn phí. Không cần tài khoản.
Quét API của bạn miễn phí →
Xem sổ đăng ký
nexum
Hợp đồng giữa đại lý và cơ sở hạ tầng của bạn
GitHub
Thông số chứng chỉ Nexum
getnexum.dev
Nexum · Đặc tả mở · Giấy phép MIT
Nguồn tin: Hacker News LLM — Tác giả: mbelckadi. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.