
MCP सर्वरों के लिए Layer-2 सप्लाई-चेन हार्डनिंग — Ed25519-हस्ताक्षरित टूल मैनिफेस्ट, रनटाइम स्पॉन-एटेस्टेशन, डिफ़ॉल्ट-अस्वीकार आर्गुमेंट सैनिटाइज़र। मार्केटप्लेस-पॉइज़निंग + CVE-2025-69256 + CVE-2025-61591 से बचाव करता है।
StudioMeyer MCP Stack का हिस्सा — Mallorca में निर्मित 🌴 · ⭐ यदि आप इसका उपयोग करते हैं
इसका सीधा जवाब है:
child_process.exec() कमांड इंजेक्शन के ज़रिए Serverless Framework MCP RCE।यह पैकेज वह प्रदान करता है जो Anthropic ने नहीं करना चुना: क्रिप्टोग्राफ़िक सत्यापन कि एक सर्वर कौन से टूल उजागर कर सकता है और उसे कौन से स्पॉन कॉल करने की अनुमति है। यह एक ड्रॉप-इन डिपेंडेंसी है, रनटाइम रिप्लेसमेंट नहीं।
हम पिछले दो वर्षों से अपने लिए टूल और सिस्टम बना रहे हैं। यह रिपॉजिटरी छोटी है और इस पर कुछ ही स्टार हैं — इसका कारण यह नया होना नहीं है। इसका कारण यह है कि हमने अभी-अभी यह तय किया है कि जो हमने बनाया है उसे साझा करें। यह कोई नया प्रयोग नहीं है, यह एक लंबी कहानी है जिसमें हाल ही में एक कमिट हुआ है।
हमें चीज़ें बनाना और उन्हें साझा करना पसंद है। हमें सोशल मीडिया की तरकीबें, ग्रोथ हैक्स, या स्टार और फॉलोअर्स के पीछे भागना पसंद नहीं है। इसलिए यह रिपॉजिटरी छोटी है। कोड असली है, उसका उपयोग होता है, इश्यू के जवाब दिए जाते हैं। आप खुद निर्णय लीजिए।
अगर यह आपके काम आता है, तो साझा करना, परीक्षण और प्रतिक्रिया हमारी मदद करते हैं। अगर इसमें सुधार की गुंजाइश है, तो एक इश्यू अधिक उपयोगी है। अगर आप इसके साथ कुछ बनाते हैं, तो हमें [email protected] पर बताएं। इससे सचमुच हमारा दिन बन जाता है।
Palma de Mallorca के एक छोटे स्टूडियो से।
npm install mcp-server-attestation
# CLI:
npm install -g mcp-attest-cli
# Reference MCP server:
npx mcp-attest-demo
Node 20+। कोई बाहरी क्रिप्टो डिपेंडेंसी नहीं — node:crypto Ed25519 प्रिमिटिव का उपयोग करता है।
import { verifyManifestStrict, attestSpawnStrict, type SignedManifest } from "mcp-server-attestation";
import signed from "./signed/manifest.json" assert { type: "json" };
// 1. At startup: prove the manifest you ship is the manifest you signed.
verifyManifestStrict(signed);
// 2. Before every child_process.spawn:
attestSpawnStrict(signed as SignedManifest, { command, args });
यही पूरा एकीकरण है। दो फ़ंक्शन कॉल, कोई SaaS नहीं, कोई डेमॉन नहीं।
अगर आप हर स्पॉन पर हस्ताक्षर को दोबारा सत्यापित करना चाहते हैं (एक अनसत्यापित या बदले गए मेनिफेस्ट के गेट तक पहुँचने के विरुद्ध डिफेंस-इन-डेप्थ), तो इसके बजाय सिंगल फेल-सेफ कॉल का उपयोग करें — यह सत्यापित करता है फिर अटेस्ट करता है:
import { attestSpawnVerified, type SignedManifest } from "mcp-server-attestation";
attestSpawnVerified(signed as SignedManifest, { command, args });
mcp-attest-demo)एनोटेशन ईमानदार हैं: attest_sign_manifest और attest_keygen डिस्क पर फ़ाइलें लिखते हैं, इसलिए वे रीड-ओनली नहीं हैं, लेकिन वे मौजूदा डेटा को नष्ट नहीं करते, इसलिए destructiveHint false रहता है। प्रति-टूल क्षमता तालिका के लिए docs/THREAT-MODEL.md देखें।
mcp-attest keygen --out-dir ./keys --name prod
mcp-attest sign --manifest manifest.json --private-key keys/prod.key --out signed.json
mcp-attest verify --signed signed.json --pin # TOFU pin
mcp-attest verify --signed signed.json --sigstore # opt-in Rekor cross-ref
mcp-attest inspect --signed signed.json --command /usr/bin/echo --arg "hello"
mcp-attest fingerprint --public-key keys/prod.pub
mcp-attest check-pin --server my-server --signed signed.json
verify अमान्य हस्ताक्षर पर कोड 2 और पिन बेमेल पर कोड 3 के साथ बाहर निकलता है।
| स्पेक संस्करण | स्थिति |
|---|---|
| 2024-11-05 | मेनिफेस्ट में पार्स करने योग्य, रेफ़रेंस सर्वर का लक्ष्य नहीं |
| 2025-03-26 | मेनिफेस्ट में पार्स करने योग्य, रेफ़रेंस सर्वर का लक्ष्य नहीं |
| 2025-06-18 | पूर्ण लक्ष्य |
लाइब्रेरी ट्रांसपोर्ट-अज्ञेय है। रेफ़रेंस सर्वर केवल stdio है।
~/.mcp-attest/trust.json में पिन कर दी जाती है (ओवरराइड: MCP_ATTEST_TRUST_FILE)। बाद के सत्यापन उसी सर्वर नाम के लिए किसी भी नई कुंजी को TRUST_PIN_MISMATCH के साथ अस्वीकार कर देते हैं। यह Cursor-शैली के दुर्भावनापूर्ण-अपडेट वेक्टर को पकड़ लेता है।--sigstore ऑप्ट-इन करें।shellSafeString हर ASCII शेल मेटाकैरेक्टर, NUL, CR, LF, VT, FF, NEL, ज़ीरो-विड्थ कैरेक्टर, BOM, RTL/LTR ओवरराइड, Trojan-Source आइसोलेट्स और फुलविड्थ-लैटिन कन्फ्यूज़ेबल्स को ब्लॉक करता है। अलाउलिस्ट व्यवहार के लिए स्पष्ट regex / enum / prefix / literal नियम किस्मों की आवश्यकता होती है।regex नियम। एक regex नियम का पैटर्न लेखक द्वारा हस्ताक्षरित होता है, लेकिन आर्गुमेंट मान हमलावर-नियंत्रित होता है। सैनिटाइज़र स्थिर रूप से बैकट्रैकिंग-प्रवण पैटर्न (नेस्टेड असीमित क्वांटिफायर जैसे ) का पता लगाता है और उन्हें चलाने से मना कर देता है, इसलिए एक अकेला क्राफ्टेड आर्गुमेंट स्पॉन हॉट पाथ को फ्रीज़ नहीं कर सकता। नियमों पर इनपुट कैप (डिफ़ॉल्ट 4096) भी होती है।यह पैकेज क्या नहीं करता (दायरे से बाहर):
mcp-oauth-shield बिल्ड)।npm install
npm run typecheck
npm test
टेस्ट कॉर्पस में CVE-रीप्ले फिक्स्चर शामिल हैं (packages/lib/tests/fixtures/cve-2025-69256-payloads.json, cve-2025-61591-payloads.json)। बिल्ड एक रिग्रेशन जाँच है: हर पेलोड को ब्लॉक किया जाना चाहिए।
--provenance के साथ।mcp-server-attestation के रूप में प्रकाशित की गई।StudioMeyer Palma de Mallorca में स्थित एक AI और डिज़ाइन स्टूडियो है, जो दुनिया भर के ग्राहकों के साथ काम करता है। हम छोटे और मध्यम व्यवसायों के लिए कस्टम वेबसाइट और AI इंफ्रास्ट्रक्चर बनाते हैं। प्रोडक्शन स्टैक Claude Agent SDK, MCP और n8n पर आधारित है, जिसमें अवलोकन के लिए Sentry, Langfuse और LangGraph और एक इन-हाउस गार्ड परत शामिल है।
MIT, कॉपीराइट 2026 Matthias Meyer (StudioMeyer)। LICENSE देखें।
| पैकेज | उद्देश्य |
|---|
mcp-server-attestation (packages/lib) | लाइब्रेरी: Ed25519 साइन/वेरिफाई, मेनिफेस्ट स्कीमा, सैनिटाइज़र, स्पॉन अटेस्टर, TOFU ट्रस्ट स्टोर। |
mcp-attest-cli (packages/cli) | CLI mcp-attest: keygen, sign, verify, inspect, fingerprint, check-pin। |
mcp-attest-demo (packages/demo-server) | रेफ़रेंस MCP सर्वर (stdio, spec 2025-06-18) जो 5 टूल उजागर करता है जो लाइब्रेरी को प्रदर्शित करते हैं। |
| # | नाम | readOnlyHint | destructiveHint |
|---|
| 1 | attest_verify_manifest | true | false |
| 2 | attest_inspect_spawn | true | false |
| 3 | attest_generate_manifest_template | true | false |
| 4 | attest_sign_manifest | false | false |
| 5 | attest_keygen | false | false |
(a+)+regexmaxLengthprefix नियम। prefix नियम डिफ़ॉल्ट रूप से .. पाथ कंपोनेंट को अस्वीकार करते हैं (denyTraversal: true, जिसमें %2e%2e एन्कोडेड रूप भी शामिल है), इसलिए /safe/../../etc/passwd ब्लॉक हो जाता है, भले ही वह prefix: "/safe/" को संतुष्ट करता हो।attestSpawnVerified एक फेल-सेफ कॉल में स्पॉन को अटेस्ट करने से पहले मेनिफेस्ट हस्ताक्षर की जाँच करता है — attestSpawnStrict के बजाय इसका उपयोग करें, जब तक कि आपने प्रति-स्पॉन Ed25519 वेरिफाई को वास्तविक हॉट लूप से बाहर माप न लिया हो।