
Tarfile मॉड्यूल निर्देशिका ट्रैवर्सल भेद्यता (निर्देशिका को पार करने वाले ओवरफ्लो के साथ) --> विशेषाधिकार वृद्धि की ओर ले जाता है
प्रभाव : विशेषाधिकार वृद्धि
कार्यप्रणाली :
Python के TarFile.extractall() और TarFile.extract() तरीके एक ऐसी सुविधा का समर्थन करते हैं जो इन विधियों के उपयोग की सुरक्षा में सुधार के लिए एक फ़िल्टर सेट करने की अनुमति देती है। Python की मानक लाइब्रेरी दो कार्यान्वयन प्रदान करती है tar_filter ("tar") और data_filter ("data"), जिनमें से प्रत्येक में tarfile निष्कर्षण की सुरक्षा में सुधार के लिए भिन्न जाँच होती है।
एक बग तब मौजूद होता है जब सिमलिंक वाले पथ को संसाधित किया जाता है जो PATH_MAX से छोटा होता है, लेकिन जब सिमलिंक को os.path.realpath() द्वारा प्रतिस्थापित किया जाता है तो PATH_MAX से लंबा हो जाता है। PATH_MAX से परे के किसी भी सिमलिंक का विस्तार नहीं होता है।
os.path.realpath() का उपयोग "tar" और "data" फ़िल्टर द्वारा पथ को मान्य करने के लिए किया जाता है, लेकिन PATH_MAX पार होने पर कोई त्रुटि नहीं फेंकी जाती। बाद में extractall() या extract() के दौरान पथों का उपयोग os.path.realpath() से गुज़ारे बिना किया जाता है।
संदर्भ : https://github.com/google/security-research/security/advisories/GHSA-hgqp-3mmf-7h8f
PoC का उपयोग कैसे करें :
ssh-keygen -t ed25519 -f any
mkdir test
mv any.pub authorized_keys
cp authorized_keys /test
cd test
#Put your public key file name (authorized_keys)
python3 exploit.py
(file.tar) ~ generated
# Now using Python3
sudo python3 tar -xvf file.tar
#login
chmod 600 any
ssh -i any user@ip