Agent सुरक्षाएडवांस्डपाठ 175 मिनट का पाठ

हमले जो एजेंट्स के बीच फैलते हैं

जब एजेंट्स आपस में बात करते हैं, तो एक अकेला ज़हरीला मैसेज पूरे सिस्टम में फैल सकता है और सिस्टम को पता भी नहीं चलता कि उस पर हमला हो रहा है।

पाठ वीडियो में

60 सेकंड में

हमले जो एजेंट्स के बीच फैलते हैं

जब एजेंट्स आपस में बात करते हैं, तो एक अकेला ज़हरीला मैसेज पूरे सिस्टम में फैल सकता है और सिस्टम को पता भी नहीं चलता कि उस पर हमला हो रहा है।

1/6
आसान शब्दों में
ग्रुप प्रोजेक्ट में एक बच्चा कोई फ़र्ज़ी नोट पढ़ लेता है और बाकी सबको बता देता है। अब पूरा ग्रुप उस पर यकीन कर लेता है, और किसी को याद नहीं रहता कि यह बात आई कहाँ से थी।
मल्टी-एजेंट सिस्टम में, एक एजेंट का आउटपुट दूसरे एजेंट का इनपुट बन जाता है। अगर एजेंट A पर इंजेक्शन हुआ है, तो एजेंट B को हमलावर के निर्देश एजेंट A की वर्दी पहने मिलते हैं — जो एक इंटरनल चैनल से आते हैं, जिन पर "internal research summary" का लेबल लगा होता है, और उस लेबल से मिलने वाला पूरा भरोसा भी।
Poisoned pageResearcher"findings"PlannerEmailer · has sendthe planner never saw the internet — it just trusted a teammatetaint travels; trust labels do not check it
एक वेब पेज से बाहर जाने वाले ईमेल तक सिर्फ़ तीन हॉप, और किसी भी कॉम्पोनेंट ने ऐसा कुछ नहीं किया जिसके लिए उसे डिज़ाइन न किया गया हो।

एजेंट्स की टीमों में होने वाली ख़ास गड़बड़ियाँ

नामक्या होता हैइसे पकड़ना मुश्किल क्यों है
इंजेक्शन रिलेएक दूषित मैसेज को भरोसेमंद मानकर अंदर आगे भेज दिया जाता हैहर हॉप सामान्य इंटरनल ट्रैफ़िक जैसा लगता है
पर्मिशन पूलिंगअकेले-अकेले सुरक्षित दिखने वाले एजेंट्स मिलकर एक असुरक्षित चेन बना देते हैंकोई भी अकेला एजेंट हद से ज़्यादा अधिकारों वाला नहीं दिखता
कंसेंसस थिएटरएक क्रिटिक एजेंट मंज़ूरी दे देता है क्योंकि उसने वही ज़हरीला टेक्स्ट पढ़ा थायह "रिव्यू" का एक ऐसा दिखावा बना देता है जिसका कोई मतलब नहीं होता
रनअवे लूप्सएजेंट्स एक-दूसरे को तब तक कॉल करते रहते हैं जब तक बजट या रेट लिमिट ख़त्म न हो जाएयह कोई गड़बड़ी नहीं, बल्कि सामान्य काम जैसा दिखता है
ब्लेम डिफ़्यूज़नग़लत काम एक लंबी और वाजिब लगने वाली चेन का सबसे आख़िरी कदम होता हैहर एक कदम अलग से रिव्यू पास कर लेता है

