
स्वायत्त LLM-आधारित वेब एजेंटों को नियंत्रित करने के लिए अप्रत्यक्ष प्रॉम्प्ट इंजेक्शन हमलों का अनुसंधान प्रदर्शन, ट्रिगर अनुकूलन और मूल्यांकन के लिए उपकरणों के साथ।
LLM-एकीकृत अनुप्रयोगों की सर्वव्यापकता के साथ, संभावित सुरक्षा जोखिमों की जांच करना महत्वपूर्ण है। इन प्रणालियों में सबसे महत्वपूर्ण कमजोरियों में से एक अप्रत्यक्ष प्रॉम्प्ट इंजेक्शन के माध्यम से विरोधी हमले के प्रति उनकी संवेदनशीलता है। इस रेपो में, हम एक ऐसी विधि दिखाते हैं जिसके द्वारा एक दुर्भावनापूर्ण अभिनेता एक सार्वभौमिक ट्रिगर उत्पन्न कर सकता है जो उन्हें LLM से प्राप्त एक दूरस्थ वेब नेविगेशन एजेंट के कार्यों को नियंत्रित करने की अनुमति देता है। हमें उम्मीद है कि यह जानकारी प्रस्तुत करने से चिकित्सकों को उनकी संभावित भेद्यता के बारे में जागरूक होने में मदद मिलेगी और शोधकर्ताओं को इस प्रकार के हमलों के खिलाफ सुरक्षा उपाय विकसित करने के लिए प्रेरित किया जाएगा।
इस रेपो को क्लोन करने के बाद, Browser Gym से वेब नेविगेशन बुनियादी ढांचे को स्थापित करने के लिए निम्नलिखित कमांड आवश्यक हैं:
conda create -n browser-gym
conda init
conda activate browser-gym
pip install browsergym-core
playwright install chromium
pip install transformers
कंप्यूटिंग वातावरण के आधार पर विवरण भिन्न हो सकते हैं।
यदि आप एक सार्वभौमिक ट्रिगर ऑप्टिमाइज़ेशन प्रक्रिया चलाने में रुचि रखते हैं, तो आपको वेब साइटों और वेब नेविगेशन लक्ष्यों का एक डेटासेट उत्पन्न करना होगा। यह src/actions/mask_dataset.py फ़ाइल द्वारा प्रदान किए गए कमांड के साथ पूरा किया जा सकता है। आपको कुछ API कुंजियाँ बनाने और उन्हें एक सुरक्षित वातावरण में संग्रहीत करने की भी आवश्यकता होगी।
pip install python-dotenv चलाएँ और फिर touch .env चलाएँ।OPENAI_API_KEY=<key>
GOOGLE_API_KEY=<key>
GOOGLE_ENGINE_NAME=<name>
GOOGLE_CX=<engine ID>
python -m src.dataset.actions.make_dataset get_webs चलाएँ जब तक कि आपके डेटा फ़ोल्डर में उपयुक्त संख्या में वेबसाइट json फ़ाइलें न हों।python -m src.dataset.actions.make_dataset set_goals चलाएँ। यदि आपके पास 10k से अधिक वेबसाइट json हैं तो आपको --n_batch_splits <int> फ़्लैग जोड़ना चाहिए।set_goals कमांड चलाते समय, आपके बैच आईडी टर्मिनल पर प्रिंट हो जाएंगे। यदि बैच जॉब पूर्ण हैं, तो उनके संबंधित वेबसाइट jsons में लक्ष्य ऑब्जेक्ट लिखने के लिए python -m src.dataset.actions.make_dataset get_goals --batch_ids <batch ID 1> <batch ID 2> ... चलाएँ। OpenAI द्वारा बैच जॉब को पूरा करने में 24 घंटे लग सकते हैं, इसलिए इस कमांड को सफलतापूर्वक चलाने से पहले एक दिन इंतजार करना पड़ सकता है।डेमो #1 दिखाता है कि कैसे एक हमलावर एक लिंक में एम्बेडेड मैलवेयर के साथ एक वेबसाइट होस्ट कर सकता है और एक वेब नेविगेशन एजेंट को हर बार उस लिंक पर क्लिक करने के लिए मजबूर कर सकता है। एक वेबसाइट json और वेब एजेंट आउटपुट को नियंत्रित करने के लिए एक ट्रिगर क्रमशः data/ और triggers/ फ़ोल्डर में संग्रहीत हैं।
python -m src.attack.actions.run_demo चलाने से एक नमूना वेब पेज और एक LLM चैट इंटरफ़ेस के साथ एक ब्राउज़र लॉन्च होगा। LLM चैट आपसे वेब नेविगेशन एजेंट के लिए एक लक्ष्य प्रदान करने के लिए कहेगा। विंडो में "शिकागो के लिए उड़ान खोजें" जैसा कोई कार्य लिखें। एजेंट अपेक्षित रूप से नमूना वेब पेज वाले टैब पर कार्य पूरा करेगा।
इस कार्य पर वेब नेविगेशन एजेंट पर हमला करने के लिए python -m src.attack.actions.run_demo --trigger_json triggers/zzz_travel_ad_demo_1_trigger_uni_secondary.json चलाएँ। पहले की तरह नमूना वेब पेज और LLM चैट इंटरफ़ेस के साथ एक ब्राउज़र लॉन्च किया जाएगा, और पहले की तरह, कृपया चैट विंडो में कुछ लक्ष्य लिखें। प्रक्रिया नियंत्रण के समान होगी, जिसमें एकमात्र अंतर यह होगा कि zzz_travel_ad_demo_1_trigger_uni_secondary.json फ़ाइल का ट्रिगर वेबसाइट पर एक छिपे हुए लिंक में डाला जाएगा। आपको देखना चाहिए कि इस बार, वेब एजेंट आपके द्वारा प्रदान किए गए निर्देश को अनदेखा करता है और फ़ुटर में विज्ञापन पर क्लिक करता है!
अपनी पसंद की वेबसाइट पर वेब नेविगेशन एजेंट के आउटपुट को नियंत्रित करने के लिए एक विरोधी ट्रिगर को ऑप्टिमाइज़ करने के लिए, आप find_narrow_trigger.py फ़ाइल का उपयोग कर सकते हैं। एक बार जब आप डेटासेट निर्माण उपयोगिता का उपयोग करके एक वेबसाइट json उत्पन्न कर लेते हैं, तो आप ax ट्री में कहीं '{optim_str}' टेक्स्ट डाल सकते हैं। यह हमारे द्वारा उपयोग किए जाने वाले nanogcg लाइब्रेरी को बताता है कि आप वेबसाइट में उस स्थान पर ट्रिगर डालना चाहते हैं।
pip install nanogcg चलाएँ।python -m src.attack.actions.find_narrow_trigger चलाएँ। इस कमांड लाइन उपयोगिता के विकल्प और फ़्लैग इस प्रकार हैं:-h, --help show this help message and exit
--json JSON File and path for the JSON file to find a trigger for.
--target TARGET The desired output when triggered.
--device DEVICE Device to run the model on.
--trigger_length TRIGGER_LENGTH
--include_target, --no-include_target
--loss_fn {cw,mm,ce}
--search_width SEARCH_WIDTH
--top_k TOP_K
--model {mistral-7B,mistral-24B,llama2,llama3}
The model to use for generation.
--dtype DTYPE Data type to use for the model.
हमारे वातावरण का उपयोग करके हमले के काम करने के लिए, आपके ऑप्टिमाइज़ेशन का लक्ष्य Browser Gym वेब नेविगेशन एक्शन स्पेस में एक फ़ंक्शन होना चाहिए। action_space.txt फ़ाइल देखें।
ऑप्टिमाइज़ किया गया ट्रिगर triggers/ फ़ोल्डर में एक json फ़ाइल में सहेजा जाएगा, जिसका फ़ाइल नाम संबंधित वेबसाइट डेटा json से मेल खाता है। आप उपयुक्त फ़्लैग के साथ python -m src.attack.actions.run_demo उपयोगिता का उपयोग करके अपना स्वयं का डेमो चलाने के लिए इस ट्रिगर का उपयोग कर सकते हैं।