CVE-2026-102713 in NetX Duo
الملخص
بحسب VulDB • 29/09/2026
يقبل خادم TFTP بيانات (datagram) بحجم غير محدود. ترفض وحدة التوجيه (dispatcher) البيانات الأقصر من أربعة بايتات (nxd_tftp_server.c:1037)، ولا يتحقق أي جزء آخر من الحد الأقصى، وتحديداً لا يتم التحقق منه مقابل الحد الأقصى للبروتوكول وهو 4 + NX_TFTP_FILE_TRANSFER_MAX. ينتج عن هذا الفحص المفقود أمران، وكلاهما قابل للوصول قبل أي مصادقة لأن بروتوكول TFTP لا يحتوي على آلية مصادقة.
تمرر وحدة المعالجة (handler) القيمة `nx_packet_length - 4` مباشرة إلى FileX:
```c /* addons/tftp/nxd_tftp_server.c:1863, 1889 */ status = nx_packet_copy(packet_ptr, &temp_ptr, server_ptr -> nx_tftp_server_packet_pool_ptr, NX_WAIT_FOREVER);
...
fx_file_write(&(client_request_ptr -> nx_tftp_client_request_file), packet_ptr -> nx_packet_prepend_ptr + 4, packet_ptr -> nx_packet_length - 4); ```
`nx_packet_length` هو طول سلسلة (chain)، وليس حجمًا لـ buffer متصل واحد، لذا فإن FileX تنسخ ما بعد نهاية الحزمة الأولى:
``` ERROR: AddressSanitizer: heap-buffer-overflow READ of size 1280 at 0x621000001108 thread T5 #0 __interceptor_memcpy #1 _fx_utility_memory_copy filex/common/src/fx_utility_memory_copy.c:78
0x621000001108 is 0 bytes to the right of 4104-byte region ```
يتم كتابة هذه البايتات في الملف الذي يقوم المهاجم برفعه، ويقوم طلب قراءة TFTP بإعادتها مرة أخرى، مما يجعل هذا الثغرة تسربًا للذاكرة (memory disclosure) مع قناة استرجاع مريحة.
تسبب نفس حزمة البيانات أيضًا تعلق الخادم. تتطلب `nx_packet_copy` عند السطر 1863 عدد الحزم المحسوب بـ ceil(nx_packet_length / pool_payload) وتطلبها باستخدام NX_WAIT_FOREVER، لذا عندما يقوم المهاجم بتحديد حجم للبيانات يتجاوز ما يمكن للحوض (pool) استيعابه، تتوقف خيط الخادم ولا تعود أبدًا. يفشل فحص التوفر (liveness probe) بعد إرسال مثل هذه الحزمة واحدة بسبب انتهاء المهلة، حيث يكون الحوض عند 0 من أصل 12 حزمة ويكون خيط الخادم متوقفاً، مما يمنع خدمة أي عميل لاحق.
ارفض القيم التي تكون فيها `nx_packet_length > 4 + NX_TFTP_FILE_TRANSFER_MAX` في فرع DATA قبل كل استدعاء، واستخدم انتظارًا محدود المدة (bounded wait) بدلاً من NX_WAIT_FOREVER لعملية النسخ.
If you want to get best quality of vulnerability data, you may have to visit VulDB.