SentinelLabs ontdekte een ernstige kwetsbaarheid in NetUSB. De module is in de stuursoftware van miljoenen routers verwerkt.

NetUSB maakt het mogelijk om USB-apparaten die aangesloten zijn op routers aan te sturen met andere netwerkapparaten. Neem een printer. Sluit je de printer via USB op een router aan, dan stelt NetUSB een desktop (of ander verbonden apparaat) in staat om de printer aan te sturen. Onder andere Netgear, TP-Link, D-Link en Western Digital hebben NetUSB in de stuursoftware van hun modems en routers gebruikt. De module komt in miljoenen routers voor.

Max van Amerongen, securityonderzoeker bij SentinelLabs, vond een kwetsbaarheid in NetUSB. De module is vatbaar voor integer overflows en remote code execution (RCE). SentinelLabs kaartte het probleem maanden terug bij alle grote vendoren aan. Vandaag maakt de organisatie de methode bekend.

Hoe werkt het?

NetUSB werkt als tolk van de stuursoftware van twee apparaten. Het voert zijn taken uit vanaf het moment dat een client (bijvoorbeeld een desktop) probeert te verbinden met een USB-apparaat. De apparaten wissen enkele verificatiegegevens uit, waarna NetUSB een codeloop start. De loop neemt een command van het ene apparaat en vertaalt de command naar het andere apparaat. Op deze manier kan het USB-functionaliteit via het netwerk aanbieden.

Stel dat je een printopdracht vanaf een desktop naar een op een router aangesloten printer stuurt. De opdracht bestaat in principe uit een reeks commands, genoteerd in hexadecimalen. De code van NetUSB vertaalt elke command naar een format dat leesbaar is voor de printer.

Om de uiteindelijke printopdracht uit te kunnen voeren, moet er voldoende werkgeheugen in de printer beschikbaar zijn. Daarom creëert NetUSB een buffer. Dat doet de applicatie door altijd 0x11 (hexadecimaal) aan een command toe te voegen. Die stapt veroorzaakt de kwetsbaarheid. Is de aanvankelijke command groter dan de maximale specificatie van het protocol, dan creëert de buffer een integer overflow.

Loop ik risico?

Hoewel het mogelijk is om de kwetsbaarheid te misbruiken, is de kans op grootschalig misbruik klein. De integer overflow is beperkt tot een klein deel van de code van NetUSB. Dat deel kan gemanipuleerd worden, maar hoe dat uiteindelijk tot het misbruik van een device moet leiden, kan of wil SentinelLabs niet met zekerheid zeggen.

Bovendien vermindert het gebruik van NetUSB naarmate printers moderniseren. Nieuwere modellen hebben directe netwerkverbindingsopties, wat USB-aansluiting op routers overbodig maakt. NetUSB wordt simpelweg minder vaak gebruikt, wat de ernst van het probleem vermindert.

Desalniettemin zag SentinelLabs aanleiding om aan de bel te trekken. Integer overflows zijn naar wens op te roepen. Op dit moment wordt de software door miljoenen apparaten gebruikt. Nog belangrijker is het feit dat een enkele ingreep de kwetsbaarheid kan oplossen.

De oplossing

Alleen gigantische, onrealistisch grote getallen veroorzaken de integer overflow. SentinelLabs adviseerde de ontwikkelaar van NetUSB (KCodes) om commands met onrealistisch grote getallen te weigeren. Dat is zo simpel als het toevoegen van een enkele coderegel met een voorwaarde: if(user_supplied_size + 0x11 < 0x11) return. KCodes gaf gehoor. Twee weken na het bericht van SentinelLabs ontwikkelde de organisatie een patch.

Op 19 november 2021 verstuurde KCodes de patch naar alle vendoren die NetUSB gebruiken. Netgear, een van de vendoren, verwerkte de patch op 14 december 2021. De organisatie publiceerde een firmware-update voor alle getroffen devices: de D7800 (uit 2015), R6400v2 (2016) en R6700v3 (2019). Ook TP-Link verhielp het probleem met patches voor de C7, C1200, C5400X, MR3420, WR842N en VR2800.

Gebruik je apparatuur van Netgear of TP-Link, dan raden we een directe firmware-update aan. Gebruik je apparatuur van de andere vendoren, dan ligt de oplossing minder voor de hand. We vroegen aan D-Link en Western Digital of er een patch beschikbaar is of ontwikkeld wordt. Western Digital geeft aan dat men hier geen uitspraken over doet. Op zich snappen we dat ook wel, omdat WD nu niet bepaald veel focus heeft op routers. De enige routers die wij ons kunnen herinneren zijn inmiddels zo’n 10 jaar geleden op de markt gekomen. D-Link laat naar aanleiding van onze vraag om een reactie het volgende weten (in het Engels):

“On January 11, 2022 a security researcher disclosed that potential security attacks could be performed against K-Codes’ NetUSB kernel module when devices make it available over the internet. D-Link is currently investigating this reported security issue, and will provide further updates as soon as we have more information. D-Link takes the issue of network security and user privacy very seriously. We have a dedicated task force and product management team on call to address evolving security issues and implement appropriate security measures.”

Tip: SentinelOne zet kwetsbaarheden in Oracle VirtualBox uiteen