Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-tarmageddon — إثبات لثغرة CVE-2025-62518: خطأ حرج في تجاوز حجم الترويسة الموسعة PAX في مكتبات tokio-tar و async Rust tar، مع أدوات إعادة الإنتاج وتحليل نطاق التأثير. | Kitploit
أدوات/GitHubGitHub/edera-dev/cve-tarmageddon
تحليل الثغرات الأمنيةالاستغلالالاختبار العشوائيتحليل الملفات الثنائيةأمن سلسلة التوريدالتعلم والتعليم
GitHubedera-dev/cve-tarmageddon

cve-tarmageddon

إثبات لثغرة CVE-2025-62518: خطأ حرج في تجاوز حجم الترويسة الموسعة PAX في مكتبات tokio-tar و async Rust tar، مع أدوات إعادة الإنتاج وتحليل نطاق التأثير.

عرض المستودع
1943منذ 10 أشهرلم تتم المراجعة بعد
الموقع الإلكتروني

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Ivy Astronaut

CVE-2025-62518: TARmageddon

يوضّح هذا المستودع خطأً حرجًا في tokio-tar ومكتبات Rust غير المتزامنة ذات الصلة بملفات tar، حيث لا يتم تطبيق تجاوزات size الخاصة بالرؤوس الموسعة PAX قبل حساب موضع الرأس التالي.

ملخص الخطأ

السبب الجذري: عند معالجة ملفات tar التي تحتوي على رؤوس موسعة PAX تتجاوز حجم الملف، تستخدم المكتبة حقل الحجم الثُماني (غالبًا صفر) بدلاً من قيمة التجاوز PAX في حسابات الموضع.

الأثر: يؤدي هذا إلى قفز المحلِّل إلى محتوى الملف والخلط بينه وبين رؤوس tar، مما يؤدي إلى استخراج ملفات غير صحيحة.

المكتبات المتأثرة المعروفة:

  • async-tar https://github.com/dignifiedquire/async-tar
  • tokio-tar https://github.com/vorot93/tokio-tar
  • krata-tokio-tar https://github.com/edera-dev/tokio-tar
astral-tokio-tar
https://github.com/astral-sh/tokio-tar

بدء سريع

root@kitploit:~
# Requirements: CMake, Rust/Cargo, C++ compiler, system tar command

cmake -S . -B build
cmake --build build --target generate_report

سيقوم هذا بما يلي:

  1. بناء جميع أدوات C++ وRust
  2. إنشاء ملف tar لحالة إعادة الإنتاج
  3. تشغيل مقارنات تُظهر الخطأ
  4. إنشاء تقارير مفصلة في build/output/

هيكل المشروع

root@kitploit:~
├── disclosure/               # Security disclosure documentation tree
│   └── blast_radius/         # Record of projects depending on tokio-tar variants
├── repro_generator/          # C++ tool to generate a repro case tar file
├── tar-bug-detector/         # Rust tool comparing tar libraries  
├── tarwalk/                  # Correct C++ tar parser
│   ├── tarwalk.cpp           # Handles PAX correctly
│   └── tarwalk_bad.cpp       # Reproduces the same bug
├── CMakeLists.txt            # Build system
├── generate_report.cmake     # Report generation
└── README.md                 # This file

تفاصيل الخطأ

معالجة TAR العادية

root@kitploit:~
Header -> Content (size from octal field) -> Next Header

معالجة TAR الموسعة PAX (الصحيحة)

root@kitploit:~
PAX Header (size=1024) -> File Header (octal size=0) -> Content (1024 bytes) -> Next Header

معالجة TAR الموسعة PAX (الخاطئة)

root@kitploit:~
PAX Header (size=1024) -> File Header (octal size=0) -> Content (0 bytes) -> WRONG POSITION
                                                                              ↓
                                                                    Reading content as headers!

المحفِّز في الواقع العملي

ينشئ Docker save ملفات tar تحتوي على:

  • طبقات كبيرة (>8GB) تتطلب ملحقات PAX
  • محتوى طبقات يبدأ برؤوس tar لنظام الملفات (etc/, usr/)
  • عند تفعُّل الخطأ، تستخرج المحلِّلات محتوى نظام الملفات بدلاً من قوائم الصور

ملفات إعادة الإنتاج المُنشأة

  • pax_bug_compact.tar - حالة إعادة إنتاج مصغَّرة

النتائج المتوقعة

المكتبات الصحيحة (GNU tar، حزمة tar المتزامنة):

root@kitploit:~
normal.txt -> blob.bin -> marker.txt

المكتبات الخاطئة (tokio-tar):

root@kitploit:~
normal.txt -> blob.bin -> INNER_FILE -> marker.txt

ظهور INNER_FILE يدل على وجود الخطأ - قفزت المكتبة إلى محتوى blob.bin واعتبرت رأس tar مزيّفًا إدخالًا حقيقيًا.

التفاصيل التقنية

يتطلب الإصلاح تطبيق تجاوزات PAX قبل حسابات الموضع:

root@kitploit:~
// Read header
let mut file_size = header.size();

// Apply PAX overrides BEFORE calculating next position
if let Some(pax_size) = pending_pax.get("size") {
    file_size = pax_size.parse().unwrap();
}

// Now calculate next header position using effective size
let next_pos = current_pos + 512 + pad_to_512(file_size);

الترخيص

يُوفَّر كود إعادة الإنتاج هذا لأغراض البحث الأمني والإفصاح المسؤول.

راجع COPYING للحصول على ترخيص الكود المصدري الأصلي.

تنزيل الأداة