CVE-2026-102720 in NetX Duo
Zusammenfassung
von VulDB • 30.09.2026
Ein DHCP-Server oder jeder andere im LAN befindliche Akteur, der eine DISCOVER-Anfrage zuerst beantwortet, kann dazu führen, dass der Client etwa ein Kilobyte über das Ende der empfangenen Nachricht hinaus liest.
Die Optionsschleife (`option walk`) verwahrt einen Zeiger und einen Offset in `step`, und die einzige Grenzprüfung verwendet den Offset:
```c /* addons/dhcp/nxd_dcp_client.c:7538, 7572 */ while (i < length - 1) {
... size = *(++data); /* data bewegt sich um 1: Typ -> Länge-Byte */ data += size + 1; /* data bewegt sich um weitere size + 1 */ i += size + 1; /* i bewegt sich nur um size + 1 */
} ```
Eine TLV-Option belegt `size + 2` Bytes. `data` wird insgesamt um `size + 2` vorgerückt, `i` jedoch nur um `size + 1`, sodass der Offset bei jeder übersprungenen Option ein Byte hinter der tatsächlichen Leseposition zurückbleibt. Nach dem Überspringen hinreichend vieler Optionen gilt die Prüfung `i < length - 1` weiterhin korrekt, während `data` bereits über das Ende der Nachricht hinauszeigt; der nachfolgende Lesezugriff auf die Typ- und Länge-Bytes erfolgt aus beliebigen Daten, die im Speicher danach folgen.
Ein einzelnes OFFER-Paket mit einer langen Folge überspringbarer Optionen reicht aus:
``` ERROR: AddressSanitizer: heap-buffer-overflow READ of size 1 at 0x61b000000794 thread T5 #0 _nx_dhcp_search_buffer addons/dhcp/nxd_dhcp_client.c:7541 #1 _nx_dhcp_get_option_value addons/dhcp/nxd_dhcp_client.c:7082
0x61b000000794 is located 164 bytes to the right of 1648-byte region ```
Ein wohlgeformtes OFFER-Paket wird über denselben Pfad normal verarbeitet; der Client zeichnet das Angebot auf und wechselt in den Zustand REQUESTING. Der Unterschied liegt also im Layout der Optionen, nicht im Testaufbau (Harness).
Der Lesezugriff erfolgt im DHCP-Client-Thread, während der Client noch nicht konfiguriert ist, sodass er bei jedem Boot-Vorgang für einen böswilligen DHCP-Antwortgeber erreichbar ist. Die gelesenen Werte werden zur Konfiguration der Schnittstelle verwendet, wodurch die offengelegten Bytes beobachtbar werden.
Rücken Sie `i` um `size + 2` vor oder leiten Sie die Grenzprüfung von `data` ab, anstatt einen zweiten Zähler zu führen.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.