
مشروع بحث أمني حول اختبار (fuzzing) libpng باستخدام OSS-Fuzz. يتضمن تحليل مجموعة البذور (seed corpus)، وأدوات اختبار مخصصة للقراءة/الكتابة، واستغلال برهان المفهوم لـ CVE-2014-9495.
مشروع بحثي أمني جماعي
حول Fuzzing: تُعد تقنية الاختبارات العشوائية (Fuzzing) أسلوبًا آليًا لاختبار البرمجيات يتم فيه توفير بيانات غير صالحة أو غير متوقعة أو عشوائية كمدخلات للبرنامج لاكتشاف الأخطاء والثغرات. ويستخدم الاختبار العشوائي الموجه بالتغطية (Coverage-guided fuzzing) التغذية الراجعة من تغطية الكود لاستكشاف مسارات تنفيذ مختلفة بذكاء.
حول OSS-Fuzz: OSS-Fuzz هي خدمة الاختبارات العشوائية المستمرة من Google للبرامج مفتوحة المصدر. تستخدم محرك LibFuzzer وغيره من محركات الاختبار العشوائي لاختبار المشاريع مفتوحة المصدر الهامة تلقائيًا والإبلاغ عن الثغرات.
يعرض هذا المشروع تقنيات الاختبار العشوائي الموجه بالتغطية، وتحليل تغطية الكود، واستغلال الثغرات باستخدام إطار العمل OSS-Fuzz من Google على مكتبة libpng.
الهدف: libpng v1.6.48 (للاختبار العشوائي)، v1.5.20 (للاستغلال)
للاطلاع على المنهجية التفصيلية والتقرير الكامل: راجع report.pdf
للحصول على التعليمات الكاملة: راجع Instructions.md
| المقياس | مع مجموعة البذور | بدون مجموعة البذور | التحسين |
|---|---|---|---|
| تغطية الأسطر | 41.83% | 24.76% | +17.07% |
| تغطية الفروع | 35.49% | 21.03% | +14.46% |
| تغطية الدوال | 50.75% | 34.75% | +16.00% |

التحسين 1 - أداة قراءة محسنة (submit_improve1)
pngread.c، +73 سطرًا في pngtrans.cالتحسين 2 - أداة الكتابة (submit_improve2)

تم استغلال تجاوز سعة المخزن المؤقت في الكومة (heap buffer overflow) في libpng v1.5.20 بنجاح:
part4/run.poc.sh├── part1/ # تحليل تأثير مجموعة البذور
│ ├── run.w_corpus.sh # التشغيل مع مجموعة البذور
│ ├── run.w_o_corpus.sh # التشغيل بدون مجموعة البذور
│ └── report/ # تقارير التغطية
├── part3/ # تحسينات أدوات الاختبار المخصصة
│ ├── improve1/ # أداة قراءة محسنة
│ └── improve2/ # أداة كتابة جديدة
└── part4/ # استغلال CVE-2014-9495
├── run.poc.sh # تشغيل الاستغلال
└── write_exploit.c # كود إثبات المفهوم
# Part 1: Fuzzing experiments (4 hours each)
cd part1
./run.w_corpus.sh # or ./run.w_o_corpus.sh
# Part 3: Test improvements (4 hours each)
cd part3/improve1 && ./run.improve1.sh
cd part3/improve2 && ./run.improve2.sh
# Part 4: Exploit CVE
cd part4 && ./run.poc.sh
عرض تقارير التغطية:
firefox part1/report/w_corpus/linux/index.html
تم إكمال مشروع البحث الأمني هذا بالتعاون بين كل من: