
نشرة أمنية تفصّل CVE-2026-50787، وهي ثغرة استهلاك غير مُتحكم فيه للموارد في توليد CAPTCHA في e-SIC Livre، مما يتيح رفض الخدمة عن بُعد عبر معاملات ضخمة الحجم.
توجد ثغرة استهلاك الموارد في مكوّن توليد الكابتشا (CAPTCHA) في e-SIC Livre (esiclivre).
يقبل نقطة النهاية المُعرَّضة معاملات يتحكم بها المستخدم تُحدد أبعاد صورة الكابتشا، وحجم الخط، وعدد الأحرف المطلوب عرضها. تُستخدم هذه القيم دون إجراء فحوصات مناسبة للحدود العليا.
يمكن لمهاجم بعيد غير مُصادَق تقديم قيم كبيرة بشكل مفرط، مما يتسبب في استهلاك التطبيق لموارد ذاكرة ومعالجة (CPU) كبيرة أثناء إنشاء الصورة وعرض النص. قد يؤدي ذلك إلى انتهاء مهلة التطبيق، أو استجابات HTTP 5xx، أو استنفاد العمال (workers)، أو رفض الخدمة.
0a72b4c9ab89244ec3bd3d7fa0b765850cc9afd7 وما قبلهrestrito/inc/captcha.phpيقبل نقطة النهاية معاملات GET التالية:
l - عرض الصورةa - ارتفاع الصورةtf - حجم الخطql - عدد أحرف الكابتشاتُؤخذ هذه المعاملات مباشرة من إدخال المستخدم وتُستخدم في عمليات معالجة الصور دون حدود عليا مناسبة.
يقرأ الكود المُعرَّض القيم مباشرة من $_GET:
$largura = $_GET["l"];
$altura = $_GET["a"];
$tamanho_fonte = $_GET["tf"];
$quantidade_letras = $_GET["ql"];
captcha($largura,$altura,$tamanho_fonte,$quantidade_letras);
يتم تمرير العرض والارتفاع المُقدَّمان لاحقًا إلى دالة إنشاء الصور في GD:
$imagem = imagecreate($largura,$altura);
كما تحدد قيمة ql التي يتحكم بها المستخدم عدد التكرارات المنفذة عند عرض أحرف الكابتشا:
for($i = 1; $i <= $quantidade_letras; $i++){
imagettftext(
$imagem,
$tamanho_fonte,
rand(-25,25),
($tamanho_fonte*$i),
($tamanho_fonte + 10),
$branco,
$fonte,
substr($palavra,($i-1),1)
);
}
نظرًا لأن هذه القيم غير مقيدة بحدود معقولة، يمكن للطلبات المُصمَّمة بعناية إجبار التطبيق على تنفيذ عمليات تخصيص صور وعرض نصوص مفرطة.
نقطة نهاية الكابتشا المُعرَّضة قابلة للوصول عن بُعد.
يمكن للمهاجم إرسال طلبات تحتوي على قيم كبيرة بشكل غير طبيعي لأبعاد الصورة، أو حجم الخط، أو عدد الأحرف. يحاول الخادم بعد ذلك معالجة تلك القيم باستخدام عمليات PHP GD.
قد يؤدي ذلك إلى:
لا يتطلب الوصول إلى الوظيفة المُعرَّضة أي مصادقة.
يمكن أن يؤدي الاستغلال الناجح إلى رفض الخدمة (DoS) من خلال استهلاك الموارد غير المُتحكم فيه.
يعتمد التأثير على إعدادات PHP، وموارد النظام المتاحة، وإعدادات خادم الويب، وعدد الطلبات المتزامنة.
تنتج الثغرة عن التحقق غير الكافي وغياب الحدود العليا على المعاملات التي يتحكم بها المستخدم قبل تمريرها إلى عمليات صور GD كثيفة الاستهلاك للموارد.
يجب على التطبيق التحقق بدقة من جميع معاملات توليد الكابتشا قبل معالجتها.
تشمل الإجراءات الموصى بها:
يمكن أن تتضمن الحدود الدفاعية المثال قيمًا قصوى معقولة للعرض والارتفاع وحجم الخط وطول الكابتشا وفقًا لواجهة التطبيق المقصودة.
لم يتوفر أي إصلاح من الجهة المطورة (upstream) في وقت طلب وتعيين CVE.
يجب على المستخدمين الذين ينشرون الإصدارات المتأثرة تطبيق التحقق المحلي وحدود الموارد حتى يتوفر إصلاح من الجهة المطورة.
اكتشف وأبلغ Bryan Romero https://github.com/brynax
يوثق هذا الإشعار الثغرة، وسببها الجذري التقني، والتخفيفات الموصى بها لأغراض دفاعية ومعالجة. ويحذف عمدًا أدوات رفض الخدمة الآلية، وطرق الاستغلال عالية الحجم، والتعليمات التشغيلية التي قد تسهل إساءة الاستخدام.