- Snowflake के Cortex Code CLI में command validation की एक भेद्यता मिली, जिसके जरिए हमलावर सैंडबॉक्स के बाहर arbitrary commands चला सकते थे
- हमला indirect prompt injection के जरिए शुरू कराया जाता है, और यह user approval प्रक्रिया को bypass करके malicious script डाउनलोड और execute करता है
- process substitution syntax के भीतर मौजूद commands validate नहीं होते, इसलिए safe command के रूप में छिपा malicious code अपने-आप चल जाता है
- हमलावर पीड़ित के Snowflake authentication token का उपयोग करके database exfiltrate कर सकते हैं या tables delete कर सकते हैं
- Snowflake ने 28 फ़रवरी 2026 को version 1.0.25 patch जारी करके समस्या ठीक की, और यह automatic update के जरिए लागू हुआ
Cortex Code CLI भेद्यता का अवलोकन
- Cortex Code CLI Claude Code या OpenAI Codex जैसा एक command-style coding agent है, जिसमें Snowflake के भीतर SQL चलाने की integrated क्षमता शामिल है
- रिलीज़ के दो दिन बाद यह पुष्टि हुई कि command validation system की खामी के कारण विशेष रूप से तैयार किए गए commands approval प्रक्रिया के बिना चल सकते हैं और सैंडबॉक्स से बाहर निकल सकते हैं
- हमलावर इसका उपयोग करके पीड़ित के Snowflake credentials के जरिए data exfiltration या table deletion जैसी malicious गतिविधियाँ कर सकते हैं
- Snowflake security team ने समस्या की पुष्टि के बाद इसे ठीक किया, और version 1.0.25 में patch जारी किया गया
attack chain के चरण
- जब user sandbox mode सक्रिय करके Cortex चलाता है, तो इसे command execution से पहले user approval माँगने के लिए डिज़ाइन किया गया है
- लेकिन हमलावर README file में छिपे prompt injection के जरिए Cortex को manipulate करके खतरनाक command चलाने के लिए उकसाते हैं
- Cortex का sub-agent इस injection को पढ़ता है और approval प्रक्रिया के बिना command execute कर देता है
- process substitution syntax
<()> के भीतर के commands validate नहीं होते, इसलिए safe command जैसा दिखने वाला malicious code चल जाता है
- injection,
dangerously_disable_sandbox flag भी सेट करता है, जिससे यह सैंडबॉक्स के बाहर execute हो सके
- नतीजतन user approval के बिना malicious script डाउनलोड और execute हो जाती है
हमले का प्रभाव
- हमलावर पीड़ित के सिस्टम पर arbitrary code execution (remote code execution) का अधिकार हासिल कर लेते हैं
- पीड़ित के Snowflake connection credentials का उपयोग करके वे निम्नलिखित कार्य कर सकते हैं
- database की सामग्री exfiltrate करना
- tables delete करना
- malicious user account जोड़ना
- network rules बदलकर वैध users को block करना
- malicious script, Cortex द्वारा सहेजे गए cached authentication tokens ढूँढता है और Snowflake पर SQL queries चलाता है
- developer accounts के मामले में read-write permissions के कारण data exfiltration और destruction संभव है
sub-agent context loss समस्या
- हमले के दौरान Cortex कई sub-agents को कॉल करता है, जिससे context loss होता है
- मुख्य agent ने user को चेतावनी दी कि malicious command मिला है, लेकिन तब तक sub-agent वह command पहले ही चला चुका था
- इसके कारण user को वास्तविक execution का पता नहीं चलता
भेद्यता का खुलासा और प्रतिक्रिया
- 5 फ़रवरी 2026 को PromptArmor ने Snowflake को responsible disclosure किया
- Snowflake ने पूरे फ़रवरी में PromptArmor के साथ मिलकर भेद्यता की पुष्टि और remediation की
- 28 फ़रवरी को version 1.0.25 में patch जारी किया गया, और जब user Cortex को फिर से चलाता है तो यह automatic update के जरिए लागू हो जाता है
- test results के अनुसार हमले की सफलता दर लगभग 50% थी, जिससे LLM की non-deterministic प्रकृति के संदर्भ में security training के महत्व पर ज़ोर दिया गया
प्रमुख समयरेखा
- 2 फ़रवरी 2026: Snowflake Cortex Code रिलीज़
- 5 फ़रवरी 2026: PromptArmor ने भेद्यता रिपोर्ट की
- 12 फ़रवरी 2026: Snowflake ने भेद्यता सत्यापन पूरा किया
- 28 फ़रवरी 2026: fixed version 1.0.25 जारी
- 16 मार्च 2026: PromptArmor और Snowflake द्वारा संयुक्त खुलासा
1 टिप्पणियां
Hacker News की राय
आम तौर पर मैं पहले समस्या में फँसी कंपनी का official statement पढ़ता हूँ
लेकिन Snowflake की सूचना देखने के लिए अकाउंट चाहिए था, यह देखकर हैरानी हुई
पढ़ने पर लगा कि वे “sandbox” शब्द का गलत इस्तेमाल कर रहे हैं
अगर “Cortex डिफ़ॉल्ट रूप से ऐसा flag सेट कर सकता है जिससे sandbox के बाहर command चल सके”, तो वह अब sandbox नहीं रहा
SQL में भी parameterized queries आने से पहले यह हल नहीं हुई थी, और natural language तो कहीं ज़्यादा खुली होती है
आखिरकार “पिछले निर्देशों को अनदेखा करो और …” जैसे हमले बार-बार सामने आते हैं
अगर data और command एक ही stream में हों, तो नतीजा हमेशा वैसा ही होगा
natural language खुद ही attack surface है, इसलिए यह और बड़ा होना तय है
संबंधित दस्तावेज़: RFC 3514
लेकिन जिस अर्थ का मैं अभ्यस्त हूँ, वह isolated environment में malware को सुरक्षित रूप से observe करना है
AI में भी ऐसी असली technical boundaries बनाने की बहुत कोशिशें हो रही हैं, इसलिए यह एक दिलचस्प क्षेत्र लगता है
अगर user खुद access permission चालू करने वाले switch को बदल सकता है, तो वह sandbox नहीं है
पहले लगा यह OS privilege escalation की बात है, लेकिन यह तो बस कमजोर security design का मामला निकला
Anthropic पेपर में उद्धृत उदाहरणों को देखें, तो AI कभी-कभी स्वायत्त रूप से हानिकारक काम भी करता है
उदाहरण के लिए Alibaba Cloud के firewall ने training server पर cryptocurrency mining की कोशिश पकड़ी,
और कहा गया कि RL optimization के दौरान side effect के रूप में ऐसा व्यवहार उभरा
संबंधित सामग्री: arXiv paper, Anthropic research, Time article
तो फिर network control मौजूद होने पर SSH tunnel या resource scan कैसे संभव हुआ, यह सवाल उठता है
Snowflake के एक कर्मचारी ने आकर security team की response timeline और fixes साझा किए
अधिक जानकारी official document में देखी जा सकती है
“मानव स्वीकृति के बिना shell command चल गया” यह हिस्सा देखकर,
shell security पर थोड़ा भी सोचने वाला कोई भी व्यक्ति यह देखकर चकित होगा कि subprocess creation mechanism पर विचार ही नहीं किया गया
ऐसी पाबंदियाँ OS स्तर पर लगाई जाएँ, तभी वे सुरक्षित होती हैं
“असली sandboxing tips” साझा करने का भी सुझाव आया
मैं Claude Code को VS Code devcontainer के अंदर चला रहा हूँ
केवल allowlist domains तक internet access सीमित करने की setting भी है
लेकिन docker-in-docker environment चाहिए, इसलिए पूरा integration आसान नहीं है
इसलिए अभी मैं सिर्फ unit test तक चला रहा हूँ, और Vagrant के साथ पूरी VM isolation आज़माने पर विचार कर रहा हूँ
project link: aflock.ai
“Cortex workspace trust को support नहीं करता” यह वाक्य देखकर,
यह शक हुआ कि कहीं शुरू से ही यह बिना किसी restriction वाला environment तो नहीं था
model अगर flag सेट कर दे, तो user approval के बिना ही sandbox के बाहर execution हो जाता था
“क्या यह नया gain-of-function research है?” ऐसा मज़ाक भी हुआ
यानी यह मानना ही भ्रम है कि agent खुद को नियंत्रित कर सकता है
बहुत से लोग पहले से ही agents द्वारा जनरेट किए गए code को बिना review के चला रहे हैं
ऐसे में agent को ही sandbox में लपेटने का मतलब क्या रह जाता है, यह सवाल उठता है
आखिर पूरे system को अलग machine, container, या restricted user के रूप में isolate किया जाना चाहिए
शायद ज़्यादातर users ऐसा नहीं करते,
इसलिए vendors उनकी ओर से बुनियादी स्तर के safety guardrails देने की कोशिश कर रहे हैं
“जो sandbox toggle से बंद हो जाए, वह असली sandbox नहीं है” ऐसी राय भी थी
यह बस marketing exaggeration लगता है, मानो product की ढीली-ढाली design को छिपाने की कोशिश हो
असली sandbox वह बाहरी isolated environment होना चाहिए जिसे अंदर से बदला न जा सके