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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
tmux-fuzzing — تعزيز الاختبارات الاندفاعية لـ tmux باستخدام OSS-Fuzz. يشمل أدوات اختبار مخصصة `cmd-fuzzer` و `argument-fuzzer` لتحسين تغطية الكود ونموذج إثبات المفهوم لثغرة `CVE-2020-27347` | Kitploit
أدوات/GitHubGitHub/lucadibello/tmux-fuzzing
تحليل الثغرات الأمنيةتحليل الكودالاختبار العشوائيتحليل الملفات الثنائيةالتعلم والتعليممختبرات وتدريب عملي
GitHublucadibello/tmux-fuzzing

tmux-fuzzing

تعزيز الاختبارات الاندفاعية لـ tmux باستخدام OSS-Fuzz. يشمل أدوات اختبار مخصصة `cmd-fuzzer` و `argument-fuzzer` لتحسين تغطية الكود ونموذج إثبات المفهوم لثغرة `CVE-2020-27347`

عرض المستودع
13منذ سنة واحدةلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

مختبر التعتيم: تحسين التعتيم لـ tmux

أمن البرمجيات @ EPFL، ربيع 2025

ملخص

في هذا المختبر، قمنا بتحسين جهود التعتيم لـ tmux كمضاعف الطرفية ضمن بنية OSS-Fuzz من Google. قمنا أولاً بتحديد خط الأساس عن طريق تقييم تغطية الأسطر للأداة الحالية input-fuzzer، مع وبدون مجموعة البذور المقدمة، مع ملاحظة تغطية أولية مماثلة. بعد ذلك، حددنا منطقتين للكود في tmux يتم التمرين عليهما بشكل ضعيف بواسطة أداة التعتيم الأساسية. لمعالجة هذه الفجوات في التغطية، قمنا بتطوير وتقييم أداتين جديدتين مستهدفتين للتعتيم، cmd-fuzzer و argument-fuzzer، مما يثبت قدرتهما على تحسين التغطية في هذه المناطق التي كانت تحت الاختبار سابقًا. نظرًا لأن هذه التحسينات في التعتيم لم تكشف عن ثغرات حرجة جديدة ضمن الإطار الزمني للمشروع، فإن تحليلنا للانهيارات ركز على ثغرة تاريخية معروفة. قمنا بتطوير دليل إثبات المفهوم (PoC) لـ CVE-2020-27347 (تجاوز سعة المخزن المؤقت القائم على المكدس)، وقمنا بتحليل السبب الجذري، وناقشنا الإصلاح المطبق، وقمنا بتقييم آثاره الأمنية.

نظرة عامة على المشروع وأهدافه

هدف هذا المشروع إلى تطبيق وتحسين تقنيات التعتيم على مضاعف الطرفية مفتوح المصدر tmux، باستخدام إطار OSS-Fuzz. شمل المشروع عدة مراحل رئيسية:

  1. تقييم خط الأساس (الجزء 1):

    • فهم وتقييم أداة input-fuzzer الحالية لـ tmux.
    • مقارنة أداء تغطية الكود عند تشغيلها مع مجموعة البذور الافتراضية مقابل مجموعة بذور فارغة.
  2. تحليل فجوة التغطية (الجزء 2):

    • تحليل تقارير التغطية من الجزء 1 لتحديد مناطق الكود الهامة في tmux التي لم يتم التمرين عليها بشكل كافٍ بواسطة input-fuzzer.
    • التركيز على تحليل الوسائط (arguments.c) ومنطق تحليل/تنفيذ الأوامر (cmd-parse.c، وحدات cmd-*.c) كمجالات رئيسية للتحسين.
  3. تحسين أداة التعتيم (الجزء 3):

    • تطوير أداتين جديدتين مستهدفتين للتعتيم:
      • argument-fuzzer: مصممة خصيصًا لاختبار منطق تحليل وسائط سطر الأوامر في arguments.c.
      • cmd-fuzzer: مصممة لاختبار مسارات تحليل وتنفيذ الأوامر، مستهدفة cmd-parse.c ووحدات cmd-*.c المختلفة.
    • تقييم فعالية هذه الأدوات الجديدة عن طريق قياس تغطية الكود التي تم تحقيقها ومقارنتها بخط الأساس.
  4. تحليل الأعطال (الجزء 4):

    • نظرًا لعدم اكتشاف ثغرات حرجة جديدة بواسطة أدوات التعتيم المحسنة ضمن الإطار الزمني للمشروع، تم اختيار ثغرة معروفة موجودة مسبقًا في tmux (CVE-2020-27347) للتحليل المتعمق.
    • تضمن ذلك تطوير دليل إثبات المفهوم (PoC) لإعادة إنتاج الانهيار، وتحليل سببه الجذري، وفهم الإصلاح المطبق، وتقييم آثاره الأمنية.

