كشفت شركة الأمان runZero عن سبع ثغرات أمنية في FatFs، وهي مكتبة نظام ملفات صغيرة تتيح للجهاز قراءة وكتابة تنسيقات FAT وexFAT المستخدمة على محركات أقراص USB وبطاقات SD.

العيوب مهمة لأن FatFs موجودة في كل مكان تقريبًا. يتم شحنه داخل البرامج الثابتة التي تقوم بتشغيل الكاميرات الأمنية والطائرات بدون طيار ووحدات التحكم الصناعية ومحافظ تشفير الأجهزة وغيرها من الأجهزة المبنية على أنظمة التشغيل في الوقت الفعلي.

في الأنظمة الأكثر تأثراً، يمكن للمهاجم الذي يحصل على محرك أقراص USB أو بطاقة SD أو ملف تحديث مفخخ على الجهاز أن يفسد ذاكرته ويقوم بتشغيل التعليمات البرمجية الخاصة به.

تفتقر العديد من الأجهزة المدمجة إلى حماية الذاكرة الموجودة في الهواتف وأجهزة الكمبيوتر المكتبية، ولهذا السبب يقول RunZero “إن أي وصول فعلي يؤدي إلى كسر الحماية”. لا ينبغي للكشك العام، أو الكاميرا المزودة بفتحة SD، أو ماكينة الصراف الآلي، أو جهاز التصويت المزود بمنفذ USB أن يسلم السيطرة الكاملة بعد لحظة من الوصول الفعلي، ولكن هنا يمكن ذلك.

تعمل جميع الأخطاء السبعة بنفس الطريقة الأساسية. يحاول الجهاز قراءة وحدة تخزين أو صورة البرنامج الثابت التي تم تشويهها عمدًا، ويقوم FatFs بإساءة معالجة البيانات السيئة. قام runZero بتقييم مجموعة CVSS من متوسطة إلى عالية، بدون أي انتقادات.

الخطأ الرئيسي هو CVE-2026-6682 (CVSS 7.6)، وهو تجاوز لعدد صحيح في التعليمات البرمجية التي تقوم بتحميل وحدة تخزين FAT32. يمكن أن تنتج الرياضيات السيئة حجمًا خاطئًا للملف، والذي يعامله الكود لاحقًا على أنه طول قراءة حقيقي. على الأجهزة الحقيقية، يمكن أن يؤدي ذلك إلى تلف الذاكرة وتنفيذ التعليمات البرمجية.

فيما يلي جميع السبعة، الأسوأ أولاً حسب تصنيف runZero:

  • CVE-2026-6682 (7.6، عالي): يؤدي تجاوز عدد صحيح لتركيب FAT32 إلى تلف الذاكرة وتنفيذ تعليمات برمجية محتملة. يمكن الوصول إليه من خلال بعض تحديثات البرامج الثابتة، وليس فقط الوسائط المادية.
  • CVE-2026-6687 (7.6، عالي): يتجاوز حقل تسمية وحدة التخزين exFAT مخزنًا مؤقتًا صغيرًا، مما يمنح المهاجم موطئ قدم نظيفًا لإتلاف الذاكرة.
  • CVE-2026-6688 (7.6، عالي): تتجاوز أسماء الملفات الطويلة الكود المجمّع الذي تضعه العديد من المشاريع حول FatFs، مثل strcpy من fno.fname في مخزن مؤقت ثابت. من الصعب إصلاحه داخل FatFs وحده.
  • CVE-2026-6685 (6.1، متوسط): التفاف رياضي في معالجة ذاكرة التخزين المؤقت على وحدات تخزين مجزأة يمكن أن يؤدي إلى إتلاف البيانات بصمت.
  • CVE-2026-6683 (4.6، متوسط): exFAT قسمة على صفر مما يؤدي إلى تعطل الجهاز. في تدفق التحديث، يمكنه كسر الأجهزة. يمكن الوصول إليها أيضًا من خلال بعض تحديثات البرامج الثابتة.
  • CVE-2026-6686 (4.6، متوسط): يمكن أن يؤدي الملف الممتد بعد نهايته إلى تسرب البيانات المتبقية من الملفات المحذوفة مسبقًا.
  • CVE-2026-6684 (4.6، متوسط): يمكن أن يؤدي جدول أقسام GPT المشوه (خريطة القرص) إلى تعليق الجهاز أثناء التثبيت. وهو الوحيد من بين السبعة الثابتة في المنبع، في FatFs R0.16.

هنا هو الجزء الصعب. تتم صيانة FatFs بواسطة أحد المطورين في زاوية صغيرة من الإنترنت، وتقول runZero إنها حاولت مرارًا وتكرارًا الوصول إلى المشرف ودخلت في مركز التنسيق JPCERT/CC الياباني، دون أي استجابة.

