
Recent onderzoek van Claroty’s Team82, de onderzoeksarm van Claroty, heeft drie kritieke kwetsbaarheden blootgelegd in de Hunting Planet WGS-804HPT industriële switch. Deze kwetsbaarheden kunnen een aanvaller in staat stellen om code uit te voeren op een kwetsbaar apparaat.
De ontdekte problemen omvatten een buffer overflow, een integer overflow en een OS command injection fout. Door deze fouten te exploiteren, kan een aanvaller de controle over het apparaat overnemen en verder doordringen in een intern netwerk, wat laterale beweging mogelijk maakt.
De Hunting Planet WGS-804HPT industriële switch is ontworpen voor gebouwen en huisautomatiseringsnetwerken om IoT-apparaten, IP-bewakingscamera's en draadloze LAN-toepassingen te verbinden. Het apparaat is uitgerust met een webservice en een SNMP (Simple Network Management Protocol) beheerinterface. Net als veel ingebedde IoT-apparaten, biedt de switch een beheerinterface die via een webbrowser bediend kan worden. Dit was het onderzoeksgebied van Team82, aangezien deze service de belangrijkste component is die cliënten in staat stelt hun apparaat te beheren en het meest blootgesteld is aan het netwerk.
Team82 heeft deze kwetsbaarheden privé gemeld aan het in Taiwan gevestigde Planet Technology, dat de beveiligingsproblemen heeft aangepakt en gebruikers heeft aangeraden om de firmware van het apparaat bij te werken naar versie 1.305b241111. In een blogpost van vorige week onthulde Tomer Goldschmidt: "We hebben drie kwetsbaarheden ontdekt in de WGS-804HPT industriële switches van Planet Technology die geketend en uitgebuit kunnen worden om afstandsuitvoering van code op het apparaat te verkrijgen."
Emulatie betekent het repliceren van operaties van een andere systeemarchitectuur op een hostmachine door CPU-instructies te simuleren en OS-interacties tussen gast- en hostsystemen te vergemakkelijken. Gereedschappen zoals het open-source, cross-platform QEMU-framework zijn essentieel voor onderzoekers bij het analyseren van kwetsbaarheden. QEMU en vergelijkbare emulators bieden uitstekende omgevingen voor het onderzoeken van software en firmware op kwetsbaarheden en het veilig testen van exploits.
Voor Team82 zijn emulatieplatforms zoals QEMU cruciaal, vooral wanneer toegang tot het daadwerkelijke doelapparaat moeilijk is. Goldschmidt schrijft: "QEMU was essentieel voor ons succes in het vinden van de drie kwetsbaarheden in de industriële switch van Planet Technology. We konden kritieke componenten van het apparaat emuleren, begrijpen waar kwetsbaarheden kunnen worden ontdekt en we hebben PoC-exploits ontwikkeld om de waarschijnlijke impact op het apparaat te demonstreren."
QEMU kan worden gebruikt in twee verschillende modi: gebruikersruimte-emulatie, waarbij een enkele uitvoerbare binnen een specifieke gastarchitectuurcontext wordt geëmuleerd, en systeememulatie, waarbij een heel systeem, inclusief zijn kernel, I/O-periferie en drivers, binnen een specifieke architectuurcontext wordt geëmuleerd.
Systeememulatie met QEMU is iets complexer, maar door de richtlijnen in de documentatie van het gereedschap te volgen, kan men een werkende omgeving opzetten en een werkend geëmuleerd systeem opstarten. Het gebruik van de systeememulatiecapaciteiten kan erg handig zijn bij onderzoek naar de beveiliging van meercriteria-systemen.
Goldschmidt verklaarde dat, aangezien deze toolset rijk is aan functies en opties, "we ons zullen richten op onze meest voorkomende gebruiksgeval voor dit aspect van QEMU. Daarom zullen we een op Debian gebaseerde distributie van het Linux-besturingssysteem opstarten dat MIPS 32-bits architectuur-gebaseerde systemen ondersteunt."
Aangezien Team82 eerder begon met gebruikersruimte-uitvoerbare emulatie met QEMU, is het ook noodzakelijk om de QEMU-systeememulatie-toolsets te installeren. Vervolgens wordt een directory gemaakt om de artefacten te bevatten die nodig zijn om een werkend Linux Debian-systeem voor MIPS-architectuur op te starten. De Linux-kernel is specifiek gekruist gecompileerd voor MIPS-architectuur, terwijl het root-bestandssysteem de Debian-distributie dekt.
"Nu we weten hoe we een eenvoudige gebruikersruimte-applicatie en een volledig besturingssysteem kunnen emuleren, kunnen we doorgaan met ons oorspronkelijke doel om de webservice te emuleren die wordt geleverd door de WGS-804HPT industriële switch voor kwetsbaarheidsonderzoek en exploitontwikkeling", merkt Goldschmidt op. "We hebben al de firmware van het apparaat en we zijn erin geslaagd het bestandssysteem eruit te extraheren. Alles wat nog rest is de omgeving voor emulatie op te zetten."
Hij wees erop dat de echte uitdaging komt wanneer het systeem sterk gekoppelde componenten heeft die met elkaar interageren en afhankelijk zijn van specifieke periferieën die niet toegankelijk zijn. "Deze observatie is cruciaal om te begrijpen dat het emuleren van een ingebed systeem vaak een geleidelijk proces is met proefondervindelijk leren. In ons geval hebben we expres een doel gekozen dat niet veel koppeling heeft aan andere systeemdiensten, wat betekent dat het alleen kan worden geëmuleerd en in een functionele werkende staat kan werken."
De Planet WGS-804HPT industriële switch biedt een webservice met behulp van de boa-webserver. De boa-webservice delegeert vooraf geverifieerde clientverzoeken aan de dispatcher.cgi. Dit is een eindpunt CGI-interface waarin we geïnteresseerd zijn om te analyseren en kwetsbaarheden te vinden, omdat het blootgesteld en toegankelijk is voor niet-geverifieerde clients, waardoor het geschikt is als beveiligingsaanvalsoppervlak.
De volgende stap in het onderzoek van Team82 was het testen van de ontdekte kwetsbaarheid en het creëren van een werkende PoC om de exploiteerbaarheid en de impact ervan te demonstreren. "Om onze werkende PoC te ontwikkelen, zullen we onze kennis van QEMU-gebruikersruimteprogramma-emulatie gebruiken, beginnend met het emuleren van de hele boa-webserver en het verifiëren dat we in staat zijn om ermee te interageren," zei Goldschmidt.
"Dit zal ons in staat stellen de webservice te testen wanneer we een werkende exploit hebben," volgens Goldschmidt. "Maar voor onze exploitontwikkeling moeten we in staat zijn om het dispatcher[dot]cgi CGI-proces te debuggen. Daarom zullen we eigenlijk beginnen met het uitvoeren van het dispatcher.cgi-programma met een remote debugger die eraan is gekoppeld. Dit is mogelijk omdat QEMU de optie biedt om een gdb-server listener interface te initialiseren om een geëmuleerde applicatie te debuggen."
Hij voegde eraan toe dat "met de mogelijkheid om ons dispatcher.cgi-programma te debuggen, kunnen we beginnen met het ontwikkelen van onze exploit. Een van de eerste dingen die je moet doen bij het ontwikkelen van onze exploitatietechniek is het controleren van de geheugenbeveiligingsmitigatie die is toegepast op onze doeluitvoerbare."
In dit geval zei Goldschmidt: "We zijn gelukkig dat ons doel geen beperkende beveiligingsmitigaties op de uitvoerbare heeft. Daarom hebben we ons vertrouwd op het feit dat de uitvoerbare is gecompileerd zonder de NX-bit ingeschakeld, wat betekent dat de stack ook uitvoerbaar is. Dit betekent dat het mogelijk is om een shellcode in te sluiten in ons verzoekcookie en later naar de stack te springen waar onze payload shellcode is opgeslagen."
"Onze finale shellcode riep de execve syscall aan met gecontroleerde parameters die ook in onze payload op de stack werden gevonden en verwezen naar met behulp van het $sp-register als basis om vanaf te verplaatsen."
Goldschmidt benadrukte dat door "deze kwetsbaarheid te exploiteren met ons Python PoC-script, we in staat waren om de codeflow te controleren en code-uitvoering te bereiken. We leidden de code vervolgens om naar onze gecontroleerde shellcode en verkregen de mogelijkheid om afstands-OS-commando's uit te voeren."