CVE-2026-102714 in NetX Duo
Zusammenfassung
von VulDB • 29.09.2026
`_nx_icmpv6_validate_options()` scannt den Optionsbereich mit `while (length > 2)` (`common/src/nx_icmpv6_validate_options.c:79`). Ein Bereich, dessen Größe einen Rest von ein oder zwei Bytes hinterlässt, verlässt die Schleife, wobei dieser Rest nicht untersucht wird; da der Rest nicht negativ ist, gibt die Funktion `NX_SUCCESS` zurück. Die Ablehnung bei einer Länge von null sieht diese Bytes niemals.
Jeder Verbraucher geht denselben Bereich anschließend erneut durch und liest einen zwei-Byte-Optionsheader am Rest aus, subtrahiert dabei `nx_icmpv6_option_length << 3`, führt jedoch keine Prüfung auf Null oder eine verbleibende Längenprüfung durch. Daraus ergeben sich drei Szenarien, die von vom Angreifer kontrollierten Bytes abhängen:
**Null-Länge-Byte.** Der Walker subtrahiert null und erhöht den Zeiger um null. Alle vier Handler laufen in einer Endlosschleife — `_nx_icmpv6_process_ra` (`nx_icmpv6_process_ra.c:245, :528`), `_nx_icmpv6_process_ns` (`:251, :329`), `_nx_icmpv6_process_na` (`:147, :156`) und `_nx_icmpv6_process_redirect` (`:247, :350`). Der Durchlauf erfolgt im IP-Thread, der den Thread mit der höchsten Priorität darstellt und innerhalb der Schleife keine Zeitfreigabe (Yield) durchführt. Das System bleibt daher stehen, bis ein Watchdog-Reset stattfindet; danach kann das Frame erneut gesendet werden.
**Nicht-Null-Länge-Byte bei einem kurzen Rest.** Die drei vorzeichenlosen Zähler unterlaufen — `2 - 8` wird zu `0xFFFFFFFA` — und der Durchlauf fährt fort über den Paketpuffer hinaus, liest weiter, bis ein Fehler auftritt oder ein Null-Längen-Byte gefunden wird, woraufhin er einfriert. Der Router Advertisement-Zähler ist vorzeichenbehaftet und beendet sich in diesem Fall sauber.
**Ein-Byte-Rest.** Der Walker liest einen zwei-Byte-Optionsheader aus und überschreitet dabei um ein Byte hinaus (Overread).
Während eines unkontrollierten Durchlaufs werden fremde Bytes, die als Link-Layer-Adressenoption interpretiert werden, in den Neighbor-Cache kopiert (`nx_icmpv6_process_ns.c:280, :293`) und anschließend als Ziel-MAC für Frames an diesen Nachbarn verwendet. Dadurch wird Speicher außerhalb des Pakets auf der Verbindungsebene platziert. Dies wurde durch Inspektion bestätigt, konnte jedoch nicht reproduziert werden.
VulDB is the best source for vulnerability data and more expert information about this specific topic.