Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2025-4138-4517-POC — CVE-2025-4138 / CVE-2025-4517 — Python tarfile PATH_MAX सिमलिंक फ़िल्टर बाइपास | Kitploit
उपकरण/GitHubGitHub/desertdemons/cve-2025-4138-4517-poc
विशेषाधिकार वृद्धिपेलोड जनरेशनभेद्यता विश्लेषणशोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षाबाइनरी शोषण
GitHubdesertdemons/cve-2025-4138-4517-poc

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2025-4138-4517-POC

CVE-2025-4138 / CVE-2025-4517 — Python tarfile PATH_MAX सिमलिंक फ़िल्टर बाइपास

रिपॉजिटरी देखें
172163 महीने पहलेअभी तक समीक्षित नहीं

CVE-2025-4138 CVE-2025-4517 CVSS 9.4 Python Affected

CVE-2025-4138 / CVE-2025-4517
PATH_MAX सिमलिंक एस्केप के ज़रिए Python tarfile फ़िल्टर बाईपास

filter="data" / filter="tar" निष्कर्षण के माध्यम से मनमानी फ़ाइल लेखन

Type CWE-22 Platform Language License Stars Forks Last Commit


विषय-सूची

  • अवलोकन
  • भेद्यता विवरण
  • यह कैसे काम करता है
  • प्रभावित संस्करण
  • प्रभावित कोड पैटर्न
  • स्थापना
  • उपयोग
    • त्वरित आरंभ — SSH कुंजी इंजेक्शन
    • पूर्वनिर्धारित हमले
    • कस्टम लक्ष्य
  • प्रूफ़ ऑफ़ कॉन्सेप्ट — सुरक्षित सत्यापन
  • तकनीकी गहन विवरण
    • PATH_MAX और os.path.realpath()
    • सिमलिंक श्रृंखला निर्माण
    • फ़िल्टर बाईपास तंत्र
    • शोषण के चरण
  • वास्तविक-विश्व हमले के परिदृश्य
  • पहचान
  • शमन
  • संबंधित CVE
  • समयरेखा
  • संदर्भ
  • श्रेय
  • अस्वीकरण
  • लाइसेंस

अवलोकन

Python के tarfile मॉड्यूल में एक गंभीर भेद्यता हमलावर को निष्कर्षण फ़िल्टर ("data" और "tar") को बायपास करने और इच्छित निष्कर्षण निर्देशिका के बाहर मनमानी फ़ाइलें लिखने की अनुमति देती है। जब कोई विशेषाधिकार प्राप्त प्रक्रिया (जैसे कि रूट-स्तरीय बैकअप स्क्रिप्ट, CI/CD पाइपलाइन, या पैकेज इंस्टॉलर) कथित रूप से सुरक्षित filter="data" पैरामीटर का उपयोग करके हमलावर-नियंत्रित tar संग्रह निकालती है, तो यह शोषण उस विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में पूर्ण मनमानी फ़ाइल लेखन प्राप्त करता है — आमतौर पर रूट तक विशेषाधिकार वृद्धि।

मूल कारण os.path.realpath() में एक व्यवहारिक विचित्रता है: जब पूर्ण रूप से विस्तारित पथ PATH_MAX (लिनक्स पर 4096 बाइट्स, macOS पर 1024) से अधिक हो जाता है, तो यह चुपचाप सिमलिंक का समाधान करना बंद कर देता है। tarfile फ़िल्टर सुरक्षा जाँचों के लिए realpath() पर निर्भर करता है, लेकिन कर्नेल निष्कर्षण के दौरान सिमलिंक को स्वतंत्र रूप से हल करता है — जिससे TOCTOU (जाँच-से-उपयोग-का-समय) अंतराल बनता है जो निर्देशिका एस्केप को सक्षम बनाता है।


भेद्यता विवरण

