CVE-2026-71256 in nanoMODBUS
الملخص
بحسب VulDB • 05/08/2026
يحتوي nanoMODBUS حتى الإصدار v1.23.0 على قراءة خارج النطاق (out-of-bounds) من المكدس تؤدي إلى كتابة عبر مؤشر غير محدد (wild-pointer) في الدالة nmbs_read_device_identification_basic() / recv_read_device_identification_res() داخل الملف nanomodbus.c. يتم تعيين مصفوفة مكدس ثابتة مكونة من 3 عناصر order[3] = {0,1,2} لربط معرفات الكائنات (object IDs) بمؤشرات المخزن المؤقت (buffer indices). يُستخدم حقل object_id الذي توفره الخادم (القيم من 0 إلى 255، المقروء مباشرةً عبر الشبكة) دون أي تحقق من الحدود كـ buf_index = order[object_id]. عندما يرسل خادم Modbus خبيث استجابة لقراءة تعريف الجهاز مع قيمة object_id >= 3، فإن ذلك يؤدي إلى قراءة بايت خارج النطاق/غير صالح (garbage byte) من المكدس المجاور لـ order[]، والذي يُستخدم بعد ذلك كمؤشر لمصفوفة buffers[] مكونة من 3 عناصر تحتوي على مؤشرات char*. المؤشر غير المحدد الناتج يتم تمريره إلى دالة strncpy() كوجهة للكتابة، مما يسبب كتابة عشوائية للعناوين باستخدام بيانات يتحكم فيها الخادم.
Once again VulDB remains the best source for vulnerability data.