هيكل المستودع

التسليم النهائي منظم على النحو التالي (ضمن دليل submission/):

root@kitploit:~
submission/
├── README.md                   # This file
├── part_1/                     # Files for Part 1: Baseline Evaluation
│   ├── oss-fuzz.diff           # Diff for removing seed corpus for input-fuzzer
│   ├── project.diff            # (Likely empty or minor for Part 1)
│   ├── remove_seed_corpus.patch # The actual patch file used
│   ├── report/                 # HTML Coverage reports for input-fuzzer
│   │   ├── w_corpus/
│   │   └── wo_corpus/
│   ├── run.w_corpus.sh         # Script to run input-fuzzer with corpus
│   └── run.wo_corpus.sh        # Script to run input-fuzzer without corpus
├── part_3/                     # Files for Part 3: Fuzzer Improvements
│   ├── coverage_noimprove/     # Baseline coverage (e.g., from input-fuzzer without corpus)
│   │   └── ...
│   ├── improve1/               # Improvement 1: argument-fuzzer
│   │   ├── coverage_improve1/  # Coverage report for argument-fuzzer
│   │   ├── oss-fuzz.diff       # OSS-Fuzz config changes for argument-fuzzer
│   │   ├── project.diff        # Tmux changes for argument-fuzzer (e.g., new .cc, Makefile.am)
│   │   └── run.improve1.sh     # Script to run argument-fuzzer
│   └── improve2/               # Improvement 2: cmd-fuzzer
│       ├── coverage_improve2/  # Coverage report for cmd-fuzzer
│       ├── oss-fuzz.diff       # OSS-Fuzz config changes for cmd-fuzzer
│       ├── project.diff        # Tmux changes for cmd-fuzzer
│       └── run.improve2.sh     # Script to run cmd-fuzzer
├── part_4/                     # Files for Part 4: Crash Analysis (CVE-2020-27347)
│   ├── environment/            # Docker environment for PoC
│   │   ├── Dockerfile
│   │   ├── run_tmux_cve_test.sh # Core PoC test logic
│   │   ├── test_fixed.sh
│   │   └── test_vulnerable.sh
│   └── run.poc.sh              # Script to build Docker image and run PoC tests
└── report.pdf                  # The comprehensive project report

(ملاحظة: دليل scripts/ الذي يحتوي على _run_fuzz_core.sh هو مساعد وسيكون جزءًا من الجذر إذا كان ملف README هذا موجودًا في جذر المشروع الحقيقي إلى جانب submission/)

الإعداد والاستخدام

جميع حملات التعتيم وإعادة إنتاج PoC لـ CVE مصممة للتشغيل ضمن بيئات Docker التي يتم تنسيقها بواسطة نصوص shell.

الإعداد والاستخدام

جميع حملات التعتيم وإعادة إنتاج PoC لـ CVE مصممة للتشغيل ضمن بيئات Docker التي يتم تنسيقها بواسطة نصوص shell.

المتطلبات الأساسية:

  • تثبيت Docker وتشغيله على نظام شبيه بيونكس.
  • قذيفة bash وعميل git.
  • تكوين مفاتيح SSH لـ [email protected] إذا كانت النصوص بحاجة لاستنساخ oss-fuzz (تحاول الاستنساخ إذا لم يتم العثور على oss-fuzz/ في جذر المشروع). بدلاً من ذلك، يمكنك استنساخ https://github.com/google/oss-fuzz.git مسبقًا في جذر المشروع.

