Een tijdje geleden is mij de mobiele applicatie voor internetbankieren van de ING opgevallen. Door de combinatie van de gevoeligheid van mobiele platforms (In dit geval Android, maar het issue is niet Android specifiek.) en het ontbreken van TAN-codes als tweede factor voor de authenticatie zag ik een aanvalsvector waarvoor ik niet zag hoe daar tegen verdedigd zou worden. De lek zou ernstig zijn omdat er zonder je medeweten saldo van je rekening afgeschreven zou kunnen worden en dat op grote schaal bij gebruikers van deze mobiele app. In mijn onderzoek heb ik delen van de app reverse engineered en veel geleerd over de communicatie van de applicatie met de ING servers. Op een gegeven moment ben ik me gaan realiseren dat als ik daadwerkelijk de zwakte overtuigend wilde demonstreren ik de wet zou moeten overtreden. Dat gaat mij een stap te ver. Door mijn onderzoek heb ik ook wat geleerd over de afwegingen die de ING heeft gemaakt en wat ik van de ING wil is dat ze duidelijk communiceren wie verantwoordelijk is als er iets misgaat. Het technische verhaal kan ik zonder moeilijke details te gebruiken uitleggen. Het ouderwetse internetbankieren bij de ING werkt via de browser. Als je een virus op je computer zou hebben, zou dat virus betalingen kunnen aanpassen, wachtwoorden afluisteren, etc. Om dat te voorkomen zijn TAN-codes bedacht. Op het moment dat je een betaling uitvoert krijg je een smsje met details over de betaling die je op dat moment wilt doen met een eenmalig te gebruiken TAN-code. Die code moet je vervolgens invoeren om de betaling af te ronden. Daarmee bewijs je dat je niet alleen kan inloggen onder de account van de bezitter van de rekening, maar dat je ook controle hebt over zijn of haar telefoon. Omdat telefoons meestal onafhankelijk zijn van de desktop computers van een persoon maak je de drempel om in te breken in de bankrekening dusdanig veel hoger dat deze vorm van beveiliging erg effectief is. Tot zover lijkt alles in orde.
De komst van moderne smartphones verandert echter een hoop. Mensen willen alles kunnen met hun smartphone en banken zijn bijna gedwongen om ook mobiele betalingen mogelijk te maken. Logisch, want het is erg handig om overal toegang te hebben tot je bankrekening. Het probleem komt echter als je het oude security model gaat vertalen naar mobiele telefoons. Stel dat ik wil internetbankieren op mijn mobiele telefoon krijg ik opeens de TAN codes binnen op hetzelfde apparaat als waarmee ik de transacties afhandel. Het voordeel van TAN-codes is daarmee volledig verdwenen. De ING heeft dit beseft en heeft dan ook het gebruik van TAN-codes afgeschaft voor de mobiele variant van het internetbankieren. Om misbruik bij diefstal en verlies van de telefoon te voorkomen is er een pincode nodig om de applicatie te ontgrendelen. Dat is gezien het scenario een redelijke beveiliging. Maar wat als je een virus zou hebben op je telefoon? Het virus zou dan de applicatie aan kunnen passen om alle betalingen aan te passen zodat bijvoorbeeld het geld naar de rekening van de schrijver van het virus gaat. Of het virus kan zorgen dat er op de achtergrond kleine betalingen gedaan worden die niet opgemerkt worden door de rekeninghouder. Het grootste obstakel is het virus op de telefoons krijgen. In deze blogpost zal ik volstaan met de melding dat bijna geen enkele Android telefoon langdurig beveiligingsupdates krijgt, er geen effectieve antivirus is en mensen zich vaak niet beseffen dat er iets fout kan gaan aan de beveiliging van mobiele telefoons.
Toen ik deze vermoedens bij de ING heb gemeld heeft een medewerker van de ING telefonisch contact met mij opgenomen om mij gerust te stellen. Op de vraag of deze lek te misbruiken is kreeg ik als antwoord dat niets 100% veilig is, maar dat ze enkele maatregels hebben getroffen om misbruik te voorkomen en dat ze heel goed opletten of er toch misbruik voorkomt. En als het dan toch misgaat zouden klanten hun geld terugkrijgen.
Dat de ING weet dat hun applicatie dit beveiligingsprobleem heeft verbaast me niets. Dat ze er toch niets aan lijken te doen kan ik me ook voorstellen. Als ze de applicatie namelijk echt goed willen beveiligen moeten ze het waarschijnlijk zo aanpassen dat het gebruikersgemak dusdanig slechter word dat niemand er meer gebruik van zal maken. Ik heb echter wel een probleem met hoe de ING omgaat met de vraag wie verantwoordelijk is voor de beveiliging. De ING kan namelijk niet verantwoordelijk zijn voor de beveiliging van mijn telefoon omdat ze buiten hun eigen applicatie niets kunnen beveiligen (en dat is niet genoeg). Daarom zou ik zeggen dat ik zelf verantwoordelijk ben voor de beveiliging van mijn eigen telefoon. Maar als ik zelf verantwoordelijk ben wil ik weten welke risico’s ik loop zodat ik minimaal een afweging kan maken van de risico’s en mogenlijk zelfs stappen kan nemen om mijn telefoon beter te beveiligen. Maar de ING wil mij niet vertellen welke risico’s ik loop, zelfs niet als ik specifiek naar bepaalde lekken vraag. De gebruikersvoorwaarden zeggen ook niets over de wie er verantwoordelijk is.
Aan de ING heb ik dan ook een paar concrete vragen:
- Wie is er verantwoordelijk als door beveiligingslekken in hun internetbankieren app geld gestolen word?
- Mag ik concreet aantonen dat de applicatie slecht beveiligd is om mijn stelling te onderbouwen? (zonder daarvoor geld te stelen van iemand die daar niet vantevoren ondubbelzinnig toestemming heeft gegeven en een proces van responsible disclosure in acht nemende voor de publicatie)
- Wat doen jullie concreet om misbruik te voorkomen? (Zaken als obfuscated code en custom keyboards zijn niet effectief.)
- Kunnen jullie transparant zijn over de beveiligingsrisico’s van mobiel internetbankieren of heel duidelijk aangeven dat jullie volledig de verantwoordelijkheid nemen voor beveiligingsproblemen en altijd alle geleden schade vergoeden?
Wees je bewust van het risico en bedenk je dat dit probleem niet specifiek is voor de ING.