फ़ील्डमान
CVE आईडीCVE-2025-4138, CVE-2025-4517
CVSS v3.19.4 (गंभीर) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
CWECWE-22 — प्रतिबंधित निर्देशिका में पथनाम की अनुचित सीमा
भेद्यता प्रकारसिमलिंक के माध्यम से पथ ट्रैवर्सल / फ़िल्टर बाईपास
प्रभावमनमानी फ़ाइल लेखन → विशेषाधिकार वृद्धि, सैंडबॉक्स एस्केप, डेटा छेड़छाड़
हमला वेक्टरफ़िल्टर के साथ tarfile.extractall() का उपयोग करने वाले किसी भी एप्लिकेशन को दुर्भावनापूर्ण tar संग्रह वितरित करें
प्रभावितPython 3.12.0 – 3.12.10, 3.13.0 – 3.13.3
फिक्स किया गयाPython 3.9.23, 3.10.18, 3.11.13, 3.12.11, 3.13.4
पैचCPython PR #135037
एडवाइज़रीGHSA-hgqp-3mmf-7h8f
रिपोर्टकर्ताCaleb Brown — Google Security Research

यह कैसे काम करता है```

                ┌───────────────────────────────────────────┐
                │         Malicious Tar Structure            │
                └───────────────────────────────────────────┘

Stage 1 ── Build symlink chain that inflates the resolved path past PATH_MAX

ddd...ddd/              (directory, 247 chars)
a  →  ddd...ddd         (symlink,   1 char name → 247 char dir)
ddd...ddd/ddd...ddd/    (nested directory)
b  →  ddd...ddd         (symlink)
...  ×16 levels

Short path (symlinks):   a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p       ~31 chars
Resolved path (dirs):    ddd…/ddd…/ddd…/ddd…/ddd…/ddd…/…      ~3968 chars
                                                           ↑ nearing PATH_MAX

Stage 2 ── Final symlink exceeds PATH_MAX → realpath() stops resolving

a/b/c/…/p/lll…lll  →  ../../../../../../../../../../../../../../../../..
                        (16 levels of ".." — traverses back to extraction root)

┌─────────────────────────────────────────────────────────────────┐
│  os.path.realpath()  CANNOT expand this  →  filter says "OK" ✓ │
│  Linux kernel         DOES follow chain  →  actually escapes ✗ │
└─────────────────────────────────────────────────────────────────┘

Stage 3 ── Escape symlink resolves to arbitrary filesystem path

escape  →  <overflow_link>/../../../../../../../root

Stage 4 ── Create intermediate directories through the escape

escape/.ssh/            (directory, mode 0700 — created by tar extraction)

Stage 5 ── Write payload through the escaped symlink

escape/.ssh/authorized_keys  →  writes to /root/.ssh/authorized_keys  🔓
---

## प्रभावित संस्करण

| Python शाखा | कमजोर सीमा | स्थिर संस्करण | स्थिति |
|:--|:--|:--|:--|
| 3.13 | 3.13.0 – 3.13.3 | **3.13.4** | ✅ पैच किया गया |
| 3.12 | 3.12.0 – 3.12.10 | **3.12.11** | ✅ पैच किया गया |
| 3.11 | 3.11.4 – 3.11.12 | **3.11.13** | ✅ पैच किया गया |
| 3.10 | 3.10.12 – 3.10.17 | **3.10.18** | ✅ पैच किया गया |
| 3.9 | 3.9.17 – 3.9.22 | **3.9.23** | ✅ पैच किया गया |
| 3.8 | 3.8.17 – 3.8.20 | — | ❌ जीवन-अंत |
| 3.14+ | डिफ़ॉल्ट फ़िल्टर `"data"` में बदल दिया गया | नवीनतम देखें | ⚠️ अधिक जोखिम |

> **नोट:** Python 3.14+ ने डिफ़ॉल्ट `filter` पैरामीटर को बिना फ़िल्टरिंग से बदलकर `"data"` कर दिया है, जिसका अर्थ है कि जिन अनुप्रयोगों में पहले कोई फ़िल्टर नहीं था (और इस प्रकार पहले से ही असुरक्षित थे) अब वे डिफ़ॉल्ट रूप से कमजोर फ़िल्टर का उपयोग करते हैं।

---

## प्रभावित कोड पैटर्न

कोई भी अनुप्रयोग जो कमजोर Python संस्करण पर ऐसा करता है वह शोषण योग्य है:```python
import tarfile

# VULNERABLE — filter="data" can be bypassed
with tarfile.open("untrusted_archive.tar", "r") as tar:
    tar.extractall(path="/some/directory", filter="data")
टूल डाउनलोड करें