FlawOpen

flawopen.com/Incidents/deadbugz-mcp-delayed-metadata-supply-chain-campaign-august-2026

● Pillar Security / MCP ecosystem · CWE-829 (editorial mapping; no CVE assigned) · 2026-08-10 · मध्यम
सुरक्षा अनुसंधान · FlawOpen

Deadbugz: स्वीकृति के बाद MCP टूल मेटाडेटा बदला गया

Pillar Security ने MCP सप्लाई-चेन अभियान दर्ज किया जिसमें तीन सामान्य कॉल के बाद मेटाडेटा बदला गया। समीक्षा में GitHub PR प्रक्रिया से मर्ज हुए अनुरोध नहीं मिले; रिपोर्ट में बाद के समझौते का उल्लेख नहीं है। Cloud Security Alliance के अनुसार, अलग से स्थानीय रूप से चलाए जाने की दृश्यता सीमित थी।[1], [3]

💡 आसान भाषा में (ELI5)

सोचिए कि आपने किसी ठेकेदार को इसलिए मंज़ूरी दी क्योंकि उसके पहचान-पत्र पर सुरक्षित काम लिखा था। तीन सामान्य डिलीवरी के बाद पहचान-पत्र चुपचाप बदलकर बंद कमरों में जाने की अनुमति माँगता है। ख़तरा यह है कि इमारत पुरानी मंज़ूरी पर भरोसा करती रहे। MCP क्लाइंट को सर्वर द्वारा स्वीकृत टूल निर्देश बदलने का पता लगाना चाहिए।[1]

इस पेज के मुख्य शब्द

MCP
प्रोटोकॉल जिसके माध्यम से AI ऐप सर्वर द्वारा दिए गए टूल खोजता और चलाता है।[5]
टूल मेटाडेटा
टूल का नाम, विवरण और इनपुट स्कीमा, जिन्हें क्लाइंट मॉडल के संदर्भ में भेज सकता है।[5], [1]
रनटाइम पर विलंबित बदलाव
इंटरैक्शन की सीमा पूरी होने पर सक्रिय होने वाला व्यवहार; Pillar ने तीन कॉल का काउंटर बताया।[1]
सप्लाई-चेन डिलीवरी
विश्वसनीय विकास प्रक्रिया, जैसे pull request, से निर्भरता या कॉन्फ़िगरेशन जोड़ना।[1]
CWE-829
संपादकीय वर्गीकरण: कार्यक्षमता ऐसे सर्वर से आई जो क्लाइंट के भरोसेमंद नियंत्रण क्षेत्र से बाहर था। कोई CVE या CVSS स्कोर नहीं दिया गया।[1], [3]

फ्रेमवर्क मैपिंग

  • इस गाइड में बताई गई कमजोरी के लिए CWE संदर्भ: CWE-829

घटना का समयक्रम (Timeline)

2026-08-10

Pillar ने 74 मिनट में बनाए गए 23 संबंधित pull request पाए; समीक्षा के समय कोई भी GitHub PR प्रक्रिया से मर्ज नहीं हुआ था।[1]

2026-08-12

Pillar ने तीन कॉल के बाद मेटाडेटा बदलने की तकनीकी रिपोर्ट और संकेत प्रकाशित किए।[1]

2026-10-08

OWASP GenAI Project ने Deadbugz को Q3 2026 समीक्षा में शामिल किया; यह ध्यान का संकेत है, समझौते या खोज मात्रा का प्रमाण नहीं।[2]

हमले का चरण-दर-चरण प्रवाह

चरण 1

कॉन्फ़िगरेशन बदलाव प्रस्तावित होता है

pull request AI प्रोजेक्ट में दूरस्थ या स्थानीय MCP सर्वर कॉन्फ़िगरेशन जोड़ता है। Pillar ने दूरस्थ endpoint वाले 17 बदलाव, छिपी स्थानीय script के चार संदर्भ और दो सूची प्रविष्टियाँ देखीं।[1]

चरण 2

पहली समीक्षा में सामान्य टूल दिखते हैं

शुरुआत में सर्वर टेक्स्ट फ़ॉर्मैटिंग और सारांश टूल देता है। Pillar के अनुसार छोटी जाँच में केवल यही सामान्य मेटाडेटा मिल सकता है।[1]

