
CVE-2024-24576 अवधारणा का प्रमाण
Command::arg और Command::args APIs अपने दस्तावेज़ीकरण में बताते हैं कि तर्कों (arguments) को स्पॉन की गई प्रक्रिया में वैसे ही पास किया जाएगा जैसे वे हैं, तर्कों की सामग्री चाहे जो भी हो, और उनका मूल्यांकन किसी शेल (shell) द्वारा नहीं किया जाएगा। इसका मतलब है कि अविश्वसनीय इनपुट को तर्क के रूप में पास करना सुरक्षित होना चाहिए।
Windows पर, इसका कार्यान्वयन अन्य प्लेटफ़ॉर्म की तुलना में अधिक जटिल है, क्योंकि Windows API केवल एक एकल स्ट्रिंग प्रदान करता है जिसमें स्पॉन की गई प्रक्रिया के सभी तर्क होते हैं, और उन्हें विभाजित करना स्पॉन की गई प्रक्रिया पर निर्भर करता है। अधिकांश प्रोग्राम मानक C रन-टाइम argv का उपयोग करते हैं, जो व्यवहार में तर्कों को विभाजित करने का एक अधिकतर सुसंगत तरीका सुनिश्चित करता है।
हालाँकि, एक अपवाद cmd.exe है (जिसका उपयोग अन्य चीज़ों के अलावा बैच फ़ाइलों को निष्पादित करने के लिए किया जाता है), जिसका अपना तर्क विभाजन तर्क है। यह मानक लाइब्रेरी को बैच फ़ाइलों में पारित तर्कों के लिए कस्टम एस्केपिंग लागू करने के लिए मजबूर करता है। दुर्भाग्य से, यह रिपोर्ट किया गया कि हमारी एस्केपिंग लॉजिक पर्याप्त गहन नहीं थी, और दुर्भावनापूर्ण तर्कों को पारित करना संभव था जिसके परिणामस्वरूप मनमाना शेल निष्पादन हो सकता था।

संदर्भ: https://blog.rust-lang.org/2024/04/09/cve-2024-24576.html