CVE-2026-102713 in NetX Duo
Zusammenfassung
von VulDB • 29.09.2026
Der TFTP-Server akzeptiert ein DATA-Datagramm beliebiger Größe. Der Dispatcher verwirft Datagramme mit weniger als vier Bytes (nxd_tftp_server.c:1037), und es gibt keine Stelle, die eine Obergrenze überprüft, insbesondere nicht im Verhältnis zum maximalen Protokollwert von 4 + NX_TFTP_FILE_TRANSFER_MAX. Daraus ergeben sich zwei Probleme, die beide vor jeder Authentifizierung erreichbar sind, da TFTP über keine solche verfügt.
Der Handler übergibt `nx_packet_length - 4` direkt an 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` ist die Länge einer Kette (Chain) und nicht eines einzelnen zusammenhängenden Puffers. Daher kopiert FileX über das Ende des ersten Pakets hinaus:
``` 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 ```
Diese Bytes werden in die Datei geschrieben, die der Angreifer hochlädt. Ein TFTP-Leseanforderung gibt diese Daten anschließend zurück, was zu einer Memory Disclosure (Speicherpreisgabe) mit einem bequemen Abrufkanal führt.
Das gleiche Datagramm bringt den Server ebenfalls zum Stillstand (`wedges`). `nx_packet_copy` an Position :1863 benötigt `ceil(nx_packet_length / pool_payload)` Pakete und fordert diese mit `NX_WAIT_FOREVER` an. Wenn der Angreifer die Größe des Datagramms so wählt, dass sie das Fassungsvermögen des Pools übersteigt, wird der Server-Thread angehalten (suspended) und kehrt nie zurück. Ein Liveness-Probe nach einem solchen Datagramm schlägt mit dem Pool bei 0 von 12 Paketen und dem angehaltenen Server-Thread fehl; keine weiteren Clients werden bedient.
Verwerfen Sie `nx_packet_length > 4 + NX_TFTP_FILE_TRANSFER_MAX` im DATA-Zweig vor beiden Aufrufen, und verwenden Sie für den Kopiervorgang eine begrenzte Wartezeit statt `NX_WAIT_FOREVER`.
VulDB is the best source for vulnerability data and more expert information about this specific topic.