هندسة النصوص العامة: يستخدم المشروع نصًا أساسيًا مركزيًا، scripts/_run_fuzz_core.sh (غير مضمن في دليل submission/ ولكنه جزء من هيكل المشروع العام الذي يفترضه هذا README). النصوص المنفردة الموجودة في submission/part_1/، submission/part_3/improve1/، submission/part_3/improve2/، و submission/part_4/ مسؤولة عن:

  1. إعداد بيئة الاختبار المحددة عن طريق تطبيق تصحيحات oss-fuzz.diff الخاصة بالتشغيل على نسخة نظيفة من مستودع oss-fuzz (متوقع أن يكون في ../../oss-fuzz بالنسبة لمعظم نصوص التشغيل).
  2. تصدير متغيرات التكوين (مثل PROJECT، HARNESS، LABEL، مسارات التصحيحات الخاصة بالمشروع، وأدلة الإخراج).
  3. استدعاء نص _run_fuzz_core.sh، الذي يتولى بعد ذلك:
    • تطبيق تصحيح على مستوى المشروع اختياري (مثل إضافة مصادر أداة تعتيم جديدة إلى tmux).
    • بناء صورة Docker لـ OSS-Fuzz (إذا تم الإشارة).
    • بناء أداة (أدوات) التعتيم المحددة مع المعقم المختار.
    • تنفيذ أداة التعتيم للمدة المكونة (عادة 4 ساعات).
    • إنشاء وتصدير مجموعة البذور وتقارير تغطية HTML إلى المواقع المحددة ضمن هيكل دليل submission/.

تشغيل النصوص: يوصى عمومًا بتنفيذ نصوص التشغيل من دليل جذر المشروع لضمان حل مسارات نسبية صحيحة لـ oss-fuzz/ وأدلة الإخراج.

1. الجزء 1: تقييم خط الأساس (input-fuzzer) تقوم هذه النصوص بتقييم أداة input-fuzzer الحالية لـ tmux.

root@kitploit:~
# From the project root directory:
./submission/part_1/run.w_corpus.sh  # Run input-fuzzer with default seed corpus
./submission/part_1/run.wo_corpus.sh # Run input-fuzzer without seed corpus

يستخدم run.w_corpus.sh سلوك بناء tmux الافتراضي فيما يتعلق بالبذور. يطبق run.wo_corpus.sh التصحيح submission/part_1/remove_seed_corpus.patch (عبر ملف oss-fuzz.diff المحلي الذي يستدعي هذا التصحيح أو يدمج تغييراته) على oss-fuzz/projects/tmux/build.sh لضمان عدم استخدام أي مجموعة بذور أولية. يتم تصدير تقارير التغطية إلى submission/part_1/report/w_corpus/ و submission/part_1/report/wo_corpus/ على التوالي.

2. الجزء 3: تحسينات أداة التعتيم (input-fuzzer)

  • التحسين 1 (argument-fuzzer): يستهدف arguments.c.

    root@kitploit:~
    # From the project root directory:
    ./submission/part_3/improve1/run.improve1.sh
    
  • التحسين 2 (cmd-fuzzer): يستهدف cmd-parse.c وتنفيذ الأوامر.

    root@kitploit:~
    # From the project root directory:
    ./submission/part_3/improve2/run.improve2.sh
    

كل نص run.improveX.sh يطبق ملف oss-fuzz.diff المحلي ويضبط PROJECT_PATCH_FILE إلى ملف project.diff المحلي (الذي يضيف كود أداة التعتيم الجديدة إلى tmux ويحدث Makefile.am). يتم تصدير تقارير التغطية إلى الدلائل submission/part_3/improveX/coverage_improveX/ المعنية. يحتوي دليل submission/part_3/coverage_noimprove/ على تغطية خط الأساس من الجزء 1 للمقارنة.

3. الجزء 4: إعادة إنتاج PoC لـ CVE-2020-27347

root@kitploit:~
# From the project root directory:
./submission/part_4/run.poc.sh

يقوم هذا النص ببناء صورة Docker مخصصة (من submission/part_4/environment/Dockerfile) ويختبر tmux 3.1b (ضعيف) مقابل الالتزام المصحح a868bac.

النتائج والاستنتاجات الرئيسية

(يمكن العثور على الشروحات التفصيلية والأشكال والجداول في التقرير الكامل report.pdf)