डिज़ाइन के ऐसे नियम जो टिके रहें

  1. 1

    टेंट लेबल्स डेटा के साथ चलते हैं

    हर मैसेज के साथ यह जानकारी रहती है कि उसका कंटेंट असल में कहाँ से आया था। दूषित कंटेंट किसी इंसान की मंज़ूरी के बिना कभी भी कोई राइट (write) एक्शन शुरू नहीं कर सकता।
  2. 2

    सिर्फ़ स्ट्रक्चर्ड मैसेज

    एजेंट्स आम बोलचाल वाले पैराग्राफ़ के बजाय टाइप्ड फ़ील्ड्स का आदान-प्रदान करते हैं। तीन नाम वाले स्ट्रिंग फ़ील्ड्स वाला JSON ऑब्जेक्ट किसी पैराग्राफ़ की तुलना में घुसपैठ के लिए बहुत छोटा दरवाज़ा होता है।
  3. 3

    इंटरनेट से जुड़ा सिर्फ़ एक एजेंट

    सिर्फ़ एक कॉम्पोनेंट गैर-भरोसेमंद कंटेंट को छूता है, और उस कॉम्पोनेंट के पास पढ़ने के अलावा कोई और टूल नहीं होता। बाकी सब कुछ उसके पीछे रहता है।
  4. 4

    शक्तियों का कुल जोड़ देखें

    पूरा ग्राफ़ बनाएँ और सोचें कि इसमें सबसे ज़्यादा नुकसान पहुँचाने वाला रास्ता कौन-सा है। उस रास्ते को रोकने के लिए डिज़ाइन तैयार करें।
  5. 5

    हर जगह सख्त बजट

    कदम, समय, ख़र्च — प्रति-एजेंट भी और पूरे सिस्टम में भी। लूप्स का कभी-न-कभी बनना तय है; पक्का करें कि वे सस्ते पड़ें।
  6. 6

    एक ट्रेस, एक ID

    हर हॉप एक ही correlation ID शेयर करता है ताकि घटना के बाद आप पूरी चेन को दोबारा जोड़कर देख सकें।
ख़तरा
क्रिटिक या वेरिफ़ायर एजेंट को कभी भी सुरक्षा नियंत्रण न समझें। वह हमलावर का लिखा वही टेक्स्ट पढ़ रहा होता है जिसे उसका साथी एजेंट पढ़ रहा है, और जो वाक्य एक को बेवकूफ़ बना सकता है, वह आमतौर पर दूसरे को भी बना देगा।
यह करें
अगर आपको असली रोक-टोक चाहिए, तो ऐसी जाँच बनाएँ जो गैर-भरोसेमंद टेक्स्ट को पढ़े ही नहीं: प्रस्तावित एक्शन पर साधारण कोड का एक नियम। "₹5,000 से ज़्यादा के रिफ़ंड के लिए किसी इंसान की मंज़ूरी ज़रूरी है।" कोड को बहकाया नहीं जा सकता।

और देखें और पढ़ें

लैब

मल्टी-एजेंट ग्राफ़ में टेंट ट्रैकिंग, जिसे हॉप्स में नापा जाता है।

~20 min

समस्या

Lab 6 के तीन-एजेंट सिस्टम को लें और उसमें यह व्यवस्था जोड़ें: हर मैसेज के साथ एक टेंट लेबल हो जो उसका मूल स्रोत बताए। हर एंट्री पॉइंट पर इंजेक्शन करें और नापें कि कुछ ऐसा होने से पहले कितने हॉप लगते हैं जिसे बदला न जा सके। फिर यह नियम लागू करें: दूषित डेटा जानकारी दे सकता है, पर कभी मंज़ूरी नहीं दे सकता।
शुरुआती कोडpython
from dataclasses import dataclass

@dataclass
class Message:
    content: str
    taint: str | None          # None = trusted; else the origin
    hops: int = 0

    def forward(self, content):
        return Message(content, self.taint, self.hops + 1)

def can_authorise(msg: Message) -> bool:
    return msg.taint is None      # tainted data never authorises a write