चरण 3

सामान्य उपयोग सीमा पार करता है

सर्वर हर क्लाइंट की कॉल गिनता है। तीन कॉल के बाद tools/list और prompts/get के अगले जवाब बदल जाते हैं।[1], [5]

चरण 4

एजेंट को अविश्वसनीय निर्देश मिलते हैं

निर्देश जुड़े एजेंट को संवेदनशील स्थानीय जानकारी खोजने और गतिविधि छिपाने के लिए प्रेरित करते हैं। अभियान का वर्णन समझौते की पुष्टि नहीं है।[1], [3]

चरण 5

स्वीकृति को सटीक मेटाडेटा से बाँधें

क्लाइंट स्वीकृत टूल परिभाषाओं का fingerprint रखे और अंतर मिलने पर ऑपरेटर समीक्षा तक रुक जाए। फ़ाइल, क्रेडेंशियल और नेटवर्क अनुमतियाँ अलग नीतियों से लागू हों।[1], [4], [5]

सोर्स कोड: कमज़ोर बनाम सुरक्षित कार्यान्वयन

रिपोर्ट मेटाडेटा poisoning और pull request से डिलीवरी बताती है, MCP specification में CVE नहीं। जोखिम तब होता है जब क्लाइंट शुरुआती मंज़ूरी के बाद सर्वर के बदल सकने वाले विवरण पर भरोसा करता रहता है। Pillar ने अभियान को एक सार्वजनिक GitHub खाते से जोड़ा; यहाँ यह Pillar का attribution है, सत्यापित वास्तविक पहचान नहीं। Pillar ने कहा कि समीक्षा किए गए PR उस समय GitHub PR प्रक्रिया से मर्ज नहीं हुए थे और आगे के समझौते की पुष्टि नहीं हुई। लिंक किया गया स्रोत repository अभी 404 देता है, इसलिए तकनीकी दावे Pillar की प्रकाशित जाँच पर आधारित हैं, कोड ट्री की नई स्वतंत्र जाँच पर नहीं। Python उदाहरण क्लाइंट की रक्षात्मक नीति दिखाता है; यह MCP library का तैयार प्रतिस्थापन नहीं है। CWE-829 संपादकीय वर्गीकरण है; CVE और CVSS नहीं हैं। Adapter को MCP change notifications के बाद डेटा refresh करना चाहिए और tools/list तथा prompts/get दोनों शामिल करने चाहिए; metadata_snapshot केवल उदाहरण वाला adapter method है, MCP SDK API नहीं। approved_digest ऑपरेटर समीक्षा के बाद ही बनाएँ। Snapshot में सर्वर के सभी प्रासंगिक मेटाडेटा शामिल हों: tools/list definitions और स्वीकृत prompts का पूरा prompts/get content। कार्रवाई से ठीक पहले दोबारा लें और अंतर पर कार्रवाई रोकें। यह जाँच सर्वर के व्यवहार में बदलाव या जाँच और उपयोग के बीच बदलाव नहीं पकड़ती; इसलिए अलग action permissions आवश्यक हैं।[1], [4], [5]

कमज़ोर कार्यान्वयन
def agent_metadata(session):
    # एडैप्टर सर्वर के मौजूदा टूल और प्रॉम्प्ट को JSON डेटा के रूप में लौटाता है।
    return session.metadata_snapshot()
सुरक्षित और सुदृढ़ फ़िक्स
import hashlib
import hmac
import json

def fingerprint(snapshot):
    normalized = dict(snapshot)
    for key in ("tools", "prompts"):
        normalized[key] = sorted(
            snapshot[key],
            key=lambda item: json.dumps(item, sort_keys=True, separators=(",", ":")),
        )
    canonical = json.dumps(normalized, sort_keys=True, separators=(",", ":"))
    return hashlib.sha256(canonical.encode()).hexdigest()

def agent_metadata(session, approved_digest):
    current = session.metadata_snapshot()
    if not hmac.compare_digest(fingerprint(current), approved_digest):
        raise PermissionError("MCP metadata changed; require operator approval")
    return current

इंजीनियरिंग और सिस्टम सुरक्षा चेकलिस्ट

स्रोत