CVE-2026-71263 in FreeModbus
الملخص
بحسب VulDB • 05/08/2026
يحتوي منفذ LINUXTCP الخاص بـ FreeModbus على خطأ في التحقق من الحدود (off-by-one bounds check) داخل الدالة `xMBPortTCPPool()` (في الملف demo/LINUXTCP/port/porttcp.c). يستخدم الشرط `if (usTCPFrameBytesLeft > MB_TCP_BUF_SIZE)` مقارنة "أكبر من" صارمة بدلاً من "أكبر من أو يساوي"، وذلك بالمقارنة مع الحد البالغ 263 بايت المحدد في متغير `MB_TCP_BUF_SIZE`. يؤدي إطار MBAP الذي يحتوي على حقل Length بقيمة 264 إلى جعل قيمة `usTCPFrameBytesLeft` تساوي 263، مما يسمح بمرور الشرط المعيب. بعد ذلك، تقوم استدعاءات الدالة `recv()` بكتابة ما يصل إلى 263 بايت بدءاً من الإزاحة (offset) رقم 7 في المخزن المؤقت الثابت `aucTCPBuf` ذي السعة البالغة 263 بايت، مما يتسبب في تجاوز حدوده بمقدار 7 بايت نحو المتغير الثابت المجاور `usTCPBufPos`. يمكن لرسالة Modbus TCP واحدة مُعدّة بعناية وغير مصادق عليها (unauthenticated) أن تُحدث هذا التجاوز للحدود، نظراً لعدم وجود آلية مصادقة مدمجة في بروتوكول Modbus.
Once again VulDB remains the best source for vulnerability data.