Google Colab खोलें ↗इस कोड के लिए आपके अपने सेटअप की ज़रूरत है (एक मॉडल, एक GPU या अतिरिक्त पैकेज)। इसे Google Colab में चलाएं: File → Upload notebook।

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1प्लानर रीडर के आउटपुट की समरी बनाता है। उस समरी में हमलावर का कोई शब्द नहीं है। क्या वह अब भी दूषित है?दिखाएं
हाँ। टेंट प्रभाव को ट्रैक करता है, शब्दों को नहीं। हमलावर के नियंत्रण वाले इनपुट से बनी समरी हमलावर के प्रभाव में होती है — उसकी सामग्री, ज़ोर और निष्कर्ष उस टेक्स्ट से तय हुए हैं जिस पर आप भरोसा नहीं करते। समरी बनाने पर टेंट हटा देना बिल्कुल वैसे ही है जैसे किसी चीज़ को धो-पोंछकर साफ़ दिखाना, और यह ऐसा शॉर्टकट है जिसका मन ललचाता है क्योंकि आउटपुट साफ़-सुथरा दिखता है।
Q2आपके सिस्टम को खरीदारी करने के लिए दूषित रिसर्च की ज़रूरत है। इसे इस तरह डिज़ाइन करें कि यह सुरक्षित रहे, या साबित करें कि ऐसा नहीं हो सकता।दिखाएं
यह सुरक्षित हो सकता है, अगर मंज़ूरी देने का अधिकार दूषित रास्ते से न होकर अलग रास्ते से गुज़रे। दूषित रास्ता सिर्फ़ एक टाइप्ड ऑब्जेक्ट के रूप में प्रस्ताव दे सकता है — जैसे पहले से तय लिस्ट में से वेंडर, एक तय सीमा के अंदर की रकम, और ऐसा SKU जो आपके कैटलॉग में मौजूद होना ही चाहिए। किसी इंसान को मॉडल की बनाई भाषा के बजाय सिर्फ़ इन तर्कों से बनी समरी दिखाने से पहले, हर फ़ील्ड की भरोसेमंद डेटा से जाँच की जाती है। दूषित कंटेंट कभी मंज़ूरी नहीं देता; वह सिर्फ़ तय खानों को भरता है जिनकी जाँच भरोसेमंद कोड करता है। अगर किसी भी फ़ील्ड की जाँच किसी भरोसेमंद स्रोत से नहीं की जा सकती, तो उस फ़ील्ड के लिए किसी इंसान की मंज़ूरी ज़रूरी है, बात ख़त्म।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

क्या एजेंट्स को आपस में नैचुरल लैंग्वेज में बात करनी भी चाहिए?

यह आसान ज़रूर लगता है, लेकिन यह ख़तरे का दरवाज़ा बड़ा कर देता है। एजेंट्स के बीच स्ट्रक्चर्ड मैसेज काफ़ी ज़्यादा सुरक्षित होते हैं। नैचुरल लैंग्वेज को इंसानों से बातचीत तक ही सीमित रखें, जहाँ इसकी वाकई ज़रूरत है।

मैं किसी मल्टी-एजेंट सिस्टम की टेस्टिंग कैसे करूँ?

हर एंट्री पॉइंट पर इंजेक्शन करें और देखें कि वह खराबी (taint) कितनी दूर तक जाती है। आपका टेस्ट यह नहीं है कि "क्या कोई एजेंट बेवकूफ़ बना" — बल्कि यह है कि "कुछ ऐसा होने से पहले कितने हॉप लगे जिसे बदला न जा सके।" आपको इसी संख्या को कम करना है।

क्या पाँच छोटे एजेंट्स के मुकाबले एक बड़ा एजेंट ज़्यादा सुरक्षित है?

अक्सर हाँ, अगर वे छोटे एजेंट्स मिलकर ज़्यादा ताकत रखते हों। तीन टूल्स वाला एक अकेला एजेंट उन पाँच एजेंट्स से बेहतर है जिनके पास आपस में मिलकर बारह टूल्स हैं। अलग-अलग हिस्सों को नहीं, कुल जोड़ को गिनें।

अगर अलग-अलग कंपनियों के एजेंट्स आपस में बात कर रहे हों तो क्या होगा?

तब आपने भरोसे की सीमा पार कर ली है और दूसरी तरफ किसी और की सुरक्षा व्यवस्था है। आने वाले हर मैसेज को पूरी तरह से गैर-भरोसेमंद कंटेंट मानें, बिल्कुल किसी अजनबी के ईमेल की तरह — क्योंकि असल में वह वही है।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें