أدى مفتاح مُثبت داخل الكود إلى تحويل نموذج ويب إلى مسار اختراق
تتمحور الحادثة حول ثغرة يوم صفر في KnowledgeDeliver، حيث أفيد بأن أسرار الإعدادات المرتبطة بـ ASP.NET ViewState كانت كافية للوصول إلى تنفيذ تعليمات برمجية عن بُعد ونشر web shell.
في أمن الويب، غالبا ما تكون الأخطاء الأكثر ضررا هي تلك الهادئة. قد يبدو ملف الإعدادات غير ضار حتى يحمل سرا تستخدمه التطبيقات لتحديد ما إذا كان الطلب موثوقا. في هذه الحالة، يبدو أن حد الثقة هذا كان نقطة الفشل: إذ أفيد بأن قيم machineKey المثبتة داخل الكود سمحت للمهاجمين بإساءة استخدام معالجة ViewState والانتقال من طلب ويب إلى تنفيذ تعليمات برمجية على الخادم.
حقائق سريعة
- تتمحور الحادثة حول KnowledgeDeliver وثغرة غير مرقعة وُصفت بأنها يوم صفر.
- أفيد بأن قيم machineKey المثبتة داخل الكود في ملف إعدادات أضعفت حماية سلامة ViewState.
- يوصف مسار الهجوم بأنه أدى إلى إساءة استخدام إلغاء التسلسل في ViewState وتنفيذ تعليمات برمجية عن بُعد.
- أفيد بنشر web shells بعد الاستغلال.
- لا يثبت السجل العام النطاق الكامل للأنظمة المتأثرة أو هوية المهاجم.
لماذا يهم هذا تقنيا
ViewState في ASP.NET هو آلية حقل مخفي تستخدم للاحتفاظ بحالة الصفحة بين الطلبات. توثق Microsoft أن البيانات محمية بواسطة MAC، وأن MAC يعتمد على مواد machineKey أو validationKey في الإعدادات. وهذا يعني أن السر ليس مجرد تفصيل نشر - بل هو جزء من نموذج الثقة للتطبيق.
إذا كانت مواد المفاتيح هذه مثبتة داخل الكود، أو معاد استخدامها في المكان الخطأ، أو مكشوفة بطريقة أخرى، فقد تنهار سلامة ViewState. عند هذه النقطة، قد يتمكن مهاجم من إرسال حالة مصممة خصيصا يقبلها التطبيق على أنها شرعية. وكانت النتيجة المذكورة هنا هي تنفيذ تعليمات برمجية عن بُعد، وهي اللحظة التي يتحول فيها إساءة استخدام التطبيق إلى خطر على مستوى المضيف.
كما أن نشر web shell المبلغ عنه مهم أيضا. من منظور دفاعي، يشير web shell عادة إلى أن المهاجم أراد أكثر من مجرد تعطل لمرة واحدة أو إثبات مفهوم. ويستخدم عادة للاحتفاظ بإمكانية تنفيذ الأوامر على خادم متصل بالإنترنت بعد الاختراق الأولي. وهذا لا يثبت سرقة بيانات أو حركة جانبية، لكنه يرفع من مستوى المخاطر المتعلقة بالاحتواء والمراجعة الجنائية.
حتى وقت كتابة هذا التقرير، لم تثبت المعلومات العامة بالكامل حزمة المنتجات الدقيقة، أو النطاق الكامل للاختراق، أو ما إذا كانت الأنظمة اللاحقة قد تأثرت. والمعلومات المتاحة تدعم تحليلا للمخاطر، لا ادعاء نهائيا بشأن الأثر الأوسع.
ما الذي ينبغي على المدافعين مراقبته
تسلط هذه الحالة الضوء على درس عملي: قد يكون الأصل الأكثر حساسية هو سر إعدادات، لا الشيفرة نفسها. يجب على الفرق التي تشغل تطبيقات ويب بأسلوب ASP.NET التعامل مع مواد machineKey على أنها بيانات اعتماد عالية القيمة، والتأكد من أنها ليست مضمنة في ملفات خاضعة للتحكم في الإصدارات، والتحقق من معالجتها بشكل متسق عبر البيئات.
يمكن لفرق الأمن أيضا البحث عن الأعراض بدلا من الافتراضات. يمكن أن يكون من المفيد رصد حركة postback غير المعتادة، وأخطاء ViewState غير الصالحة، والتعديلات غير المتوقعة في ملفات الإعدادات، والبرامج النصية غير المألوفة في جذور الويب. وفي البيئات التي يشكل فيها web shell مصدر قلق، تكون مراقبة سلامة الملفات والفرز على مستوى المضيف ذات قيمة خاصة.
الدرس الأوسع غير مريح لكنه مألوف: يمكن لميزة روتينية للحفاظ على حالة الصفحة أن تتحول إلى مسار هجوم عندما يُساء التعامل مع السر الذي يحميها. في الاختراقات الحديثة لتطبيقات الويب، لا يحتاج المهاجمون دائما إلى سلسلة استغلال درامية. أحيانا يحتاجون فقط إلى مفتاح واحد في غير موضعه.
الخلاصة
ما يجعل هذه الحادثة جديرة بالملاحظة ليس مجرد يوم الصفر المبلغ عنه، بل درس البنية المعمارية الكامن خلفها. عندما تعتمد ضوابط السلامة على الأسرار، تصبح إدارة المفاتيح جزءا من حدود الأمان. وإذا كان هذا الحد ضعيفا، فيمكن حتى لسلوك تطبيق ويب عادي أن يتحول إلى تنفيذ عن بُعد واستمرارية.
WIKICROOK
- ViewState: آلية في ASP.NET تخزن حالة الصفحة في حقل مخفي بين الطلبات.
- machineKey: مادة إعداد في ASP.NET تستخدم لحماية سلامة ViewState باستخدام رمز توثيق للرسائل.
- إلغاء التسلسل: عملية إعادة بناء البيانات المهيكلة من البايتات، وقد تكون خطرة إذا كان الإدخال الخاضع للمهاجم موثوقا.
- web shell: برنامج نصي على جانب الخادم يمنح المشغل إمكانية تنفيذ الأوامر عبر مضيف ويب مخترق.
- تنفيذ تعليمات برمجية عن بُعد: ثغرة تتيح للمهاجم تشغيل تعليمات برمجية على نظام مستهدف.




