CVE-2025-43300: ثغرة تلف الذاكرة في معالجة صور DNG على iOS/macOS
نظرة عامة
CVE-2025-43300 هي ثغرة حرجة في تلف الذاكرة داخل إطار عمل معالجة الصور من Apple وتؤثر على أنظمة iOS 18.6.1 وأنظمة macOS. توجد الثغرة في كود فك ضغط JPEG Lossless داخل RawCamera.bundle، وتُنشَّط بسبب تعارض بين بيانات TIFF الوصفية ومعاملات دفق JPEG في ملفات DNG.
تفاصيل الثغرة
السبب الجذري
تنبع الثغرة من تعارض بين البيانات الوصفية والدفق في ملفات DNG (الصورة الرقمية السالبة):
- تشير بيانات SamplesPerPixel الوصفية في رؤوس TIFF إلى مكونات الألوان المتوقعة
- يحدد عدد مكونات SOF3 في دفق JPEG Lossless مكونات البيانات الفعلية
- عندما تختلف هذه القيم، يصبح تخصيص الذاكرة والمعالجة غير متطابقين
تدفق تلف الذاكرة
1. يقرأ المحلل SamplesPerPixel من بيانات TIFF الوصفية (مثال: مكوّنان)
2. يخصص النظام مخزنًا مؤقتًا: العرض × الارتفاع × مكوّنان
3. يقرأ مفكك JPEG عدد مكونات SOF3 (مثال: مكوّن واحد)
4. يكتب مفكك الترميز البيانات بناءً على افتراضات غير متطابقة
5. يحدث تجاوز للمخزن المؤقت عند كتابة بيانات أكثر مما تم تخصيصه
ناقل الهجوم
- ثغرة بدون تفاعل (Zero-click): لا تتطلب أي تفاعل من المستخدم
- معالجة تلقائية: تُنشَّط عند عرض ملفات DNG أو استيرادها أو استلامها
- تأثير متعدد المنصات: تؤثر على أنظمة iOS و macOS معًا
- تلف الذاكرة: قد يؤدي إلى تعطل التطبيقات أو تنفيذ برمجيات محتمل
نظرة عامة على الأدوات
تحتوي هذه المستودعات على أداتين بلغة Python لتحليل وإعادة إنتاج CVE-2025-43300:
1. محلل ثغرات DNG (dng_vulnerability_analyzer.py)
الغرض: تحليل بنية ملف DNG لتحديد شروط الثغرة
الميزات الرئيسية:
- تحليل بنية ملف TIFF/DNG بما في ذلك IFDs و SubIFDs
- تحديد مواقع وسوم SamplesPerPixel الوصفية
- تحديد علامات SOF3 الخاصة بـ JPEG Lossless وأعداد المكونات
- كشف التعارضات بين البيانات الوصفية والدفق
- الإبلاغ عن إزاحات البايت الدقيقة للتعديل
الاستخدام:
python3 dng_vulnerability_analyzer.py <dng_file>
المخرجات:
- تحليل بنية الملف
- مواقع وقيم الوسوم الوصفية
- معلومات مكونات دفق JPEG
- تقييم الثغرة
- إزاحات محددة لإنشاء الإثبات العملي (POC)
2. معدِّل الهكس الآمن (hex_modifier.py)
الغرض: إنشاء ملفات إثبات عملي عن طريق تعديل بايتات محددة بأمان
الميزات الرئيسية:
- التحقق من قيم البايت المتوقعة قبل التعديل
- إنشاء تجزئات SHA256 لتتبع الملفات
- توليد تقارير فروق ثنائية (binary diff)
- تطبيق فحوصات أمان لمنع التلف العرضي
- دعم إنشاء الإثبات العملي يدويًا وتلقائيًا
الاستخدام:
# إنشاء إثبات عملي باستخدام إزاحات الثغرة المعروفة
python3 hex_modifier.py create-poc <input.dng>
# تعديل بايت يدوي
python3 hex_modifier.py modify <input.dng> <offset> <old_byte> <new_byte> <output.dng>
# توليد تقرير الفروق
python3 hex_modifier.py diff <original.dng> <modified.dng>
عملية إنشاء الإثبات العملي
الخطوة 1: تحليل الملف المستهدف
python3 dng_vulnerability_analyzer.py IMGP0847.DNG
يحدد هذا ما يلي:
- موقع بيانات SamplesPerPixel الوصفية
- مواقع عدد مكونات SOF3 في JPEG
- القيم الحالية والتعديلات المقترحة
الخطوة 2: إنشاء عينة قابلة للاستغلال
يتطلب الإثبات العملي تعديلين محددين على البايتات:
- زيادة بيانات SamplesPerPixel الوصفية (عادةً من 1 إلى 2)
- تقليل عدد مكونات SOF3 (عادةً من 2 إلى 1)
python3 hex_modifier.py create-poc IMGP0847.DNG
الخطوة 3: التحقق من الإثبات العملي
python3 dng_vulnerability_analyzer.py vuln_poc_IMGP0847.dng
يؤكد وجود التعارض وأن الثغرة قد تُنشَّط.
لماذا يعمل الإثبات العملي
الآلية التقنية
-
مرحلة التخصيص:
- يقرأ محلل الصور SamplesPerPixel = 2
- يخصص مخزنًا مؤقتًا لبيانات البكسل بقيمة مكوّنين
- حجم المخزن = عرض_الصورة × ارتفاع_الصورة × 2
-
مرحلة المعالجة:
- يواجه مفكك JPEG Lossless علامة SOF3 بمكوّن واحد
- يصبح منطق التحليل مشوشًا بشأن الحجم الفعلي مقابل المتوقع للبيانات
- يحاول كتابة البيانات بناءً على افتراضات غير متطابقة
-
تلف الذاكرة:
- تُكتب بيانات في المخزن أكثر مما تم تخصيصه أصلاً
- يتجاوز المخزن المؤقت مما يُتلف مناطق الذاكرة المجاورة
- ينتج عنه تعطل التطبيق أو تنفيذ برمجيات محتمل
خصائص تنسيق الملف
تستخدم ملفات DNG حاوية TIFF مع دفق JPEG Lossless مضمّن:
- بيانات TIFF الوصفية: تصف خصائص الصورة ومعلومات الألوان
- دفق JPEG: يحتوي على بيانات البكسل المضغوطة
- علاقة ثقة موجودة بين البيانات الوصفية ومحتوى الدفق
- فجوة في التحقق تسمح بوصول قيم غير متطابقة إلى كود المعالجة
تقييم الأثر
الخطورة: حرجة
- درجة CVSS: عالية (بدون تفاعل، تلف ذاكرة، تأثير واسع)
- الأنظمة المتأثرة: iOS 18.6.1، وأنظمة macOS ذات معالجة صور مشابهة
- ناقل الهجوم: نقل الملفات عبر الشبكة/محليًا
- تفاعل المستخدم: غير مطلوب
- النطاق: جميع الأجهزة التي تعالج ملفات DNG
سيناريوهات واقعية
- مرفقات البريد الإلكتروني التي تحتوي على ملفات DNG
- نقل ملفات AirDrop
- مزامنة الصور عبر السحابة
- تنزيل عينات المصورين من الويب
- مشاركة الوسائط عبر تطبيقات المراسلة
التخفيف والتصحيحات
استجابة البائع
- تم الإصلاح في iOS 18.6.2: نفذت Apple تحققًا مناسبًا من البيانات الوصفية
- تحديثات macOS: طُبقت إصلاحات مماثلة على معالجة الصور في macOS
- السبب الجذري: أُضيفت فحوصات اتساق بين البيانات الوصفية ومعاملات الدفق
التخفيفات الموصى بها
- تحديث الأنظمة: تثبيت iOS 18.6.2 أو أحدث
- التحقق من المدخلات: التحقق من اتساق البيانات الوصفية في المحللات المخصصة
- فحص الحدود: تنفيذ تحقق صارم من حجم المخزن المؤقت
- الاختبار العشوائي (Fuzzing): اختبار منتظم لمحللات تنسيقات الملفات
بنية الملف والتفاصيل التقنية
بنية TIFF/DNG
TIFF Header → IFD Chain → SubIFDs → Image Data
├── Metadata Tags (SamplesPerPixel, Compression, etc.)
├── JPEG Lossless Streams (SOF3 markers)
└── Pixel Data (compressed)
مواقع الثغرة الرئيسية
- وسم SamplesPerPixel: وسم TIFF رقم 0x0115 في هياكل IFD
- علامات SOF3: بداية إطار JPEG Lossless (0xFFC3)
- عدد المكونات: إزاحة البايت +9 من علامة SOF3
- التعارض الحرج: عندما تكون قيمة الوسم ≠ عدد المكونات
إرشادات الاختبار
بيئة اختبار آمنة
- استخدم أنظمة معزولة: أجهزة افتراضية أو أجهزة اختبار مخصصة
- أنشئ لقطات (Snapshots): قبل اختبار ملفات الإثبات العملي
- راقب الأعطال: تحقق من سجلات النظام وتقارير الأعطال
- عزل الشبكة: منع مشاركة الملفات غير المقصودة
السلوك المتوقع
- الأنظمة القابلة للاستغلال: تعطل التطبيق، أخطاء تلف الذاكرة
- الأنظمة المُصححة: معالجة صحيحة أو معالجة أخطاء سلسة
- مؤشرات السجلات: انتهاكات الوصول إلى الذاكرة، أخطاء التجزئة
المراجع التقنية
توثيق تنسيقات الملفات
- مواصفات TIFF 6.0: بنية الوسوم وصيغة IFD
- مواصفات DNG: تنسيق Adobe الرقمي السالب
- معيار JPEG: الضغط بلا فقدان (ITU-T T.87)
الأبحاث الأمنية
- تقنيات تلف الذاكرة: أساسيات تجاوز المخزن المؤقت
- الاختبار العشوائي لتنسيقات الملفات: اكتشاف الثغرات الآلي
- أمان المحللات: أفضل ممارسات التحقق من المدخلات
إخلاء مسؤولية: يُقدَّم هذا البحث لأغراض تعليمية وأمنية دفاعية فقط. يتحمل المستخدمون مسؤولية الامتثال للقوانين المعمول بها والمبادئ الأخلاقية.
ملاحظة
يستغرق الانهيار حوالي 1-3 دقائق حتى يتم تشغيله. استمتع
وللإثبات العملي يمكنك تشغيل open vuln_file.dng لتشغيل الملف أو مجرد معاينته وسيتم تنفيذه