
CVE-2026-2002 تقرير وإثبات المفهوم
إضافة Forminator Forms – Contact Form, Payment Form & Custom Form Builder لـ WordPress عرضة لـ Stored Cross-Site Scripting عبر معامل form_name في جميع الإصدارات حتى 1.50.2، وذلك بسبب عدم كفاية تنظيف المدخلات وهروب المخرجات. هذا يتيح للمهاجمين الموثقين، بصلاحيات مستوى المشرف، حقن نصوص برمجية عشوائية في الصفحات التي سيتم تنفيذها كلما وصل مستخدم إلى صفحة محقونة. الإضافة تسمح للمشرفين بإعطاء صلاحيات إدارة النماذج للمستخدمين ذوي المستوى الأدنى، مما قد يجعل هذا قابلاً للاستغلال بواسطة مستخدمين مثل المشتركين.
السبب الجذري يحتاج إلى دقة في الوعي بثغرة المنطق: (هذه الدالة في الملف /fields/html.php)
public function markup( $field, $views_obj ) {
$settings = $views_obj->model->settings;
$html = '';
$label = esc_html( self::get_property( 'field_label', $field ) );
$id = self::get_property( 'element_id', $field );
$form_id = false;
$html .= '<div class="forminator-field forminator-merge-tags" data-field="' . $id . '">';
if ( $label ) {
$html .= sprintf(
'<label class="forminator-label">%s</label>',
self::convert_markdown( $label )
);
}
// Check if form_id exist.
if ( isset( $settings['form_id'] ) ) {
$form_id = $settings['form_id'];
}
// To allow iframes in content.
add_filter( 'wp_kses_allowed_html', array( 'Forminator_Core', 'add_iframe_to_kses_allowed_html' ) );
$content = wp_kses_post( self::get_property( 'variations', $field ) ); // root cause here
remove_filter( 'wp_kses_allowed_html', array( 'Forminator_Core', 'add_iframe_to_kses_allowed_html' ) );
$html .= forminator_replace_variables(
$content,
$form_id
);
$html .= '</div>';
return $html;
}
هذا الكود يستخدم دالة تنظيف (wp_kses_post) لحماية XSS من المستخدم ذي الصلاحية المنخفضة، لكن المشكلة هي أنها تنظف قبل استبدال المتغيرات. كنتيجة لذلك، يمكن للمهاجم ذي الصلاحية المناسبة استخدام وسوم HTML صالحة لتجاوز wp_kses_post وحقن حمولة JavaScript في المتغيرات من أجل تشغيل XSS.
المهاجم ذو صلاحية تحرير النموذج يمكنه إدراج HTML في حقل HTML بالشكل التالي
ثم تغيير form_name إلى
javascript:alert(1) or javascript:<حمولة>
| النتيجة | الخطورة | الإصدار | سلسلة المتجهات |
|---|---|---|---|
| 4.4 | متوسطة | 3.1 | CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N |
في رأيي، هذه الثغرة على الرغم من أنها لا تمتلك خطورة كبيرة، إلا أنها تتطلب دقة في الوعي بالمنطق ومراجعة الكود، كما ترى فقط بخطأ صغير بين سطرين من الكود ينشأ ثغرة.

إذا كنت تتفاعل مع هذا النوع من البحث وتريد دعم المزيد من التنقيب، يمكنك التبرع ودعمي. أقدر مساهمتك.
╰(°▽°)╯