
CVE-2021-26700 के लिए प्रूफ-ऑफ-कॉन्सेप्ट: दुर्भावनापूर्ण workspace settings.json के माध्यम से VSCode npm-script एक्सटेंशन में रिमोट कोड निष्पादन, विस्तृत शोषण और उपचार मार्गदर्शन के साथ।
10 फरवरी 2021 को इसमें फिक्स किया गया: https://github.com/microsoft/vscode-npm-scripts/commit/cdd5e507564e0cc0f60bcccf184822be3fd73e07
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-26700
eg2.vscode-npm-script (संस्करण 0.3.13 पर परीक्षण किया गया) VSCode एक्सटेंशन में रिमोट कोड एक्ज़ीक्यूशन भेद्यता का अर्थ है कि किसी प्रोजेक्ट में दुर्भावनापूर्ण .vscode/settings.json फ़ाइल package.json नामक फ़ाइल देखे जाने पर रिमोट कोड एक्ज़ीक्यूशन का कारण बन सकती है।
यह भेद्यता किसी सक्रिय Microsoft बग बाउंटी प्रोग्राम के अंतर्गत नहीं आती थी, लेकिन MSRC को रिपोर्ट की गई और उसके द्वारा निपटाई गई।
किसी रिपॉजिटरी में दुर्भावनापूर्ण .vscode/settings.json फ़ाइल के बिना, eg2.vscode-npm-script एक्सटेंशन इंस्टॉल होने पर, फ़ाइल देखने के दौरान कमांड निष्पादित होगी।
package.jsonnpm ls --depth 0 --jsonकिसी प्रोजेक्ट के settings.json में npm.bin कुंजी को उदाहरण के लिए ./payload.sh पर सेट करके, package.json देखने पर इसके बजाय package.json वाली डायरेक्टरी से ./payload.sh ls --depth 0 --json निष्पादित होगा।
यह भेद्यता इस धारणा को तोड़ती है कि सोर्स-कोड को सुरक्षित रूप से पढ़ा जा सकता है।
हमलावर इसका उपयोग कैसे कर सकता है इसका एक उदाहरण:
package.json देखता हैpayload.sh निष्पादित हो जाता हैमैंने दुर्भावनापूर्ण VSCode वर्कस्पेस settings.json को कम करने के दो तरीके देखे हैं
सेटिंग्स को प्रति वर्कस्पेस सेट होने से रोकें। यह VSCode द्वारा पहले से ही git.path, terminal.integrated.shell.linux और कुछ अन्य सेटिंग्स के लिए उपयोग किया जाता है।
यह कुछ उपयोगकर्ताओं के लिए संगतता तोड़ सकता है, लेकिन इसका उदाहरण मौजूद है।
संदर्भ: https://vscode.readthedocs.io/en/latest/getstarted/settings/#settings-and-security
यदि यह सेटिंग किसी वर्कस्पेस में सेट है, तो बाइनरी निष्पादित करने से पहले उपयोगकर्ता से सेटिंग की पुष्टि करने का संकेत दें।
यह मौजूदा संगतता नहीं तोड़ेगा, और यही वह मार्ग है जो ESLint एक्सटेंशन ने संस्करण 2.1.7 से अपनाया है।
eg2.vscode-npm-script का भेद्य संस्करण (0.3.13 या पुराना) इंस्टॉल करेंlinux-poc डायरेक्टरी को फ़ोल्डर के रूप में खोलेंpackage.json फ़ाइल पर क्लिक करें/tmp/output.txt बनाई जाएगीeg2.vscode-npm-script का भेद्य संस्करण (0.3.13 या पुराना) इंस्टॉल करेंwindows-poc डायरेक्टरी को फ़ोल्डर के रूप में खोलेंpackage.json फ़ाइल पर क्लिक करेंcalc.exe खोला जाएगानोट: मैं Windows में बाइनरी के लिए सापेक्ष पथ (relative path) का उपयोग करने में असमर्थ था, हालांकि यह Windows के साथ मेरी अपरिचितता के कारण हो सकता है