Copilot को root करने का तरीका
(research.eye.security)- अप्रैल 2025 में, Copilot Enterprise में real-time Python sandbox (Jupyter Notebook आधारित) अपडेट किया गया, जिससे backend code execution संभव हो गया
- Jupyter Notebook के %command syntax के जरिए underlying system पर arbitrary code execution आसान था, और Linux commands भी ubuntu user (miniconda environment) के रूप में चलाई जा सकती थीं
- /app/miniconda/bin path ubuntu user के लिए writable था, और root के $PATH में भी इसे प्राथमिकता मिली हुई थी, जिससे
pgrepजैसे महत्वपूर्ण commands को overwrite किया जा सकता था — यह एक security vulnerability थी - इसका दुरुपयोग करके root privileges हासिल किए गए, लेकिन container के भीतर isolation बहुत सख्त था, इसलिए container escape संभव नहीं था, और कोई अतिरिक्त information leak भी नहीं हुआ
- इस vulnerability की रिपोर्ट अप्रैल में की गई थी और जुलाई में इसे मध्यम जोखिम के रूप में patch किया गया; कोई reward नहीं मिला, केवल researcher list में नाम जोड़ा गया
Microsoft Copilot Enterprise Jupyter Sandbox vulnerability analysis
Copilot Enterprise Jupyter environment overview
- अप्रैल 2025 से Copilot Enterprise में Jupyter Notebook आधारित Python sandbox पेश किया गया
- उपयोगकर्ता Jupyter के %command syntax के जरिए Linux system commands चला सकते थे
- environment miniconda-आधारित ubuntu user permissions पर चलता था, और
sudobinary मौजूद नहीं थी - environment variables, network, file system, process information आदि को अलग-अलग तरीकों से inspect किया जा सकता था
Container के अंदर का behavior और structure
- Copilot, ChatGPT sandbox जैसा है, लेकिन इसमें नया kernel और Python 3.12 इस्तेमाल होता है
- मुख्य processes: Jupyter Notebook, Go में लिखा गया
goclientapp(port 6000 पर चलता है),httpproxyआदि - network में केवल loopback और सीमित link-local interfaces सक्रिय थे
- file system OverlayFS पर आधारित था,
/legionpath को base के रूप में उपयोग करता था, और/appमें custom scripts मौजूद थीं
Download और file manipulation
- text/command output files सामान्य रूप से डाउनलोड किए जा सकते थे, लेकिन binary files के corrupt होने का जोखिम था, इसलिए
base64encoding की जरूरत पड़ती थी - files
/mnt/dataमें स्थित थीं, और external download links blob URL के रूप में बनते थे
goclientapp/httpproxy structure
goclientapp: बाहर से/executeendpoint पर मिले code (JSON format) को Jupyter environment में चलाता है और result लौटाता हैhttpproxy: Jupyter से बाहर जाने वाले HTTP traffic को proxy करता है (ENABLE_EGRESS=falseहोने पर disabled)
entrypoint.sh script vulnerability
- container की entrypoint script
entrypoint.shमें कई services (goclientapp,httpproxyapp) ubuntu user permissions पर चलाई जाती थीं - केवल
keepAliveJupyterSvc.shलगातार root के रूप में चलती रहती थी - line 28 पर
pgrep -f "jupyter notebook --ip=0.0.0.0 --port=8888"command, $PATH में directory priority के अनुसार execute होती थी /app/miniconda/bin, root और ubuntu user दोनों के PATH में/usr/binसे पहले था →pgrepजैसे commands को मनचाहे तरीके से replace किया जा सकता था
Root privileges हासिल करने की प्रक्रिया और सीमाएँ
- attacker ने
/app/miniconda/binमें एक maliciouspgrepscript बनाई, ताकिentrypoint.shइसे समय-समय पर root permissions के साथ execute करे - यह script
/mnt/data/infile को पढ़ती थी, उसे shell command के रूप में चलाती थी, और output को/mnt/data/outमें सेव करती थी - इस तरीके से container के भीतर root privileges हासिल करने में सफलता मिली, लेकिन
/rootfiles जैसी sensitive information, logs आदि तक पहुँच संभव नहीं थी, और container escape भी नहीं किया जा सका - container में अलग-अलग breakout scenarios पहले से ही patch किए जा चुके थे
Microsoft की प्रतिक्रिया और परिणाम
- 18 अप्रैल 2025: Eye Security ने MSRC को vulnerability report भेजी
- 25 जुलाई 2025: Microsoft ने इसे मध्यम जोखिम (moderate severity) के रूप में वर्गीकृत किया, patch के बाद issue बंद किया और researcher list में नाम जोड़ा (bug bounty नहीं दी गई)
संदर्भ और परिशिष्ट
-
Eye Security यूरोप-आधारित cyber security कंपनी है, जो 24/7 threat monitoring, incident response, cyber insurance आदि प्रदान करती है
-
इस vulnerability सहित internal Microsoft services (Entra OAuth आदि) में intrusion के मामले BlackHat USA 2025 में प्रस्तुत किए जाने की योजना है
-
Timeline
- 18 अप्रैल 2025 – MSRC को रिपोर्ट
- 25 जुलाई 2025 – patch और case बंद, blog प्रकाशित
1 टिप्पणियां
Hacker News राय
sudobinary base64 में देकर फिर उसका उपयोग करने के तरीके से और आसानी से bypass किया जा सकता था