Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-4138-4517-POC — CVE-2025-4138 / CVE-2025-4517 — تجاوز مرشح الروابط الرمزية PATH_MAX في Python tarfile | 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 — تجاوز مرشح الروابط الرمزية PATH_MAX في Python tarfile

عرض المستودع
17216منذ 3 أشهرلم تتم المراجعة بعد

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

CVE-2025-4138 / CVE-2025-4517
تجاوز مرشح Python tarfile عبر هروب الروابط الرمزية PATH_MAX

كتابة ملفات تعسفية عبر استخراج filter="data" / filter="tar"

Type CWE-22 Platform Language License Stars Forks Last Commit


جدول المحتويات

  • نظرة عامة
  • تفاصيل الثغرة
  • كيف يعمل
  • الإصدارات المتأثرة
  • نمط الكود المتأثر
  • التثبيت
  • الاستخدام
    • بدء سريع — حقن مفتاح SSH
    • الهجمات الجاهزة
    • الهدف المخصص
  • إثبات المفهوم — التحقق الآمن
  • غوص تقني عميق
    • PATH_MAX و os.path.realpath()
    • بناء سلسلة الروابط الرمزية
    • آلية تجاوز المرشح
    • مراحل الاستغلال
  • سيناريوهات الهجوم الواقعية
  • الكشف
  • التخفيف
  • CVEs ذات الصلة
  • الخط الزمني
  • المراجع
  • الاعتمادات
  • إخلاء المسؤولية
  • الترخيص

نظرة عامة

ثغرة خطيرة في وحدة tarfile في Python تسمح للمهاجم بـ تجاوز مرشحات الاستخراج ("data" و "tar") وكتابة ملفات تعسفية خارج دليل الاستخراج المقصود. عندما تقوم عملية مميزة (مثل سكربت نسخ احتياطي بصلاحيات الجذر، أو خط أنابيب CI/CD، أو مثبّت حزم) باستخراج أرشيف tar يتحكم فيه المهاجم باستخدام المعامل الآمن المفترض filter="data"، يحقق هذا الاستغلال كتابة ملفات تعسفية كاملة بصلاحيات ذلك المستخدم المميز — وعادةً ما يؤدي إلى تصعيد الصلاحيات إلى الجذر.

السبب الجذري هو سلوك غريب في os.path.realpath(): إذ يتوقف بصمت عن حل الروابط الرمزية بمجرد أن يتجاوز المسار المُوسَّع بالكامل PATH_MAX (4096 بايت على لينكس، و1024 على macOS). يعتمد مرشح tarfile على realpath() للتحقق الأمني، لكن النواة تحل الروابط الرمزية بشكل مستقل أثناء الاستخراج — مما يخلق فجوة TOCTOU (وقت الفحص مقابل وقت الاستخدام) تتيح الهروب من الدليل.


تفاصيل الثغرة

الحقلالقيمة
معرّفات CVECVE-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 — تقييد غير سليم لاسم المسار داخل دليل مقيد
نوع الثغرةتجاوز المسار عبر الروابط الرمزية / تجاوز المرشح
التأثيركتابة ملفات تعسفية → تصعيد الصلاحيات، الهروب من صندوق الحماية، العبث بالبيانات
متجه الهجومتسليم أرشيف tar خبيث إلى أي تطبيق يستخدم tarfile.extractall() مع المرشحات
الإصدارات المتأثرة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")

# ALSO VULNERABLE — filter="tar" has the same flaw
with tarfile.open("untrusted_archive.tar", "r") as tar:
    tar.extractall(path="/some/directory", filter="tar")

حالات شائعة في العالم الحقيقي:

  • نصوص النسخ الاحتياطي/الاستعادة التي تعمل بصلاحيات الجذر (root)
  • خطوط أنابيب CI/CD لاستخراج مخرجات البناء
  • مديرو الحزم وأدوات التثبيت لمعالجة توزيعات .tar
  • تطبيقات الويب التي تقبل أرشيفات يرفعها المستخدمون
  • أدوات إدارة الإعدادات لاستخراج حزم النشر

التثبيت```bash

git clone https://github.com/DesertDemons/CVE-2025-4138-4517-POC.git cd CVE-2025-4138-4517-POC

تنزيل الأداة