IXON is een bouwer van Industrial IoT hardware, en specifiek Secure Remote Access op netwerk niveau.Hiervoor wordt zowel de hardware als de software zelf ontwikkeld, met als paradepaardje de IXrouter.We kregen de IXrouter3 in huis en voerden een aantal diepgaande tests uit met het oog op security.
Het ontvangen toestel is de IXrouter3 met firmware 3.4, de versie met enkel een Ethernet uplink. Hierbij werden een viertal onderdelen nader bekeken:
De routers van IXON zijn zogenaamde “Cloud” routers. Dat kan veel betekenen, maar betekent in dit geval dat ze puur via het internet werken.
Dit is een keuze die veel voordelen biedt naar onderhoudbaarheid en veiligheid, maar het grootste nadeel is natuurlijk dat de IXrouters compleet onbruikbaar zijn op locaties waar nooit internet toegang mogelijk of wenselijk is. Configuratie is enkel mogelijk m.b.v. een internet verbinding, waarbij enkel een uitgaande HTTPS (TCP/443) verbinding volstaat.
Naast remote access kan de router ook uitgebreide vormen van monitoring aan: ophalen en opslaan van data (Modbus, OPC UA, S7comm en EtherNet/IP), diagnostics en doorsturen van diezelfde data. Zelfs het grafisch weergeven van die datapunten behoort tot de mogelijkheden.
Dit betekent meteen ook dat de router, met alles errond, veel belangrijke en private gegevens bevat en dus ook goed beveiligd moet worden. Zelfs los van het feit dat deze router ook dient als toegangsweg naar het bedrijfsnetwerk of toch een stuk daarvan.
De IXON IXrouter
De hardware is volledig door IXON zelf ontwikkeld, voor de software wordt echter beroep gedaan op het gekende open source pakket OpenWrt Chaos Calmer 15.05.1, gebaseerd op OpenBSD. Hierboven draait dan de IXagent die alle communicatie met de dataservices van IXON verzorgt en uiteraard de router instelt.
Alles start bij de webpagina connect.ixon.co waar desgewenst een gratis account kan worden aangemaakt. Via deze pagina worden configuratiebestanden aangemaakt voor de initiële configuratie van de router en dienen alle verdere aanpassingen aan de routerinstellingen te worden uitgevoerd.
De bedoeling is dat een nieuwe gebruiker eerst wordt gekoppeld aan een bepaald bedrijf en dat IXON toestellen dan vervolgens ook gekoppeld worden aan bedrijven. Op die manier is het mogelijk om extra gebruikers uit te nodigen om deel uit te maken van een bedrijf. Dit kunnen ook bijv. installateurs, technici of medewerkers zijn.
Op deze website, die duidelijk grafische gelijkenissen vertoont met de Google Web Apps, zit dus alle beheer: routers, gebruikers, bedrijven, configuraties, uitnodigingen, wachtwoorden, certificaten …
Het is dus zeer belangrijk dat dit portaal veilig wordt opgebouwd, het is namelijk het meest zichtbare gedeelte bij het gebruik van de IXON toestellen.
De site zelf wordt gehost in Amsterdam, net zoals alle andere (web) services van IXON. Een belangrijk detail indien hier bepaalde bedrijfsgegevens worden uitgewisseld met het oog op Intellectual Property.
Connect.ixon.co werd gecontroleerd op zaken als SQL Injection, Cross-Site-Scripting, Cross-Site-Request-Forgery en diverse andere, typische web kwetsbaarheden en daarbij werd niks ernstigs gevonden. Er wordt met voldoende lange en willekeurige authenticatie headers en tokens gewerkt.
Naar performantie toe is er een nadeel doordat de website code volledig in de browser draait en dat hiervoor eerst één code bestand (js-bestand) van 4.6Megabyte moet worden gedownload bij elk bezoek van de website. Dat kan aandikken bij veel bezoeken via bijvoorbeeld 3G of Edge.
De enige gevonden fout was dat het sessie token bij het manueel uitloggen (klikken op Log Out) niet wordt gewist op de server. Hierdoor kan iemand, die eerst het verkeer al moest onderscheppen, toch nog inloggen. Vooral een risico bij gebruik van de website op publieke computers.
⇒ Dit is intussen, na rapportering, opgelost.
Het is ook sowieso aanbevolen om de aanwezige Two Factor Authentication optie in te schakelen.
Zoals vermeld is de IXrouter een “cloud” router en kan deze énkel en alleen geconfigureerd worden via internet. Hiervoor maakt de router een verbinding via HTTPS en OpenVPN tunnels met de services van IXON.
Bij het uitpakken van de router en na aansluiten in ons netwerk van demokoffers werd dan ook gecontroleerd of enige vorm van lokale configuratie mogelijk was. Volgende standaard instellingen werden gedetecteerd:
Die keuze vormt echter een uitdaging voor de allereerste setup: hoe configureer je een router, waar je lokaal niks op kunt instellen, om überhaupt te kunnen verbinden met de buitenwereld? Zeker als er moet gebruik gemaakt worden van Wi-Fi of 3G is toch een eerste vorm van configuratie nodig?
Via de reeds vermelde website connect.ixon.co is het mogelijk om een initieel configuratiebestand aan te maken, dat dan onder de naam “ixrouter.conf” (en énkel die naam) op een FAT32 USB stick moet worden geplaatst. Bij het inpluggen van die stick op de router, leest deze dan de configuratie in om vervolgens zichzelf van een initiële configuratie te voorzien.
Dit werkt niet als de router reeds een configuratie bevat.
Een zeer inventieve oplossing, maar met een paar security nadelen:
Dit zijn uiteraard secundaire issues, die slechts in randgevallen een rol spelen. Verder werd uiteraard bekeken hoe de router de verbinding opbouwt met de IXON, zowel bij de initiële configuratie als erna. Er wordt ten allen tijde enkel via HTTPS verbonden, waarbij de certificaten worden gecontroleerd. Ook valt op dat, hoewel het configuratiebestand een URL bevat, het toestel deze URL negeert en dus énkel verbinding maakt met één hard gecodeerde URL. Dit verkleint ook de kans op misbruiken en veiligheidsissues, weliswaar ten koste van flexibiliteit en High Availability.
Links, de standaard opbouw met standaard certificaten,
rechts met aangepaste certificaten waarbij de router bewust de communicatie stopt.
Elke IXrouter heeft (minstens) drie interfaces, waarbij met ‘WAN’ het gewone bedrijfsnetwerk wordt bedoeld. Al kan dit uiteraard ook rechtstreeks het internet zijn.
Zelfs na de initiële configuratie van de router m.b.v. de USB stick wijzigt er in eerste instantie niks aan de functionaliteit van de router: internet of zelfs toegang van LAN tot WAN werkt nog steeds niet. Er zijn een aantal basis instellingen mogelijk:
VPN naar LAN verkeer is geen Firewall instelling, maar is standaard echter wel mogelijk zonder restricties. Dit is echter normaal gedrag; als iemand via VPN een verbinding opbouwt dan verwacht deze uiteraard toegang tot het LAN netwerk. Al kan het nuttig zijn om dit te kunnen configureren (eventueel per gebruiker).
Daarnaast is echter ook alle verkeer van LAN naar VPN mogelijk, m.a.w. een toestel aan de LAN zijde kan open en vrij communiceren met eender welke VPN client. Hoewel nuttig voor een aantal opstellingen is dit niet altijd nodig of wenselijk en kan het aanbevolen worden dit configureerbaar te maken.
Het is niet ondenkbaar dat een individu aanwezig is op het LAN netwerk van de router en bij het security scannen terecht komt op het VPN netwerk om er zodoende toegang te krijgen tot toestellen die, weliswaar bewust, via VPN verbonden zijn.
VPN naar WAN (dus de rest van het bedrijfsnetwerk) is niet mogelijk bij deze versie van de software. Zelfs niet indien nodig of gewenst.
De VPN tunnel wordt opgebouwd m.b.v. de OpenVPN software, die mee geïnstalleerd wordt indien men de IXclient download en installeert van de connect.ixon.co website. De IXclient wordt aangesproken via een eigen URI, startend met ixclient:// wat een vrij gangbare manier van werken is.
Deze URI ziet er als volgt uit (fictief voorbeeld):
ixclient://access-token/diuF38sJrSceZdTUQqOF3ncXH3ijk0MK/command/connect/controller/111d9c3b-ce66-463c-b471-c3e21afbdd47/reference/1ddf9845-986a-4909-fb54-449a82c5c6b9/agent/OWiJIJ101kZP0u/company/3688-2654-8820-9876-1234/
Naast deze URI is echter geen extra authenticatie meer nodig voor het opbouwen van de VPN verbinding waardoor deze ook als confidentieel moet worden beschouwd. Gelukkig wordt ook deze uitgewisseld via HTTPS en laat deze verder geen rechtstreekse sporen na.
Een spoor dat echter wel te vinden is op de harde schijf is het opgebouwde OpenVPN configuratie bestand (ook wel ovpn bestand genoemd). Na elke VPN verbinding wordt een dergelijk bestand aangemaakt in de Windows Temp folder (C:\Windows\Temp), waardoor iemand op deze locatie een lijst van bestanden kan terugvinden die overeenkomen met de VPN verbindingen.
Daarenboven is het mogelijk om deze bestanden te kopiëren en te hernoemen naar ‘vpn.ovpn’ om vervolgens m.b.v. de gratis OpenVPN software manueel en zonder extra authenticatie, een VPN verbinding op te bouwen met het toestel. Door daarna ook een manuele route toe te voegen in het besturingssysteem is vervolgens toegang mogelijk tot elk toestel aan de LAN zijde van de router.
⇒ Dit is intussen, na rapportering, opgelost.
Elk bestand van 9KB komt overeen met een OpenVPN configuratie die kan hergebruikt worden.
Tot slot werd ook de hardware van naderbij bekeken, zeker doordat deze door IXON werd ontworpen.
De binnenkant van de IXrouter 3
Een aantal componenten zijn meteen detecteerbaar: de 4 LAN poorten zijn in feite één switch. We zien een aantal open ruimtes die vermoedelijk gereserveerd zijn voor de Wi-Fi chip, Wi-Fi antenne (centraal en naast de stroom aansluiting) en we zien ook reservaties voor het SIM kaart slot en 3G antenne (boven de Wi-Fi antenne).
Aan de andere kant zien we ook een (lege!) Micro SD kaart, deze dient enkel om monitoring en diagnostische data tijdelijk op te slaan bij verlies van de internet verbinding.
De SoC is een MediaTek MT7621AT CPU, met een Nanya NT5CC128M16IP-DI DRAM chip.
De belangrijkste component in dit onderzoek is uiteraard de Winbond 25Q128FVSG Flash EEPROM chip. Deze is 16MB groot en bevat alle data van het toestel. Het is niet geëncrypteerd en kan uitgelezen worden via SPI/QPI.
Hieruit is opgevallen dat er zoveel mogelijk is overgenomen van de standaard OpenWRT MIPS installatie, enkel de toevoeging van een paar services en de IXagent vallen op. Uit de hashes blijkt dat het root wachtwoord voldoende lang en dus veilig is en na navraag bleek dit ook te verschillen op elk toestel.
Security is altijd een gevecht met bruikbaarheid: het meest veilige toestel is onbruikbaar en het meest bruikbare toestel is onveilig.
Out of the box en zonder configuratie is de IXrouter letterlijk onbruikbaar en dit is by design. Hieruit valt meteen op dat het van de grond af aan is ontwikkeld met het oog op veiligheid. Iets wat zelden terug komt in de Industriële wereld.
Op een paar details na, staat of valt de security van dit toestel uiteraard met de manier van omgang door de eindgebruiker. Maar ook dit is één van de vuistregels van security. Als cloud router die dus te allen tijde verbonden is met het internet is dit alvast een goede keuze.
Over de auteur