Afgelopen donderdag stond er een mooi artikel van Maurits Martijn op de Correspondent. Over hoe je simpelweg gebruikers van openbare draadloze netwerken kunt hacken. En er zo achter kunt komen welke websites ze bezoeken, met welke andere draadloze netwerken ze eerder contact hebben gezocht (en dus waar ze eerder zijn geweest), en zelfs hun wachtwoorden kunt achterhalen. Het erge is: ik weet dit eigenlijk al jaren, maar had het me de ernst daarvan nooit echt gerealiseerd. (Soms zit je zo dicht op de materie, dat je essentie ervan even niet meer ziet.) En het is eerlijk gezegd behoorlijk ernstig…

Wat is er aan de hand

Even voor de duidelijkheid een korte beschrijving van wat er aan de hand is. (Maurits heeft in het artikel met opzet wat informatie weggelaten, maar daardoor begrijpen – afgaande op de reacties – sommige mensen het niet.) Samen met Wouter Slotboom heeft Maurits een aantal gebruikers van een openbaar draadloos (WiFi) netwerk gehackt. Dit kan op een tweetal verschillend manieren gedaan worden.

wifi-1

  1. Door zelf een WiFi netwerk aan te bieden met dezelfde naam als een veelgebruikt openbaar netwerk (KPN, t-mobile) waar de laptops en tablets van gebruikers automatisch verbinding mee maken. Je kunt ook een naam kiezen die je op die plek verwacht. Deze methode wordt in het artikel beschreven.
  2. Wat ook kan is als aanvaller een verbinding maken met het ‘echte’ draadloze netwerk, en daar (door zogenaamde ARP spoofing) het verkeer via de laptop van de hacker te leiden. In dit geval maakt de laptop van het slachtoffer ook verbinding met het ‘echte’ WiFi netwerk. Weggooien van WiFi netwerk verbindingen, of nooit standaard een verbinding maken met zo’n netwerk beschermt niet tegen deze variant.

Belangrijk om te weten is dat voor deze aanvallen geen speciale apparatuur nodig is (het lukt prima met een laptop of smartphone met daarop de juiste software geïnstalleerd), en dat het geen donder uitmaakt of het openbare draadloze netwerk al dan niet met een wachtwoord is beveiligd. Ik vraag me overigens af of een vergelijkbare aanval ook mogelijk is op WiFi guest netwerken die veel mensen thuis aanbieden, soms als standaard onderdeel van hun Internet abonnement, zoals bijvoorbeeld Ziggo dat aanbiedt. (Lijkt me een mooie opdracht om dat eens grondig uit te zoeken.) Als dat zo is dan ben je zelfs thuis niet meer veilig.HTTPS (ofwel SSL ofwel TLS; alle drie de termen betekenen min of meer hetzelfde) zou in theorie tegen een dergelijke man-in-the-middle aanval moeten beschermen. Het probleem is dat dit in de praktijk absoluut niet werkt. (En dat heeft Maurits met dit artikel even keihard duidelijk gemaakt, en dat was nou precies wat ik me even niet in al zijn glorieuze omvang gerealiseerd had.) In essentie bestaat de bescherming er uit dat de browser met behulp van een zogenaamd certificaat de identiteit van de website verifieert. Als de browser vindt dat het klopt, laat het een slotje zien, en wordt een veilige verbinding opgezet. En als het niet klopt dan volgt een duidelijke foutmelding. Om dit te laten werken moet de browser wel een HTTPS verbinding opzetten met de site. En geen gewone, onbeveiligde, HTTP verbinding. In de praktijk is de browser daar eenvoudig toe te verleiden. En dat is dan ook precies wat de hacks van Maurits en Wouter doen.

wifi-2

Ze laten de browser van het slachtoffer een onbeveiligde verbinding met de laptop van de hacker maken, alsof dit de webserver van de eigenlijke website is. De laptop zet vervolgens een veilige verbinding met de echte website op, en stuurt de data van de browser van het slachtoffer door naar de webserver, en omgekeerd. Omdat de verbinding tussen de browser en de laptop van de hacker onbeveiligd is, kan de laatste alles meelezen. Het is dus, voor de duidelijkheid, niet nodig om een vals certificaat te maken, of om encryptie te kraken.

Voor de duidelijkheid: in theorie zijn smartphone of tablet apps minder gevoelig voor dit soort aanvallen, omdat deze apps zelf direct een veilige verbinding op kunnen zetten met de servers die ze gebruiken, als ze tenminste op de juiste manier geprogrammeerd zijn. Of dit in de praktijk ook zo is, moet nog maar blijken…

