प्रोडक्शन AI सिस्टम्स पर इमेज स्केलिंग हमलों का हथियारीकरण
(blog.trailofbits.com)- इमेज स्केलिंग भेद्यता का उपयोग करके प्रोडक्शन वातावरण के AI सिस्टम्स पर हमला किया जा सकता है
- ऊपर से सामान्य दिखने वाली इमेज, डाउनस्केलिंग के समय prompt injection payload में बदलकर डेटा लीक का कारण बन सकती है
- यह हमला Google Gemini CLI सहित विभिन्न वास्तविक सेवाओं में सत्यापित किया गया है, और उपयोगकर्ता की धारणा तथा मॉडल इनपुट के बीच असंगति का दुरुपयोग करता है
- डाउनस्केलिंग algorithms और उनकी अलग-अलग implementations के अनुसार हमले की तकनीक और प्रभाव अलग होते हैं, और ओपन सोर्स टूल Anamorpher से इमेज अटैक का प्रयोग किया जा सकता है
- बचाव के लिए इनपुट preview उपलब्ध कराना, सुरक्षित design patterns लागू करना, और उपयोगकर्ता से स्पष्ट स्वीकृति लेना जैसी सिफारिशें की गई हैं
पृष्ठभूमि और समस्या
- LLM जैसे AI सिस्टम्स में सामान्य दिखने वाली इमेज इनपुट करने पर, डाउनस्केलिंग प्रक्रिया में छिपी हुई multimodal prompt injection सक्रिय होकर उपयोगकर्ता डेटा को बाहरी जगह लीक करने वाला हमला संभव है
- यह भेद्यता इसलिए पैदा होती है क्योंकि मॉडल तक वास्तव में पहुंचाई जाने वाली इमेज स्केलिंग प्रक्रिया से गुजरती है, और इसी दौरान हमलावर द्वारा डाला गया payload प्रकट होता है
प्रोडक्शन AI सिस्टम्स को निशाना बनाने वाले इमेज स्केलिंग हमले
- इस ब्लॉग पोस्ट में Gemini CLI, Vertex AI Studio, Gemini web और API, Google Assistant, Genspark जैसे कई वास्तविक AI प्रोडक्ट्स पर इमेज स्केलिंग भेद्यता के व्यावहारिक हमलों में दुरुपयोग का प्रदर्शन किया गया है
- Anamorpher नामक ओपन सोर्स टूल के जरिए ऐसे कस्टम इमेज आसानी से बनाए और सत्यापित किए जा सकते हैं
डेटा लीक हमले का उदाहरण (Gemini CLI)
- Gemini CLI में डिफ़ॉल्ट सेटिंग्स के तहत Zapier MCP server उपयोगकर्ता की पुष्टि के बिना सभी MCP tool calls को अपने-आप approve कर देता है (
settings.jsonमेंtrust=Trueसेटिंग) - जब उपयोगकर्ता सामान्य दिखने वाली इमेज अपलोड करता है, तो डाउनस्केल की गई इमेज में मौजूद prompt injection के कारण Google Calendar का डेटा हमलावर के ईमेल पर लीक हो जाता है
- चूंकि वास्तविक preview उपलब्ध नहीं होता, इसलिए उपयोगकर्ता न तो बदले हुए परिणाम को देख पाता है और न ही हमले की मौजूदगी को जान पाता है
- इसी तरह के prompt injection हमले Claude Code, OpenAI Codex जैसे कई agent-आधारित coding tools में भी पहले से देखे जा चुके हैं
- इन tools में डिफ़ॉल्ट रूप से असुरक्षित settings और system patterns बहुत हैं, इसलिए मूलभूत सुधार जरूरी हैं
अतिरिक्त हमले के उदाहरण
- Vertex AI, Gemini web interface, Gemini API, Google Assistant, Genspark में भी इमेज स्केलिंग-आधारित prompt injection हमले सफलतापूर्वक किए गए
- खासकर Vertex AI Studio में उपयोगकर्ता केवल high-resolution इमेज देख सकता है, इसलिए मॉडल द्वारा ग्रहण की जाने वाली डाउनस्केल की गई इमेज दिखाई नहीं देती
- नतीजतन, उपयोगकर्ता की धारणा और वास्तविक मॉडल इनपुट के बीच असंगति हमले को आसान बना देती है
- attack vector कई सिस्टम्स और tools में व्यापक रूप से फैला हुआ है
इमेज स्केलिंग हमले की आंतरिक कार्यप्रणाली
- यह हमला इमेज डाउनस्केलिंग (resampling) algorithms की interpolation विशेषताओं का दुरुपयोग करता है
- प्रमुख डाउनस्केलिंग algorithms में Nearest Neighbor, Bilinear, Bicubic Interpolation शामिल हैं, और हर एक के लिए उसके अनुरूप हमला तकनीक चाहिए
- लाइब्रेरी के अनुसार (Pillow, PyTorch, OpenCV, TensorFlow) anti-aliasing, alignment, internal bugs जैसी implementation differences भी मौजूद हैं
- हमलावर को हर सिस्टम में उपयोग किए जा रहे algorithm और implementation की fingerprinting करनी पड़ती है, तभी हमला बेहतर ढंग से optimize किया जा सकता है
- checkerboard patterns, concentric circles, banded patterns, Moiré, slanted edges जैसी कई test images का उपयोग करके algorithm के गुण और artifacts का विश्लेषण किया जाता है
इमेज sampling का सिद्धांत और Nyquist–Shannon theorem
- जब किसी रिबन पर बहुत बारीक pattern हो और उसे निश्चित अंतराल पर sample किया जाए, तो sampling rate कम होने पर मूल pattern सही तरह पुनर्निर्मित नहीं होता और विकृति पैदा होती है
- इसे Nyquist–Shannon sampling theorem में बताए गए aliasing प्रभाव से समझाया जाता है, और हमलावर pixels को इस तरह बदलता है कि डाउनस्केलिंग के बाद कोई खास pattern दिखाई दे
Anamorpher: हमलावर इमेज बनाने का टूल
- Anamorpher एक ओपन सोर्स टूल है, जो प्रमुख डाउनस्केलिंग algorithms (Nearest Neighbor, Bilinear, Bicubic) के लिए attack images बनाना और visualize करना संभव बनाता है
- उदाहरण के लिए, Bicubic Interpolation में 4x4 क्षेत्र के 16 pixels के आधार पर आसपास के pixels को weight देकर output pixel value तय की जाती है
- हमलावर उच्च contrast वाली इमेज (जैसे गहरा काला background) चुनता है और अधिक महत्व वाले pixels की brightness को optimize करता है (least squares method), ताकि डाउनस्केलिंग का परिणाम साफ़ attack pattern बने
- Anamorpher frontend interface और Python API प्रदान करता है, और backend modularization के जरिए उपयोगकर्ता custom downscaling algorithms तक का प्रयोग कर सकता है
बचाव और प्रतिक्रिया उपाय
- सबसे सुरक्षित तरीका यह है कि इमेज डाउनस्केलिंग का इस्तेमाल ही न किया जाए और अपलोड की जा सकने वाली इमेज के आकार को सीमित किया जाए
- यदि परिवर्तन और डाउनस्केलिंग अपरिहार्य हों, तो CLI और API सहित सभी input channels में वास्तविक मॉडल इनपुट इमेज का preview अवश्य उपलब्ध कराया जाना चाहिए
- खासकर इमेज के भीतर का टेक्स्ट संवेदनशील tool calls को trigger न कर सके, इसके लिए स्पष्ट उपयोगकर्ता स्वीकृति अनिवार्य होनी चाहिए, और पूरे सिस्टम में सुरक्षित design patterns तथा व्यवस्थित mitigation measures लागू करने चाहिए
आगे की चुनौतियाँ
- मोबाइल और edge devices में निश्चित इमेज आकार सीमाएं और अप्रभावी डाउनस्केलिंग algorithms का उपयोग अधिक होने के कारण जोखिम और बढ़ सकता है
- voice AI के साथ संयोजन, अधिक परिष्कृत algorithms और injection detection methods, semantic prompt injection, upscaling artifacts के उपयोग जैसे क्षेत्रों में आगे शोध और बचाव रणनीतियों की जरूरत है
निष्कर्ष
- Anamorpher फिलहाल beta चरण में है
- आगे multimodal और agent-आधारित AI सिस्टम्स की security research के साथ, उचित feedback और सुधार की अपेक्षा है
1 टिप्पणियां
Hacker News राय
शुरुआत में मैं काफ़ी भ्रमित था, लेख में यह ठीक से नहीं बताया गया था कि prompt injection वास्तव में कैसे किया गया… मुझे लगा शायद यह image के hex data को बदलकर उसे ASCII में बदलने जैसी कोई side effect वाली चीज़ होगी
फिर समझ आया, यह सचमुच <i>image में render किए गए text को छिपाने का तरीका</i> था
वाह, यह सच में बहुत दिलचस्प है
इस attack method पर काफ़ी समय से चर्चा होती रही है, यह paper देखा जा सकता है
डरावनी बात यह है कि image को scale करने पर उसे पूरी तरह अलग image की तरह दिखाया जा सकता है
उदाहरण के लिए, अगर किसी समूह को अवैध images रखने के आरोप में गिरफ्तार करना हो, तो इस scaling trick का इस्तेमाल करके image को meme, राजनीतिक संदेश, या ऐसी किसी चीज़ में बदला जा सकता है जिसे target group download करना चाहे
VLM systems बनाने वाले की नज़र से देखें तो यह हिस्सा सच में डरावना है
अब VLMs के लिए अलग OWASP guidelines की ज़रूरत है
लगभग हर महीने किसी नई attack technique के बारे में सुन रहा हूँ
वैसे OWASP ने हाल में यह material जारी किया है: Multi-Agentic System Threat Modeling Guide
शुरुआत में मुझे image के अंदर का text बिल्कुल दिखाई नहीं दिया
यह सिर्फ resizing की समस्या नहीं है, असली दिक्कत यह है कि image में मौजूद text को prompt के हिस्से की तरह treat किया जाता है और agent किस निर्देश का पालन कर रहा है, इसमें transparency नहीं है
सच में दिलचस्प हिस्सा वह adversarial image है, जो downscaling के समय अलग दिखने के लिए बनाई गई है
downsampling (samples की संख्या घटाना) एक पारंपरिक तरीका है और इसमें AI शामिल नहीं होता
यही हिस्सा मुझे समझना था
render किया गया text मशीन को पढ़ने के लिए OCR की ज़रूरत होती है, तो समझ नहीं आता कि AI यह महँगी प्रक्रिया क्यों करे
अगर यह किसी multimodal system का हिस्सा है, तो हो सकता है वह उस text को prompt से अलग ही न कर पाए
अगर ऐसा है, तो यह flaw सच में समझ से बाहर है
कम से कम OCR feature को अपने-आप परिणाम prompt में inject नहीं करना चाहिए, बल्कि user को सूचना देकर पुष्टि लेनी चाहिए
मुझे ऐसे non-deterministic और अस्थिर systems पसंद नहीं हैं
सच में चाहता हूँ कि चीज़ें फिर से algorithm और ठोस engineering पर लौटें
यह समस्या तभी होती है जब permissions ढीली हों
लेकिन आजकल trend ज़्यादा agentic systems का है, और इन systems को अक्सर ज़्यादा ढीली permissions चाहिए होती हैं
उदाहरण के लिए, ऐसा humanoid robot सोचिए जो घर के बाहर रखा parcel उठाकर लाता हो
parcel उठाने के लिए vision capability ज़रूरी है
अगर कोई parcel पर image चिपकाकर prompt injection की कोशिश करे, तो robot को घर की कीमती चीज़ें खिड़की से बाहर फेंकने तक के लिए उकसाया जा सकता है
मुझे लगता है ऐसे systems को prompt injection से बचाना बहुत ज़रूरी है
यहाँ असली समस्या यह नहीं है कि image में prompt छिपा है, बल्कि यह है कि robot यह पहचान नहीं सकता कि आदेश ऐसे source से आया है जिसे उस action की permission नहीं है
ML models की बुनियादी समस्या यह है कि reasoning model की token stream के ज़रिए होती है, और यह stream बाहरी input भी साथ में लेती है, इसलिए model के पास अपने विचार और बाहरी input को प्रभावी ढंग से अलग करने का कोई तंत्र नहीं है
इसे system में सीधे integrate किया जाना चाहिए
उदाहरण के लिए, agent को अपनी arm से destructive action करने में सक्षम नहीं होना चाहिए
अगर आप यह उम्मीद कर रहे हैं कि free will के साथ मशीनें इंसानी morality हासिल कर लेंगी, और बस 'अच्छे prompts' और 'बुरे prompts' में फर्क करने की कोशिश करेंगे, तो आगे भी ऐसे systems के ख़तरों पर हैरान होते रहेंगे
संक्षेप में, verifiable governance और behavioral determinism ऐसे systems के लिए अनिवार्य हैं
शायद prompt injection के countermeasures से भी ज़्यादा महत्वपूर्ण
robot को एक prompt दे दीजिए कि वह fake prompts को ignore करे, समस्या हल हो जाएगी
आम तौर पर लगता है कि prompt injection की समस्या को task-specific hierarchy से काफ़ी हद तक हल किया जा सकता है
LLM को काम छोटे-छोटे components में बाँटकर करवाया जा सकता है
higher-level task वाला LLM lower-level details को खुलकर जानने की ज़रूरत नहीं रखता, वह सिर्फ result को filter और refine कर सकता है
इससे higher-level task LLM instance का context भी सीमित रहता है, और उसका focus बना रहता है
बेशक lower-level task ऊपर की तरफ data भेज सकता है, लेकिन architecture को ऐसा होना ज़रूरी नहीं है
अगर task security-sensitive है, तो upper LLM को unrestricted output न मिलना ही बेहतर हो सकता है
अच्छे image scaling algorithms को Nyquist limit का ज़रूर ध्यान रखना चाहिए
उदाहरण के लिए, bicubic scaling से image को उसके मूल आकार के 1/3 तक घटाते समय 4x4 नहीं बल्कि 12x12 grid इस्तेमाल करनी चाहिए
लागू weights निकालने वाले formula को भी थोड़ा बदलकर इस्तेमाल किया जा सकता है
image की de-gamma correction भी ज़रूरी है
अफ़सोस की बात है कि अच्छा scaling वाकई बहुत कम मिलता है
वे काफ़ी aliasing (सूचना विकृति) को यूँ ही पास होने देते हैं
paper में भी लिखा है कि kernel size काफ़ी बड़ा कर दें तो algorithm अच्छा होने पर भी quantization की वजह से कुछ information बच सकती है, लेकिन उसका असर बहुत घट जाता है
हैरानी की बात है कि प्रसिद्ध libraries अब भी सिर्फ mipmapping (पहले से कई sizes बनाकर इस्तेमाल करने का तरीका) ही इस्तेमाल कर रही हैं
अच्छे resampling filters तो 15 साल पहले के CPU पर भी real-time video processing में इस्तेमाल हो चुके थे
कई बार gamma correction, kernel size बढ़ाने से भी ज़्यादा computation ले लेती है
case के हिसाब से gamma correction के बजाय filter resample को छोड़ना सच में जायज़ हो सकता है
LLMs का security future सच में डरावना है
हमने बहुत trial and error के बाद सीखे गए ‘In-band signaling (उसी channel में data और command को अलग रखना)’ के सिद्धांत को पूरी तरह नज़रअंदाज़ कर दिया है
सीधे दिखने वाले commands डालने के तरीकों से लेकर, ऐसे obfuscation methods, ASCII Smuggling जैसे कई attack vectors हैं
बचाव के नाम पर बस इतना है कि non-deterministic algorithm से विनती की जाए कि वह अनुचित निर्देशों का पालन न करे
संदर्भ: Unicode tags से text छिपाना और ढूँढ़ना
अब ज़्यादा से ज़्यादा developers LLM से सही व्यवहार करने की भीख माँग रहे हैं
इसमें कुछ Warhammer 40k जैसा माहौल लगता है, जो मज़ेदार भी है और डरावना भी
दूसरा विकल्प यह है कि LLM या LLM-आधारित systems का इस्तेमाल ही न किया जाए
यह ठीक वैसा लगता है जैसे पहले php में user input को सीधे string concatenation से query में जोड़ दिया जाता था, और फिर खतरनाक patterns पकड़ने का whack-a-mole खेल चलता रहता था
data और command में फर्क न कर पाने की वजह से हम दशकों बाद वही गलती फिर दोहरा रहे हैं, यह दुखद है
अजीब बात है कि model में sudo token जैसी कोई चीज़ बिल्कुल नहीं है
काश ऐसा syntax होता जिसे सामान्य tokens से व्यक्त ही न किया जा सके
ऐसा लगता है जैसे पुराने serial terminal का दौर फिर लौट आया हो
यह बात कि image में कुछ छिपाकर भेजा जा सकता है, मेरे लिए बहुत नई थी
LLM सच में इतिहास का सबसे vulnerable software लगता है
मुझे याद है जब Gemini के पूर्ववर्ती version का परीक्षण कर रहा था, तब बहुत लंबा शुरुआती message डालने पर system prompt को बाहर धकेलकर उससे कुछ भी करवाया जा सकता था
“This image and its prompt-ergeist” वाला हिस्सा मुझे बहुत प्रभावशाली लगा
सोच रहा हूँ कि downsampling से पहले image में थोड़ा noise जोड़ने से क्या यह समस्या हल हो सकती है
image को downsample करते समय sampling rate के आसपास की high frequencies हटाने के लिए smoothing की ज़रूरत होती है
इससे aliasing effect कम किया जा सकता है
‘Nyquist-Shannon sampling theorem’ खोजिए
digital signal processing में यह काफ़ी जाना-पहचाना सिद्धांत है
कुछ हद तक यह security measure बन सकता है, लेकिन text कैसे छिपाया गया है और किस तरह का noise इस्तेमाल किया जाता है, इस पर असर निर्भर करेगा
लेकिन ऐसा करने से वास्तव में ज़रूरी content (सामान्य text/detail आदि) भी मिट सकता है, इसलिए यह असली समाधान नहीं है
क्या मैं कुछ मिस कर रहा हूँ?
अगर इस attack method का मतलब “image में obfuscated text inject करना… और <i>यह उम्मीद करना कि कोई system उसे prompt की तरह interpret करे</i>” है, तो क्या मेरी समझ सही है?
हाँ
यह attack downscale algorithm का दुरुपयोग करके text को इस तरह छिपाता है कि इंसान को वह दिखाई न दे
system architecture के अनुसार ‘इंसान से छिपाने’ वाला हिस्सा छोड़ा भी जा सकता है
LLM में मूलतः data और command का कोई अलगाव नहीं होता, इसलिए data flow में command मिल जाए तो model के व्यवहार को कभी भी नियंत्रित किया जा सकता है
मैंने अपनी bio में भी ऐसा एक उदाहरण लिखा है
“image में obfuscated text डालना, और system से उम्मीद करना कि वह उसे prompt की तरह interpret करे”
यहाँ एक हिस्सा छूट रहा है, वह यह कि “prompt” को किसी विशेषाधिकार प्राप्त input की तरह मान लिया जाता है
जबकि वास्तव में prompt पूरे input का सिर्फ एक हिस्सा है, और model सभी inputs को एक जैसा मानता है
इसी वजह से “पहले के सभी inputs को ignore करो…” जैसे पुराने attacks अब भी काम करते हैं
समझ नहीं आता कि model image के अंदर के text और text prompt के निर्देशों में फर्क क्यों नहीं कर पाता