من خلال حساب runZero، لا يوجد إصلاح أولي لأخطاء تلف الذاكرة، ولا توجد قائمة بريدية أمنية، ولا توجد وسيلة للعديد من المنتجات التي تحتوي على FatFs لمعرفة أنها متأثرة. يساعد التحديث في تعليق GPT، نظرًا لأن الإصدار الحالي يحظره، لكن الباقي يقع على عاتق البائعين النهائيين لإصلاحه بأنفسهم.

يقوم runZero بتسمية الأنظمة الأساسية المتأثرة، بما في ذلك Espressif ESP-IDF وSTMicroelectronics STM32Cube وZephyr وMicroPython وArduPilot وRT-Thread وMbed وSamsung TizenRT ومحدث SWUpdate. وهذا يدفع المشكلة إلى إنترنت الأشياء الاستهلاكية، والمعدات الصناعية، والطائرات بدون طيار، ومحافظ العملات المشفرة.

اعتبارًا من الكشف عن RunZero في 1 يوليو، لم يتم الإبلاغ عن أي هجمات باستخدام هذه الأخطاء، ولم يظهر أي منها منذ ذلك الحين. لكن مادة استغلال البرمجيات الخبيثة أصبحت عامة بالفعل: فقد قام برنامج runZero بشحن صور قرص إثبات المفهوم، وأداة اختبار، ومثال استغلال قائم على QEMU في مستودع مصاحب.

إذا قمت بإنشاء برنامج ثابت يلامس الوسائط FAT أو exFAT، فالنصيحة تكون مباشرة. ابحث عن نسخة FatFs في منتجك، وقم بمراجعة التعليمات البرمجية المجمعة حولها، وانظر بعناية في كيفية التعامل مع أسماء الملفات وأحجام الملفات، ثم خطط للتصحيح.

إذا كنت تقوم بتشغيل أجهزة متأثرة، فتعامل مع المنافذ الفعلية وقنوات التحديث كسطح هجوم: حدد من يمكنه توصيل الوسائط، وراقب تحديثات البرامج الثابتة الخاصة بالمورد.

لماذا يستمر هذا في الحدوث

قامت runZero بمراجعة FatFs يدويًا لأول مرة في عام 2017 ووجدت أنها لا تستحق الإبلاغ عنها. بالعودة في مارس 2026، أشار الفريق إلى إعداد جاهز للاستخدام بنفس الكود: Visual Studio Code، وGitHub Copilot في الوضع “التلقائي”، وبعض المطالبات البسيطة.

قامت LLM ببناء أداة Fuzzer، وهي أداة تقوم بإدخال البيانات المشوهة في التعليمات البرمجية حتى ينكسر شيء ما. وقد أدى ذلك إلى ظهور الأخطاء التي أغفلها التدقيق اليدوي وساعد في التأكد من إمكانية استغلالها.

وهذا يناسب النمط المتنامي. في أواخر عام 2024، اكتشف وكيل Google Big Sleep ثغرة حقيقية وقابلة للاستغلال في الذاكرة في SQLite والتي أغفلها التشويش العادي.

في الشهر الماضي فقط، كشف أحد عملاء الذكاء الاصطناعي المستقل عن 21 خطأ يتعلق بسلامة الذاكرة في FFmpeg، وهي مكتبة C أخرى مدمجة على نطاق واسع. إن وجهة نظر runZero صريحة: إذا كان بإمكان خط أنابيب الذكاء الاصطناعي الجاهز في الغالب العثور على هذه الأشياء، فيمكن لأي شخص أيضًا العثور عليها، لذا فإن الجلوس عليها بهدوء لا يحمي أحدًا.

مشكلة الترقيع مألوفة. تتوقع runZero أن تستغرق الإصلاحات النهائية سنوات، وليس أيامًا، وتعد PixieFail سابقة: مجموعة عام 2024 المكونة من تسعة أخطاء في كود تشغيل الشبكة لـ EDK II، البرنامج الثابت وراء العديد من العلامات التجارية لأجهزة الكمبيوتر والخوادم، والتي كان البائعون بطيئين في تصحيحها. لدى FatFs نفس الشكل وخط أنابيب إصلاح أضعف، لأنه لا يوجد منبع مستجيب على الإطلاق.

انتبه لأمرين: ما إذا كان مشرف FatFs سيظهر مرة أخرى مع التصحيح، وكيف يستجيب بائعو المنصات الكبار الذين يقومون بتجميعه. وإلى أن يفعلوا ذلك، افترض أن الكثير من أجهزة الشحن تقرأ تخزينًا غير موثوق به باستخدام تعليمات برمجية ليس لها أي حل.

شاركها.
اترك تعليقاً