
Pardus My Computer Os Command Injection
CVE-2024-12970, Pardus ऑपरेटिंग सिस्टम के My Computer सॉफ़्टवेयर में पाए जाने वाले OS Command Injection (सिस्टम कमांड इंजेक्शन) दोष को परिभाषित करता है। यह दोष उपयोगकर्ता को फ़ाइल नाम पैरामीटर के माध्यम से सिस्टम कमांड इंजेक्ट करने की अनुमति देता है, जिससे हमलावर सिस्टम पर दुर्भावनापूर्ण कमांड निष्पादित कर सकता है।
यह दोष Pardus My Computer सॉफ़्टवेयर के 0.7.2 संस्करण से पहले के संस्करणों में मौजूद है।
दोष get_file_info फ़ंक्शन में मौजूद है। यह फ़ंक्शन उपयोगकर्ता से प्राप्त डिस्क जानकारी प्राप्त करने के लिए एक subprocess कॉल का उपयोग करता है। हालाँकि, इस कॉल में फ़ाइल पथ पैरामीटर (file) को ठीक से मान्य नहीं किया जाता है, जिससे उपयोगकर्ता द्वारा प्रदान किए गए डिस्क नाम के माध्यम से OS Command Injection का दोष उत्पन्न होता है।
फ़ंक्शन:
def get_file_info(file, network=False):
if network:
try:
process = subprocess.check_output(f"df '{file}' --block-size=1000 -T | awk 'NR==1 {{next}} {{print $1,$2,$3,$4,$5,$7; exit}}'", shell=True, timeout=1)
except subprocess.TimeoutExpired:
print("timeout error on {}".format(file))
return None
दोष इस तथ्य पर आधारित है कि file पैरामीटर उपयोगकर्ता द्वारा प्रदान किया जाता है और इस पैरामीटर को सीधे subprocess.check_output() फ़ंक्शन में उपयोग किया जाता है। उपयोगकर्ता file पैरामीटर में अपनी पसंद का डिस्क नाम दे सकता है, और यह डिस्क नाम शेल कमांड में सीधे उपयोग होता है। इससे उपयोगकर्ता को कमांड इंजेक्शन करने की क्षमता मिलती है।
दोषपूर्ण पैरामीटर की उदाहरण पंक्ति:
process = subprocess.check_output(f"df '{file}' --block-size=1000 -T | awk 'NR==1 {{next}} {{print $1,$2,$3,$4,$5,$7; exit}}'", shell=True)
दोष का शोषण करने के लिए, हमलावर अपने द्वारा जोड़े जाने वाले डिस्क के नाम में निम्नानुसार एक दुर्भावनापूर्ण payload रख सकता है:
&' <निष्पादित किया जाने वाला शेल कमांड> #
जब इस नाम वाली डिस्क को Pardus My Computer के माध्यम से mount किया जाता है, तो exploit काम करता है।