Security Blog

आपने काम तेरह एजेंटों में बाँट दिया। Paperclip ने कुंजी नहीं बाँटी।

#431

October 2, 2026 · By Marketing team

← All posts

71,000-स्टार एजेंट फ्रेमवर्क की एक जाँच में पाया गया कि उसके तेरह में से बारह एजेंट एक ही सादे पाठ में लिखा टोकन लेकर चल रहे थे। जैसे ही आप एजेंटों का बेड़ा चलाते हैं, 'रहस्य कॉन्फ़िग में रहता है' एक शॉर्टकट होना बंद कर देता है और गुणक बन जाता है।

आपने आधुनिक तरीका अपनाया। एक बड़े एजेंट के बजाय आपने एजेंटों का एक बेड़ा खड़ा किया — एक टिकट छाँटने के लिए, एक कॉपी लिखने के लिए, एक डिज़ाइन पाइपलाइन चलाने के लिए, एक दर्जन एजेंट, हर एक का अपना काम और अपनी कॉन्फ़िग। ऐसा करना ज़्यादा सुरक्षित लगता है। विस्फोट का दायरा छोटा। कम-से-कम विशेषाधिकार ज़्यादा।

फिर एक सुरक्षा जाँच ने Paperclip नामक 71,000-स्टार एजेंट फ्रेमवर्क की कॉन्फ़िग फ़ाइलों को खंगाला और पाया कि उसके तेरह में से बारह एजेंट एक ही क्रेडेंशियल लेकर चल रहे थे — एक जैसा टोकन, हर एजेंट की कॉन्फ़िग में सादे पाठ के रूप में चिपकाया हुआ [1]। एक Anthropic API कुंजी एक डिज़ाइन एजेंट की कॉन्फ़िग में साफ़ पाठ में कोड के भीतर लिखी हुई थी। एक एजेंट के लिए बना बॉट टोकन उन एजेंटों के लिए भी पढ़ने योग्य था जिनका उससे कोई लेना-देना नहीं था।

तेरह दरवाज़े। एक कुंजी, उनमें से बारह में नकल की हुई। सबसे कमज़ोर एजेंट से उसे चुराइए और बाकी ग्यारह आपके हुए।

असल में हुआ क्या

Paperclip हर एजेंट को एक MCP सर्वर कॉन्फ़िग देता है — वह फ़ाइल जो एजेंट को बताती है कि वह किन उपकरणों और सेवाओं तक पहुँच सकता है, और उनमें प्रमाणीकरण कैसे करे। कहीं रास्ते में रहस्य सीधे उन फ़ाइलों में शाब्दिक पाठ के रूप में चले गए: एक n8n JWT, एक बेयरर टोकन, एक Anthropic API कुंजी। संदर्भित नहीं। रनटाइम पर इंजेक्ट नहीं। टाइप किया हुआ — और फिर, क्योंकि अगला एजेंट खड़ा करना कॉपी-पेस्ट है, पूरे बेड़े में दोहरा दिया गया।

जाँच ने तीन बातें चिह्नित कीं। बारह एजेंटों में साझा सादे पाठ के टोकन (रेटिंग HIGH)। एक डिज़ाइन एजेंट की कॉन्फ़िग में साफ़ पाठ में पड़ी Anthropic कुंजी (रेटिंग CRITICAL)। और उन एजेंटों के लिए दिया गया बॉट टोकन जिनके लिए वह कभी था ही नहीं — सीधा कम-से-कम विशेषाधिकार का उल्लंघन [1]। उनकी ईमानदारी की बात है, Paperclip टीम तेज़ी से हरकत में आई: उन्होंने क्रेडेंशियल संदर्भों पर स्थानांतरित किया, क्रॉस-एजेंट पठन पर कॉन्फ़िग को रेडैक्ट किया, और बाइंडिंग सिंक लागू करना शुरू किया [2]। सही दिशा।

यह Paperclip की लापरवाही नहीं है

