أصدر باحثون في الأمن السيبراني استغلالاً تجريبياً علنياً لثغرة حرجة صُححت حديثاً في منتج FortiSIEM من شركة Fortinet، يمكن أن تؤدي إلى تنفيذ شيفرة عشوائية. وتحمل الثغرة المعرّف CVE-2026-106173 وبدرجة خطورة 9.4 وفق مقياس CVSS، وهي ثغرة اجتياز مسارات تتيح لمهاجم غير موثّق تنفيذ شيفرة أو أوامر غير مصرح بها عبر حزم مصممة خصيصاً. وكانت Fortinet قد أصدرت التصحيحات الأسبوع الماضي، إذ يجب ترقية الإصدار FortiSIEM 7.5.0 إلى 7.5.1 أو أحدث، بينما لا يتأثر الإصدار FortiSIEM 7.6.
آلية الاستغلال
بحسب Horizon3.ai، يتصل المهاجم غير الموثّق بخدمة gRPC التي تستمع على المنفذ TCP 27918، ويستغل الثغرة لاستبدال ملف موجود خارج المجلد المقصود، ثم يحوّل هذه القدرة على الكتابة في ملفات اعتباطية إلى تنفيذ شيفرة عن بُعد. وقالت الشركة إن معالج QueryResultReq في gRPC داخل FortiSIEM يعالج بيانات وصفية غير موثوقة دون تحقق سليم من المسار. وبصياغة بيانات وصفية تحتوي على تسلسلات اجتياز المسارات (../) وحقن بايت فارغ ضمن طبقتي HTTP/2 وترميز HPACK في gRPC، يستطيع المهاجم كتابة ملفات اعتباطية على نظام الملفات.
سلسلة الضعف الأولى والثانية
تنبع المشكلة من بناء غير آمن للمسار داخل دالة تسمى SendQueryResult()، تمرر المعامل query-id المقدم من المستخدم مباشرة دون تحقق كافٍ. وهذا يتيح للمهاجم تضمين تسلسلات اجتياز المجلدات مثل ../ للخروج من المجلد المقصود. غير أن ذلك يمكّنه من اختيار المجلد الذي يكتب فيه فقط، لا اسم الملف، لأن البرنامج يضيف تلقائياً اسم الملف الخاص به بالصيغة result-<عنوان IP المصدر>-0-0-<المعرّف>.dat، حيث المعرّف قيمة عداد يتحكم بها الخادم.
وهنا يأتي دور الضعف الثاني، فيمكن تضمين بايت فارغ (“\0”) في معامل query-id، فيفسره نظام التشغيل على أنه نهاية السلسلة ويتجاهل كل ما يليه. ونتيجة لذلك يُهمل اللاحق المضاف إلى اسم الملف عند تمرير المسار إلى دالة فتح الملفات.
من الكتابة إلى تنفيذ الشيفرة
يستطيع المهاجم استغلال هذا السلوك بصياغة قيمة query-id يسبق فيها البايت الفارغ اسم الملف المراد استبداله، مثل ../../../../../opt/charting/redishb.sh. وهذا الملف سكربت شل يجري فحوص سلامة لخدمة Redis، وتشغّله مهمة cron كل 60 ثانية، ما يعني أن أي شيفرة تُكتب فيه تُنفذ تلقائياً. وقال زاك هانلي، كبير مهندسي الهجوم في Horizon3.ai، إن الكتابة تقع على المسار الدقيق الذي يسبق البايت الفارغ، وعند توجيهها إلى ملف موجود يُستبدل في مكانه مع الاحتفاظ بمالكه وأذوناته الأصلية. وأضاف أن هناك صيغة ثانية تعتمد على طلبين لإنشاء ملف جديد تماماً باسم محدد.





























