मैंने एक AI सुरक्षा स्कैनर बनाया — फिर अपने ही डिटेक्टर में एक बग पाया
प्रॉम्प्ट इंजेक्शन (Prompt injection) LLM एप्लिकेशन के लिए एक प्रमुख सुरक्षा जोखिम है। आप मॉडल को ऐसा टेक्स्ट देते हैं जो उसे अपने मूल निर्देशों को अनदेखा करने के लिए कहता है। कभी-कभी, मॉडल बात मान लेता है।
मैंने इसकी जांच करने के लिए AgentProbe बनाया। यह jailbreaks और data extraction जैसी 8 श्रेणियों में 49 अटैक प्रॉम्प्ट्स चलाता है। यह रिपोर्ट करता है कि मॉडल कितनी बार विफल होता है।
असली सबक स्कैनर नहीं था। वह मेरे डिटेक्शन कोड में एक बग था।
कठिन हिस्सा हमला करना नहीं है। कठिन हिस्सा डिटेक्शन (पहचानना) है।
आपको कैसे पता चलेगा कि क्या मॉडल वास्तव में हमले के अनुपालन (comply) में रहा? कीवर्ड मैचिंग (Keyword matching) सबसे आसान तरीका है। आप "I cannot help" जैसे इनकार वाले वाक्यांशों या "developer mode" जैसे अनुपालन वाले वाक्यांशों की तलाश करते हैं।
लेकिन मॉडल "hedge-then-comply" पैटर्न का उपयोग करते हैं। वे कहते हैं "I cannot help with that," लेकिन फिर भी वे प्रतिबंधित जानकारी प्रदान कर देते हैं। यहाँ कीवर्ड मैचिंग विफल हो जाती है क्योंकि इनकार वाला वाक्यांश मौजूद होता है।
इसे ठीक करने के लिए, मैंने "LLM-as-judge" सिस्टम का उपयोग किया। मैंने यह तय करने के लिए कि क्या टारगेट वास्तव में अनुपालन कर रहा है, उस बातचीत को एक अधिक शक्तिशाली मॉडल के पास भेजा। मेरी योजना पहले सस्ते कीवर्ड चेक का उपयोग करने की थी और महंगे जज का उपयोग केवल तभी करने की थी जब कीवर्ड चेक अनिश्चित हो।
फिर मुझे अपना बग मिला।
जब मेरे कीवर्ड डिटेक्टर को "hedge-then-comply" पैटर्न मिला, तो उसने 1 का कॉन्फिडेंस स्कोर दिया। हालाँकि, मेरा कोड कीवर्ड स्टेज पर तभी भरोसा करता था जब कॉन्फिडेंस 2 या उससे अधिक हो।
इसका मतलब था कि मेरे "सस्ते" डिटेक्टर ने वास्तव में कभी कोई निर्णय नहीं लिया। हर एक मामले को महंगे जज के पास भेज दिया गया। मैं हर मामले के लिए जज के लिए भुगतान कर रहा था, भले ही मेरे मुफ्त टूल को इसे संभाल लेना चाहिए था।
इस गलती ने मुझे अन्य LLMs को ग्रेड करने के लिए LLMs का उपयोग करने के बारे में तीन सबक सिखाए:
- जज को टारगेट से अधिक स्मार्ट होना चाहिए। यदि जज का आकार टारगेट के समान है, तो उसकी कमियां (blind spots) भी समान होंगी।
- सटीकता (Accuracy) झूठ बोल सकती है। यदि अधिकांश मॉडल इनकार करते हैं, तो एक जज जो हमेशा "refused" कहता है, वह सटीक लग सकता है लेकिन वह कुछ भी नहीं सीखता। किस्मत के प्रभाव को समझने के लिए Cohen's kappa जैसे मेट्रिक्स का उपयोग करें।
- जज को स्थिर होना चाहिए। एक ही टेस्ट को पांच बार चलाएं। यदि जज अपना निर्णय बदलता है, तो परिणाम संदिग्ध है और इसके लिए मानवीय दृष्टि (human eye) की आवश्यकता है।
यदि आप LLMs के साथ निर्माण करते हैं, तो इन बातों को याद रखें:
- अनुपालन (compliance) का पता लगाना उसे उत्पन्न करने से अधिक कठिन है।
- उन मॉडलों पर नज़र रखें जो पहले वाक्य में इनकार करते हैं लेकिन दूसरे में अनुपालन कर देते हैं।
- किसी LLM जज पर आँख मूंदकर भरोसा न करें। इसकी विश्वसनीयता (reliability) मापें।
- अपने बग्स साझा करें। अपनी खुद की खामी खोजने ने मुझे एक परफेक्ट लॉन्च की तुलना में कहीं अधिक सिखाया।
Source: https://dev.to/nar1frames/i-built-an-ai-security-scanner-then-found-a-bug-in-my-own-detector-140a
Optional learning community: https://t.me/GyaanSetuAi