यह हिस्सा ध्यान से देखने लायक है। Paperclip ने वही किया जो लगभग हर फ्रेमवर्क करता है। कॉन्फ़िग फ़ाइल में रहस्य रखना तीस साल से सॉफ़्टवेयर के प्रमाणीकरण का तरीका रहा है। यह काम करता था क्योंकि एक ऐप था, एक कॉन्फ़िग थी, एक ऑपरेटर था जिसे पता था कि कुंजी कहाँ रखी है।

उस आदत के नीचे से युग बदल गया। बहु-एजेंट प्रणाली एक कॉन्फ़िग वाला एक ऐप नहीं है — यह एक दर्जन प्रक्रियाएँ हैं, हर एक के पास एक फ़ाइल, हर एक पिछली की नकल। कॉन्फ़िग में सादा पाठ तब सहनीय शॉर्टकट था जब रिसाव की एक ही जगह थी। तेरह पर वही शॉर्टकट का मतलब है कि एक रिसाव तेरह रिसाव है — और "यह किस एजेंट ने किया?" का कोई उत्तर नहीं है, क्योंकि लॉग में पड़ा टोकन उन सबका था।

क्रेडेंशियल संदर्भ — जो सुधार Paperclip ने जारी किया — वाकई बेहतर हैं। लेकिन ध्यान दीजिए कि वे क्या बदलते हैं और क्या नहीं। एक संदर्भ अभी भी उस जगह एक असली रहस्य पर जाकर खुलता है जहाँ एजेंट चलता है; एजेंट, या उससे समझौता करने वाली कोई भी चीज़, खुले हुए मान को अभी भी पढ़ सकती है। और फ्रेमवर्क के अपने बग ट्रैकर में अगली विफलता पहले से दिख रही है: एक संदर्भ अपनी बाइंडिंग से तालमेल खो देता है, जिससे कॉन्फ़िग भरी हुई दिखती है जबकि सत्यापन चुपचाप विफल हो जाता है [3]। रहस्य एक परत पीछे चला गया। इमारत से बाहर नहीं गया।

यह केवल Paperclip की बात नहीं है

वही सप्ताह, वही मूल कारण, अलग रिपॉज़िटरी। एक व्यापक रूप से इस्तेमाल होने वाले कोडिंग एजेंट के खिलाफ़ इसलिए रिपोर्ट दर्ज हुई कि वह कच्चे .env मान — पासवर्ड, टोकन, API कुंजियाँ — सीधे अपनी चैट आउटपुट में छाप रहा था। एक अन्य एजेंट रनर को अपना पूरा पैरेंट एनवायरनमेंट सबप्रोसेस को सौंपते पाया गया, जिससे हर प्रोवाइडर कुंजी चाइल्ड प्रक्रिया को दिखाई दे रही थी [4]। एक वॉइस हुक ट्रांसक्रिप्ट, क्रेडेंशियल सहित, विश्व-पठनीय /tmp में लिख रहा था [5]। स्वतंत्र टीमें, स्वतंत्र खतरा मॉडल, एक साझा धारणा: कि रहस्य का वहाँ रहना ठीक है जहाँ एजेंट उसे देख सकता है। हमलावर को बस यह तर्क देना है कि यह ठीक नहीं है।

इसी के लिए, जानबूझकर बनाया गया

Clavitor विपरीत धारणा से शुरू होता है: एजेंट क्रेडेंशियल कभी धारण ही नहीं करता। वह एक कार्रवाई माँगता है; अनुरोध को रोका जाता है, ऐसे रहस्य के विरुद्ध प्रमाणित किया जाता है जिसे एजेंट पढ़ नहीं सकता, और फिर पूरा किया जाता है। टोकन चिपकाने के लिए कोई कॉन्फ़िग नहीं है, क्योंकि कॉन्फ़िग में कोई टोकन है ही नहीं। तेरह एजेंटों में नकल करने को कुछ नहीं, क्योंकि एजेंट का एनवायरनमेंट वह चीज़ कभी रखता ही नहीं जो चुराने लायक हो।

