واجهة Telerik UI لـ ASP.NET AJAX: من قراءة web.config إلى تنفيذ تعليمات برمجية عن بُعد دون مصادقة
أساليب الهجوم وتقنياته2026-10-29, 13:04
أثبت باحثون في Tanto Security وجود سلسلة من ثغرتين في Telerik UI لـ ASP.NET AJAX يمكن أن تؤدي إلى تنفيذ تعليمات برمجية عن بُعد دون مصادقة في ظل تكوينات معينة.
• CVE-2026-18672 — قراءة ملفات عشوائية عبر RadImageEditor
تُخزَّن حالة المحرر في حقل مخفي
<ClientID>_ClientState بصيغة JSON غير موقَّعة وغير مشفرة. أثناء postback، يقبل الخادم imageUrl يتحكم فيه المهاجم ويخزّن مسار الملف مؤقتًا في HttpRuntime.Cache تحت GUID مُولَّد حديثًا.
ثم يتلقى العميل _downloadKey مشفّرًا. وبإرساله إلى Telerik.Web.UI.WebResource.axd?type=iec&dkey=3، يجعل المهاجم ImageEditorCacheHandler يسترجع المسار المخزّن مؤقتًا ويعيد محتويات الملف.
في إثبات المفهوم الخاص بهم، قرأ الباحثون web.config باستخدام المسار النسبي للتطبيق ~/web.config. ويتم حل ذلك بشكل صحيح في كل من فحص الوصول الأولي إلى الملف ومعالج التخزين المؤقت، اللذين يفسّران بخلاف ذلك المسارات النسبية من أدلة أساس مختلفة.
عند تمكين ImageManager.EnableContentProvider، يجب أن يكون الملف الهدف موجودًا؛ وإلا يفشل الطلب قبل تخزين المسار مؤقتًا. يعرّض مربع حوار ImageEditor داخل RadEditor الآلية نفسها دون الحاجة إلى صفحة RadImageEditor منفصلة يمكن الوصول إليها علنًا.• CVE-2026-19219 — التلاعب بمسار الرفع في RadEditor
قد يحتوي
web.config المكشوف على Telerik.Web.UI.DialogParametersEncryptionKey أو machineKey ثابت لـ ASP.NET. لا يتم تكوين أي منهما صراحةً افتراضيًا، لذا يعتمد تصعيد قراءة الملفات إلى RCE على تكوين التطبيق.
باستخدام المفتاح المستعاد، يفكّ المهاجم تشفير معاملات الحوار المشفرة ويزوّرها (dp، المحمولة في dialogParametersHolder)، ويضبط ViewPaths وUploadPaths على ~/، ويغيّر SearchPatterns إلى .، ويزيد MaxUploadFileSize.
يقبل DialogParametersSerializer.Deserialize() هذه القيم دون التحقق بشكل مستقل من الأدلة المسموح بها. ويؤدي إرسال المعاملات المزوّرة إلى DialogHandler.aspx?DialogName=DocumentManager إلى فتح RadFileExplorer بمسارات يتحكم فيها المهاجم. ويمكن بعد ذلك أن يؤدي الرفع عبر WebResource.axd?type=rau إلى وضع web shell بصيغة .aspx في جذر التطبيق إذا كانت لدى عملية عامل IIS أذونات كتابة كافية.
في إثبات مفهوم ضد Telerik 2026.2.708، نفّذ الباحثون whoami باسم iis apppool\telerikpool-v708.• مسار RCE بديل — ASP.NET ViewState
إذا تم كشف
machineKey ثابت، يمكن للمهاجم تزوير payload __VIEWSTATE موثّق بشكل صحيح يحتوي على سلسلة إلغاء تسلسل TextFormattingRunProperties → XamlReader.Parse → ObjectDataProvider → Process.Start.
استخدم إثبات المفهوم هذه السلسلة لكتابة web shell. لا يُشترط CVE-2026-19219 لهذا المسار. وعندما لا يتم تكوين DialogParametersEncryptionKey منفصل، يمكن أيضًا استخدام machineKey نفسها لتزوير معاملات رفع الحوار.لا يعني كشف الملفات تلقائيًا وجود RCE. تتطلب السلاسل الموضّحة وجود
machineKey ثابت أو DialogParametersEncryptionKey. كما يتطلب نشر web shell صلاحية كتابة في الدليل الهدف.الإصدارات المتأثرة: Telerik UI لـ ASP.NET AJAX 2011.2.712–2026.2.708، ضمنًا. أضاف الإصدار 2026.3.812 التحقق من المسار والامتداد لقراءات الملفات، ومسارات صور مشفرة في حالة العميل، ومنع رفع الامتدادات الخطرة، بما في ذلك
.aspx و.ashx و.exe و.dll. ومع ذلك، يظل Telerik.Web.UI.FileBrowserAllowedPaths اختياريًا. وبدونه، يمكن للمهاجم الذي يملك مفتاح تشفير حوار صالح أن يختار أدلة رفع يحددها المهاجم ويمكن للتطبيق الوصول إليها، على الرغم من حظر امتدادات الملفات الخطرة. بالإضافة إلى الترقية إلى 2026.3.812 أو أحدث، يجب على المسؤولين تكوين FileBrowserAllowedPaths صراحةً، وتقييد أذونات الكتابة لمجموعة تطبيقات IIS، وتعطيل تنفيذ النصوص البرمجية في أدلة الرفع. وإذا كان web.config قد يكون مكشوفًا، فيجب تدوير أسراره.