الجزء 1 (خط الأساس - input-fuzzer)

  • مع مجموعة البذور الافتراضية: 14.00% تغطية الأسطر (7281/51997 سطرًا)، 24.44% تغطية الدوال.
  • بدون مجموعة البذور: 13.94% تغطية الأسطر (7248/51997 سطرًا)، 24.31% تغطية الدوال.
  • كان تأثير مجموعة البذور الأولية طفيفًا على أداة input-fuzzer الحالية.
  • أجزاء كبيرة من tmux، لا سيما تحليل الوسائط (arguments.c)، تحليل/تنفيذ الأوامر (cmd-parse.c، cmd-*.c)، ومنطق العميل/الخادم (client.c، server.c)، كانت غير ممارسة إلى حد كبير (مثال: arguments.c بحوالي 5.8% تغطية الأسطر).

الجزء 3 (تحسينات أداة التعتيم)

  • argument-fuzzer (يستهدف arguments.c): حققت 66.62% تغطية أسطر لـ arguments.c، وهي زيادة كبيرة من خط الأساس البالغ ~5.8%.
  • cmd-fuzzer (يستهدف تحليل الأوامر وتنفيذها): زادت تغطية الأسطر لـ cmd-parse.c إلى 42.58% (من ~27%) وتغطية الدوال إلى 77.78%.
  • كما ارتفعت تغطية arguments.c إلى 45.54% من خلال هذه الأداة.
  • وصلت cmd.c إلى 39.14% تغطية أسطر.
  • حققت تغطية جديدة أو محسّنة بشكل كبير في وحدات cmd-*.c المختلفة (مثل cmd-bind-key.c، cmd-set-options.c إلى 50% تغطية دوال) وإجراءات معالجة المفاتيح (key-string.c إلى 30% تغطية أسطر، key-bindings.c إلى 6.05% تغطية أسطر).

الجزء 4 (تحليل CVE-2020-27347)

  • تم بنجاح إعادة إنتاج CVE-2020-27347 (تجاوز سعة المخزن المؤقت القائم على المكدس في تحليل تسلسل الهروب SGR) على tmux 3.1b (الالتزام 6a33a12) باستخدام الحمولة \033[::::::7::1:2:3::5:6:7:m.
  • تم التأكيد أن التزام tmux a868bac (الذي يتضمن الإصلاح ويؤدي إلى الإصدار 3.1c) لم يكن عرضة للانهيار.
  • الثغرة، القابلة للاستغلال عن طريق كتابة تسلسل معد إلى TTY لوحة، تؤدي إلى رفض الخدمة ولديها إمكانية لتنفيذ تعليمات عشوائية. تم تصنيفها على أنها عالية الشدة (CVSS 7.8).

التحديات التي واجهتنا

  • ضمان بدء تشغيل tmux بشكل صحيح في بيئة Docker نصية، وتجنب أخطاء "ليس طرفية" بشكل خاص، تطلب استخدام جلسات منفصلة لـ PoC لـ CVE.
  • كانت إدارة حالة git (ضمان استنساخ كامل، وإعادة تعيين نظيفة قبل تطبيق التصحيحات) عبر سيناريوهات الاختبار المختلفة أمرًا بالغ الأهمية للبناءات القابلة للتكرار لإصدارات tmux محددة.
  • تطوير أدوات تعتيم جديدة فعالة (argument-fuzzer، cmd-fuzzer) تطلب فهمًا جيدًا لمنطق معالجة الوسائط والأوامر الداخلي لـ tmux لاستهداف مسارات كود محددة غير ممارسة.

العمل المستقبلي

  • تعزيز cmd-fuzzer لتغطية مجموعة أوسع من وحدات cmd-*.c، خاصة تلك التي تتعامل مع تفاعلات الحالة المعقدة مثل معالجات النوافذ أو التخطيط أو اللوحات.
  • التحقيق في استراتيجيات التعتيم لبروتوكول الاتصال بين العميل والخادم في tmux، بما قد يتضمن محاكاة بيئة أكثر تعقيدًا.
  • استكشاف استخدام التعتيم المدرك للبنية للغة أوامر tmux، ربما عن طريق الاستفادة من تعريفات القواعد من cmd-parse.y لتوليد تسلسلات أوامر صالحة نحويًا وأكثر تعقيدًا.

روابط مفيدة

  • tmux Project
  • OSS-Fuzz
  • CVE-2020-27347
  • Project Report PDF
تنزيل الأداة