हर एजेंट केवल उसी तक पहुँचता है जिसके लिए उसका नाम रखा गया है — पूरे स्टोर तक नहीं — ताकि बॉट टोकन किसी ऐसे एजेंट के लिए पढ़ने योग्य न बन जाए जिसने उसे कभी माँगा ही नहीं। और हर कार्रवाई उस विशिष्ट कर्ता के नाम दर्ज होती है जिसने उसे की — कभी उस साझा टोकन के नाम नहीं जो बारह एजेंटों के पास एक जैसा था — ताकि "यह किसने किया?" का उत्तर हो।

ईमानदार सीमा: यह किसी एजेंट को हैक-प्रूफ़ नहीं बनाता। समझौते का शिकार एजेंट अभी भी उसी क्षण वे काम कर सकता है जिनके लिए उसे अधिकृत किया गया था। वह जो नहीं कर सकता वह यह है कि कुंजी उठाकर चलता बने और बाकी बारह बन जाए — क्योंकि उसके हाथ में चुराने को कोई कुंजी है ही नहीं।

सबक "टोकन बदल दो" नहीं है

Paperclip टोकन बदलेगा, स्थानांतरण पूरा करेगा, और मुद्दे बंद करेगा। अच्छा है — करना चाहिए। लेकिन टोकन बदलना सबक नहीं है। सबक यह है कि जिस क्षण आपके पास एक ऐप के बजाय एजेंटों का बेड़ा होता है, "रहस्य कॉन्फ़िग में रहता है" शॉर्टकट होना बंद कर देता है और गुणक बन जाता है। आप रहस्य को थोड़ा पढ़ने में कठिन बनाकर गुणक को ठीक नहीं करते। आप इसे इस तरह ठीक करते हैं कि रहस्य कभी एजेंट के हाथ में था ही नहीं।

हमने वे नियम लिख दिए हैं जो हमारे विचार में एजेंट युग में किसी क्रेडेंशियल उपकरण को निभाने चाहिए — उनमें यह कि रहस्य कभी वहाँ न रहे जहाँ कोड चलता है, और यह कि एजेंट केवल उसी तक पहुँचे जिसका उसका नाम है। अपने एजेंट को इन पर परखिए: clavitor.ai/rules।

Clavitor (@clavitorai) AI एजेंटों के लिए बना क्रेडेंशियल वॉल्ट है, और उनके विरुद्ध भी। clavitor.ai

स्रोत

[1] Paperclip एजेंट फ्रेमवर्क — क्रेडेंशियल स्वच्छता निष्कर्ष (CFG-H1 साझा सादे पाठ के टोकन, CFG-C1 कोड में लिखी Anthropic कुंजी, CFG-H2 गलत-स्कोप वाला बॉट टोकन): https://github.com/paperclipai/paperclip

[2] Paperclip — लाइफ़साइकल फ़्लो में एजेंट सीक्रेट-बाइंडिंग सिंक लागू करें (मर्ज किया गया): https://github.com/paperclipai/paperclip/pull/8307

[3] Paperclip — secret_ref env प्रविष्टियाँ secret_bindings पंक्तियों से तालमेत खो सकती हैं, कॉन्फ़िग भरी हुई दिखती है पर सत्यापन चुपचाप विफल हो जाता है (#8309): https://github.com/paperclipai/paperclip/issues/8309

[4] Chetter — runBatchAgent पूरा रनर एनवायरनमेंट विरासत में लेता है, जिससे प्रोवाइडर API कुंजियाँ सबप्रोसेस को दिखाई देती हैं (#56): https://github.com/flatout-works/chetter/issues/56

[5] Claude Code वॉइस हुक — पूरी ट्रांसक्रिप्ट (क्रेडेंशियल सहित) विश्व-पठनीय /tmp में लिखी जाती है (#58): https://github.com/rodlaneedu-hash/claude-code-voice-hook/issues/58