Bankieren met de mobiel bij de Rabo is niet zonder risico. De mobiele site geeft hackers namelijk kinderlijk eenvoudig de vijfcijferige inlogcodes van klanten prijs. De bank heeft na melding van Webwereld het lek gedicht.

Rabosite verraadt inlogcode

Het probleem zit in de knullige afhandeling van foute inlogpogingen. Een hacker kan met een zogeheten brute force-aanval de inlogcode achterhalen.

Na drie foute pogingen is inloggen weliswaar niet meer mogelijk, maar dat houdt de aanvaller niet tegen. Bij iedere verdere poging met een verkeerde inlogcode geeft de site steeds dezelfde foutmelding, maar als de juiste inlogcombinatie wordt ingevoerd geeft de Rabobank ineens een andere foutmelding terug. Zo weet de hacker meteen dat dat de juiste code is.

Proof of concept

Het lek werd ontdekt door de 24-jarige student Sander Akkerman, die een proof of concept (zie onderaan) schreef. Webwereld heeft het script succesvol getest.

Akkerman: “Bij een verkeerde poging zegt het systeem dat de combinatie van rekeningnummer en code niet klopt. Als de code geblokkeerd is, meldt het ‘Deze code is geblokkeerd. Neem contact op met de Rabobank.’” Op deze manier is het snel duidelijk wat de juiste code is. Vervolgens hoeft de aanvaller alleen maar te wachten tot de code gedeblokkeerd wordt. Volgens Akkerman zet de klantenservice standaard dezelfde code terug.

Ideaal voor phishers

Eenmaal ingelogd kan de aanvaller de saldogegevens van de klant inzien. Ook is het mogelijk geld over te maken tussen eigen rekeningen en naar bekenden. Voor overschrijvingen naar onbekende rekeningen is de Random Reader nodig. Een rekening leegplunderen kan dus niet, maar het actuele saldo alleen al is voor cybercriminelen die aan telefoonphishing doen zeer waardevolle informatie. Dergelijke oplichting via social engineering is nog zeldzaam, maar zeer effectief.

Alleen de mobiele versie maakt gebruik van de vijfcijferige inlogcode. Bij de normale website zijn meer beveiligingen ingebouwd. Daar moet de klant ook het pasnummer invoeren en er kan alleen worden ingelogd met gebruik van een code die gegenereerd wordt door de Random Reader.

Basale fout

Volgens beveilingsdeskundige Frank van Vliet van Certified Secure had de bank dit probleem makkelijk kunnen voorkomen. “Dit probleem staat precies zo omschreven op onze basischecklist voor webapplicaties. Ze hadden dit makkelijk vooraf af kunnen vinken.” Vooral het feit dat de applicatie niet controleert op brute forcepogingen is dus een kwalijke zaak.

Naar eigen zeggen kostte het Sander Akkerman zo’n drie minuten om tweehonderd pogingen te doen. “Maar als je meerdere computers tot je beschikking hebt, of een heel botnet, heb je zo’n code zomaar te pakken. Dan is een vijfcijferige code echt een peulenschil.” Bij een code van vijf cijfers zijn maar 100.000 combinaties mogelijk.

Sander Akkerman schreef een testcode in PHP om het lek te bewijzen. Hij had slechts twee uur nodig om de code te maken. Doordat het script zich voordoet als Safari op de iPhone doet het zijn verzoeken naar de mobiele server. Met een simpele while-loop kan vervolgens een onbeperkt aantal verzoeken worden gedaan.

Opgelost

Nadat Webwereld de fout bij de Rabobank had gemeld, heeft de bank het probleem opgelost. De melding dat de code is geblokkeerd is verwijderd en voortaan krijgen aanvallers bij iedere poging de melding dat de code niet klopt.

Nu geeft de applicatie dus zowel bij foute als bij juiste codes dezelfde foutmelding. Daardoor is het niet langer mogelijk om de juiste code af te lezen uit de resultaten van een brute forcepoging, maar die pogingen worden nog steeds niet geblokkeerd. Het is niet duidelijk of dit slechts een tijdelijk lapmiddel is of de definitieve oplossing van de bank.

Rabo proof of concept