ज़्यादा एजेंसी एक ऐसी कमज़ोरी है जो तब होती है, जब किसी लार्ज लैंग्वेज मॉडल (एलएलएम) को अन्य सिस्टम के साथ इंटरैक्ट करने के लिए, ज़रूरत से ज़्यादा अनुमतियां दी जाती हैं. जब कोई एलएलएम बाहरी टूल, प्लगिन या फ़ंक्शन (इसकी "एजेंसी") को कॉल कर सकता है, तो इस जोखिम की वजह से वह ऐसी कार्रवाइयां कर सकता है जो अनचाही, बिना अनुमति वाली, और संभावित रूप से नुकसान पहुंचाने वाली हों. कोई हमलावर, प्रॉम्प्ट इंजेक्शन या अन्य तरीकों का इस्तेमाल करके इस सुविधा का गलत इस्तेमाल कर सकता है. ऐसा करके, वह एलएलएम को धोखा देकर, उसे नुकसान पहुंचाने के मकसद से अपनी दी गई एजेंसी का इस्तेमाल करने के लिए मजबूर कर सकता है. मुख्य समस्या यह नहीं है कि एलएलएम कार्रवाइयां कर सकता है, बल्कि यह है कि उन कार्रवाइयों का दायरा बहुत बड़ा है और उन्हें ठीक से कंट्रोल नहीं किया जाता है.
Android डेवलपर को इस बारे में क्यों सोचना चाहिए
अपने Android ऐप्लिकेशन में एलएलएम को ज़्यादा अधिकार देने से, सुरक्षा से जुड़ी गंभीर समस्याएं हो सकती हैं:
- सिस्टम को बिना अनुमति के ऐक्सेस करना: अगर डिवाइस के फ़ाइल सिस्टम और स्टोरेज रिसॉर्स या नेटवर्क कॉल करने की सुविधा को फ़ंक्शन कॉलिंग के ज़रिए मॉडल के लिए उपलब्ध कराया जाता है, तो हमलावर प्रॉम्प्ट इंजेक्शन का इस्तेमाल करके, डिवाइस पर मौजूद फ़ाइलों (जैसे, उपयोगकर्ता के दस्तावेज़, ऐप्लिकेशन का डेटा) या कनेक्ट किए गए नेटवर्क रिसॉर्स को ऐक्सेस कर सकता है, उनमें बदलाव कर सकता है या उन्हें मिटा सकता है.
- डेटा एक्सफ़िल्ट्रेशन: अगर कोई ऐप्लिकेशन, फ़ंक्शन कॉलिंग का इस्तेमाल करके एलएलएम को स्थानीय डेटा (जैसे, रूम डेटाबेस, SharedPreferences या इंटरनल एपीआई) का ऐक्सेस देता है. नुकसान पहुंचाने वाला प्रॉम्प्ट, मॉडल को संवेदनशील जानकारी पाने और उसे ईमेल या नेटवर्क अनुरोध फ़ंक्शन जैसे बाहरी टूल को भेजने के लिए गुमराह कर सकता है.
- अन्य फ़ंक्शन/सिस्टम से समझौता करना: अगर एलएलएम के पास अन्य फ़ंक्शन को कंट्रोल करने की अनुमति है, तो हमलावर इन फ़ंक्शन को हाइजैक कर सकता है. जैसे, एसएमएस भेजना, कॉल करना, इंप्लिसिट इंटेंट का इस्तेमाल करके सोशल मीडिया पर पोस्ट करना, सिस्टम सेटिंग में बदलाव करना, और ऐप्लिकेशन में खरीदारी करना. इससे स्पैम भेजा जा सकता है, गलत जानकारी फैलाई जा सकती है या बिना अनुमति के लेन-देन किए जा सकते हैं. इससे उपयोगकर्ता को सीधे तौर पर वित्तीय नुकसान हो सकता है या उसे नुकसान पहुंच सकता है.
- सेवा से इनकार: अगर किसी एलएलएम को फ़ंक्शन कॉलिंग के साथ इंटिग्रेट किया जाता है, तो डेटाबेस क्वेरी या नेटवर्क अनुरोधों को ऐक्सेस किया जा सकता है. ऐसे में, नुकसान पहुंचाने वाला कोई प्रॉम्प्ट इन कार्रवाइयों को बार-बार ट्रिगर कर सकता है. इससे सिस्टम की परफ़ॉर्मेंस पर असर पड़ सकता है. जैसे, बैटरी का तेज़ी से खत्म होना, डेटा का ज़्यादा इस्तेमाल होना या लोकल रिसोर्स का खत्म होना.
Android ऐप्लिकेशन डेवलपर के लिए, जोखिम कम करने के तरीके
Android ऐप्लिकेशन में एआई के ज़्यादा दख़ल को कम करने के लिए, हर टूल और फ़ंक्शन पर कम से कम ज़रूरी अनुमतियां देने का सिद्धांत लागू किया जाता है. एलएलएम इन टूल और फ़ंक्शन को ऐक्सेस या ट्रिगर कर सकता है.
एआई के टूलबॉक्स को सीमित करें (ज़्यादा जानकारी वाले फ़ंक्शन बनाम ओपन-एंडेड फ़ंक्शन):
- कम से कम टूल उपलब्ध कराएं: एलएलएम के पास सिर्फ़ उन टूल (फ़ंक्शन, एपीआई, इंटेंट) का ऐक्सेस होना चाहिए जिनकी उसे आपके ऐप्लिकेशन में काम करने के लिए ज़रूरत है. अगर उसे वेब ब्राउज़ करने या ईमेल भेजने की सुविधा की ज़रूरत नहीं है, तो उसे ये सुविधाएं उपलब्ध न कराएं.
- आसान और एक मकसद के लिए इस्तेमाल होने वाले टूल का इस्तेमाल करें: ऐसे डिज़ाइन टूल बनाएं जिनका दायरा सीमित हो और जो किसी खास मकसद के लिए बनाए गए हों. उदाहरण के लिए, ऐसी टूल उपलब्ध कराएं जो सिर्फ़ किसी खास तरह की उपयोगकर्ता सेटिंग को पढ़ता हो. इसके बजाय, ऐसा सामान्य टूल उपलब्ध न कराएं जो कई डेटा सोर्स को ऐक्सेस करने के लिए, ओपन-एंडेड पैरामीटर स्वीकार करता हो. सिस्टम-लेवल के एपीआई, जैसे कि
Runtime.getRuntime().exec(), को एलएलएम के लिए उपलब्ध न कराएं. इसके लिए, मॉडल को कमांड या आर्ग्युमेंट तय करने की अनुमति दें.
एआई की क्षमताओं को सीमित करना
- Android की ज़्यादा बेहतर अनुमतियां: जब एलएलएम की मदद से ट्रिगर किया गया कोई फ़ंक्शन, Android सिस्टम के संसाधनों या अन्य ऐप्लिकेशन के साथ इंटरैक्ट करता है, तो पुष्टि करें कि आपका ऐप्लिकेशन सिर्फ़ उन Android अनुमतियों के लिए अनुरोध करता है और उन्हें अपने पास रखता है जो ज़रूरी हैं.
- उपयोगकर्ता के हिसाब से अनुमतियां: जब एलएलएम, उपयोगकर्ता की ओर से कोई कार्रवाई करता है, तो उसे उपयोगकर्ता की खास अनुमतियों और संदर्भ के साथ ऐसा करना चाहिए. एलएलएम की ओर से की गई कार्रवाई, उपयोगकर्ता के किसी खास निर्देश का सीधा जवाब होनी चाहिए.
किसी व्यक्ति को ज़िम्मेदारी सौंपना (ज़रूरी कार्रवाइयों के लिए उपयोगकर्ता की सहमति)
- उपयोगकर्ता की मंज़ूरी ज़रूरी है: एलएलएम, कोई अहम या जोखिम भरी कार्रवाई करने का सुझाव दे सकता है या उसे करने की कोशिश कर सकता है. जैसे, डेटा मिटाना, ऐप्लिकेशन में खरीदारी करना, मैसेज भेजना, ज़रूरी सेटिंग बदलना. ऐसे में, हमेशा साफ़ तौर पर उपयोगकर्ता की मंज़ूरी लें. इसके लिए, अपने यूज़र इंटरफ़ेस (यूआई) में पुष्टि करने वाला डायलॉग बॉक्स इस्तेमाल करें. इसे ऐसे समझें कि किसी बड़े फ़ैसले को मंज़ूरी देने के लिए, मैनेजर के हस्ताक्षर की ज़रूरत होती है.
भरोसा करो, लेकिन पुष्टि करो (इनपुट/आउटपुट की पुष्टि करना और मज़बूत बैकएंड)
- बैकएंड की सुरक्षा: किसी कार्रवाई की अनुमति है या नहीं, यह तय करने के लिए सिर्फ़ एलएलएम पर भरोसा न करें. एलएलएम से ट्रिगर होने वाले फ़ंक्शन, जिन बैकएंड सेवाओं या एपीआई से कनेक्ट होते हैं उनमें पुष्टि करने, अनुमति देने, और इनपुट की पुष्टि करने की मज़बूत सुविधा होनी चाहिए. इससे हर अनुरोध की दोबारा जांच की जा सकेगी. साथ ही, यह पुष्टि की जा सकेगी कि अनुरोध सही है और तय किए गए पैरामीटर के मुताबिक है.
- डेटा को साफ़ करना: अन्य कमज़ोरियों की तरह, एलएलएम में डाले गए इनपुट और एलएलएम से जनरेट हुए पैरामीटर, दोनों को सैनिटाइज़ और पुष्टि करना ज़रूरी है. ऐसा इसलिए, ताकि फ़ंक्शन कॉल के लिए किसी भी दुर्भावनापूर्ण निर्देश या अनचाहे आउटपुट का पता लगाया जा सके.
खास जानकारी
ज़्यादा एजेंसी एक गंभीर जोखिम है. इसमें एलएलएम के पास अन्य सिस्टम या फ़ंक्शन के साथ इंटरैक्ट करने की बहुत ज़्यादा अनुमतियां होती हैं. इससे उसे नुकसान पहुंचाने वाली कार्रवाइयां करने के लिए गुमराह किया जा सकता है. इसकी वजह से, Android ऐप्लिकेशन में बिना अनुमति के डेटा ऐक्सेस किया जा सकता है, सिस्टम से समझौता किया जा सकता है, वित्तीय नुकसान हो सकता है या उपयोगकर्ता को नुकसान पहुंच सकता है. जोखिम कम करने के लिए, कम से कम विशेषाधिकार के सिद्धांत का पालन किया जाता है: एलएलएम के लिए उपलब्ध टूल और Android की अनुमतियों को सीमित करें, पुष्टि करें कि हर टूल में कम से कम और खास फ़ंक्शन मौजूद हैं, और ज़्यादा असर डालने वाली सभी कार्रवाइयों के लिए, व्यक्ति की मंज़ूरी लेना ज़रूरी है.