Wat is hier tegen te doen? Geen openbaar WiFi netwerk gebruiken, in ieder geval niet voor gevoelige activiteiten of voor sites waar je moet inloggen. Je kunt ook, zoals het artikel suggereert, een VPN opzetten. Maar ik vraag me af of die niet op een vergelijkbare manier in de praktijk te omzeilen zijn… (Lijkt me ook een mooie afstudeer opdracht 😉 Voor die mensen die niet telkens een VPN op willen zetten, of die gewoon zeker willen weten dat hun verbinding echt end-to-end versleuteld is (en dat niet iemand ergens op de Internet backbone een vergelijkbare hack uitvoert), zijn er ook nog de volgende oplossingen.

  • Gebruik de HTTPS Everywhere browser plugin. Die zorgt ervoor dat je browser in het vervolg altijd HTTPS gebruikt voor elke website die HTTPS ondersteund, en nooit meer verleid kan worden om het onveilige HTTP te gebruiken.
  • De meeste recente versies van webbrowsers ondersteunen Strict Transport Security (STS). STS zorgt ervoor dat de browser onthoudt dat een website HTTPS ondersteunt, en zal vervolgens nooit meer een onveilige HTTP verbinding maken met deze website. Om de browser dit te vertellen moet de website echter een speciaal bericht in de header van de pagina die de browser bezoekt terugsturen. Lang niet alle websites doen dat. De Force TLS Firefox plugin laat zien voor welke sites Firefox automatisch overschakelt op HTTPS, en laat de gebruiker zelf eigen websites aan die lijst toevoegen.

Al met al weer een heel gedoe, en je moet maar hopen dat voor alle belangrijke sites die jij bezoekt die plugins inderdaad voor een veilige verbinding zorgen.

Wat is het probleem?

Ik leef mee met Evert Starink (in de comments van het Correspondent artikel), die terecht aangeeft dit niet te kunnen (en ook niet te willen) begrijpen. Want als het advies is: gebruik geen openbaar WiFi netwerk, dan is eigenlijk het advies: gebruik alleen thuis Internet. Dat is natuurlijk geen optie.

En daarmee komen we op de kern van probleem dat het artikel eigenlijk bloot legt. In de praktijk is WiFi (en eigenlijk het Internet) dus verschrikkelijk onveilig. En ondertussen doen we er wel allemaal verschrikkelijk veel belangrijke, risicovolle, waardevolle, dingen mee. We internetbankieren, we bezoeken dating sites, we kopen van alles en nog wat in web winkels, we werken thuis of lezen onze email nog even op het terras.

Alleen de super-paranoïde web surfer zal het misschien lukken om dit allemaal voldoende veilig te doen. Maar de gemiddelde gebruiker weet niet beter, en is (bijvoorbeeld) niet zomaar in staat om zijn email programma zo in te stellen dat zijn email alleen via een beveiligde verbinding wordt opgehaald en verzonden. De standaard instellingen van de meeste programma’s en apps, en van de meeste web diensten, zijn niet veilig genoeg.

Voor de veiligheid wordt teveel oplettendheid van de gebruiker verwacht. Er moet hem bijvoorbeeld iets opvallen (afwezigheid van positieve feedback zoals een slotje, en dan zelfs goed opletten of het wel een ‘echt’ slotje is). Als hij een waarschuwing krijgt moet hij begrijpen wat er staat (meestal godsonmogelijk) en moet hij de juiste beslissing nemen. Om het zekere voor het onzekere te nemen is het verstandig de transactie af te breken. Maar dat kan in de praktijk wel eens heel erg lastig of verveld zijn (als je echt die informatie van die website nodig hebt, bijvoorbeeld, of als je echt die aankoop op dit moment moet doen).

De gebruiker wordt geacht een expert te zijn. Dat was misschien nog enigzins begrijpelijk toen het Internet bedacht werd. Maar dat is nu echt niet meer realistisch. Sterker nog: het is een roekeloze aanname van systeem ontwikkelaars, die mensen in de praktijk met levensgrote problemen opzadelt.

Het is mij al langer een doorn in het oog dat, als het om ICT gaat, consumenten veel minder rechten hebben dan als ze bijvoorbeeld een auto kopen. Op een auto krijg je garantie. Op software niet. Als een auto alleen maar veilig te besturen zou zijn door een Formule 1 coureur, dan zou die auto niet worden toegelaten op het Nederlandse wegennet.

Nou weet ik we dat er goede argumenten zijn om software niet net zo te behandelen als bijvoorbeeld auto’s (zo’n analogie gaat natuurlijk snel mank), maar de gevolgen worden nu wel heel eenzijdig op de consument en de samenleving als geheel afgewenteld. Ik heb hier ook geen pasklare antwoorden op. Maar ik vind wel dat hier wat fundamenteler en breder over moet worden nagedacht.