Afgelopen februari is PSD2, de nieuwe Europese richtlijn voor het betalingsverkeer, van kracht geworden. PSD2 biedt rekeninghouders de mogelijkheid om derde partijen, zogenaamde third party providers (TPP's), toegang te geven tot de betaalrekening bij hun bank. Banken zijn verplicht hieraan mee te werken door verschillende diensten aan derden aan te bieden zoals het opvragen van account-informatie en het initialiseren van betalingen. Voor banken en TPP’s betekent PSD2 dat ze hun processen en infrastructuur moeten aanpassen. Dit brengt echter naast de nodige performance-uitdagingen voor beide partijen ook security-risico’s met zich mee. Gelukkig is het niet lastig om beveiligingsmaatregelen tegen dergelijke risico’s te nemen. Lees hier welke risico's dit zijn en zorg dat je als bank deze risico’s elimineert.
Lees in dit artikel mijn 5 security-tips voor banken bij de implementatie van access delegation voor PSD2.
Matthijs Melissen, Security Specialist bij Computest | ervaring met beveiligen van access delegation protocollen
PSD2 is een Europese richtlijn. Aangezien de richtlijn niet aangeeft hoe deze technisch geïmplementeerd moet worden, ontwikkelt iedere bank een eigen oplossing om te voldoen aan de functionele eisen van PSD2. Op dit moment is de implementatie van PSD2 bij de meeste banken nog in ontwikkeling. Toch kunnen we wel enkele aannames doen over hoe het proces er bij een gemiddelde bank uit zal zien.
Access delegation kan zorgen voor kwetsbare infrastructuur
Neem als voorbeeld een rekeninghouder die via een TPP gegevens wil opvragen van zijn bank. Daarvoor vinden de volgende stappen plaats:
- De rekeninghouder verzoekt een TPP om informatie
- De TPP stuurt de rekeninghouder door naar de bank
- De rekeninghouder logt in bij de bank
- De rekeninghouder geeft de bank toestemming om zijn gegevens te delen
- De bank stuurt de rekeninghouder terug naar een endpoint bij de TPP en geeft hierbij een toegangscode mee
- De TPP legt contact met de bank via een API om rekeninggegevens op te vragen, en autoriseert zich hierbij met zijn toegangscode
Dit proces is niet nieuw en staat bekend als ‘access delegation’. Banken kunnen dit proces zelf implementeren, maar kunnen ook bestaande protocollen gebruiken voor access delegation, zoals het OAuth 2.0-protocol. Access delegation is al gemeengoed in andere sectoren, zoals in het onderwijs en bij sociale netwerken. Daar is echter gebleken dat het ook serieuze beveiligingsrisico’s met zich mee kan brengen. Kleine fouten bij de implementatie van access delegation kunnen grote gevolgen hebben. Om dit te voorkomen adviseer ik banken onderstaande 5 tips na te leven om te zorgen dat de security bij de implementatie en het gebruik van access delegation voor PSD2 gewaarborgd blijft.
5 security-tips voor banken bij implementatie PSD2
1) Verstuur geen toegangscodes in URL's
Om een TPP toegang te verschaffen, zal de bank waarschijnlijk toegangscodes gaan versturen naar de TPP via de rekeninghouder. Een logische manier om deze codes te versturen is ze mee te sturen als parameter in de URL. Dit levert echter al snel risico's op. URL's worden namelijk op veel plekken opgeslagen, zoals in de URL-geschiedenis van browsers, of in proxy logs. Dit vergroot het risico dat deze codes uitlekken. Ook kunnen codes uitlekken via de Referer-header. Het is daarom verstandiger om toegangscodes niet als URL parameter, maar in de POST body te versturen.
2) Controleer de waarde van de parameter van de URL
Om een toegangscode te verkrijgen, stuurt de TPP de rekeninghouder door naar een specifieke URL bij de bank. In sommige protocollen, zoals bij OAuth 2.0, kan aan deze URL ook een parameter worden toegevoegd die specificeert naar welke URL bij de TPP de toegangscode moet worden gestuurd. Het is belangrijk om als bank de waarde van deze parameter goed te controleren: de gebruiker mag alleen doorgestuurd worden als deze URL overeenkomt met de URL die door de TPP is geregistreerd. De URL moet overeenkomen qua protocol (http/https), de host, poort en pad. Als deze controle niet wordt uitgevoerd, bestaat het risico dat toegangscodes per abuis worden doorgestuurd naar externe partijen.
3) Sta geen redirects toe naar http-pagina's
Het is onverstandig om toegangscodes door te sturen over onbeveiligde http-verbindingen. Aanvallers die de verbinding tussen jou en de rekeninghouder uitlezen kunnen hiermee de toegangscodes onderscheppen. Het is daarom aan te raden om geen redirects naar endpoints over het http-protocol toe te staan.
4) Selecteer het juiste grant type bij gebruik van OAuth 2.0
Wanneer je gebruikmaakt van OAuth 2.0, is het van belang om het goede ‘grant type’ te selecteren. OAuth 2.0 ondersteunt namelijk verschillende grant types, die elk hun eigen werking hebben. Ook brengt ieder van deze types andere beveiligingsrisico's met zich mee. Daarom is het belangrijk om het grant type 'authorization grant' te gebruiken, dit biedt het hoogste beveiligingsniveau.
5) Voorkom open redirects bij het gebruik van OAuth 2.0
Volgens het OAuth 2.0-protocol moet een gebruiker die een onjuiste scope doorgeeft worden doorgestuurd naar een door de gebruiker opgegeven URL. Wanneer de OAuth 2.0-specificatie op dit punt gevolgd wordt, levert het een open redirect op. Dit betekent dat het voor een aanvaller mogelijk is een link op te stellen waarmee de gebruiker naar een willekeurige URL wordt doorgestuurd. Dit is een risico, omdat een open redirect bijvoorbeeld gebruikt kan worden in phishing-campagnes. Het is daarom verstandig op dit punt niet de OAuth 2.0-specificatie aan te houden, en bijvoorbeeld een error te tonen in plaats van de gebruiker te redirecten.
Tip: Lees ook de 5 security-tips voor third party providers bij de implementatie van access delegation voor PSD2 >>
Controle en advies PSD-implementatie door Security Specialist
De meeste beveiligingsrisico’s bij de implementatie van access delegation voor PSD2 zijn gelukkig eenvoudig te voorkomen. Wil jij zeker weten of bij jouw organisatie PSD2 op een veilige wijze geïmplementeerd is? Of ben je juist nog in de beginfase van PSD2-implementatie en wil je zorgen dat er al vroeg in het ontwikkelproces aandacht is voor beveiliging?
Wij bieden nu voor de financiële sector een PSD2-beveiligingsconsult aan. We komen graag bij je langs voor een consult op maat. Meer weten? Lees meer over een PSD2-beveiligingsconsult of neem contact op met Team Finance.
Over de auteur
Matthijs Melissen is werkzaam als Security Specialist bij Computest in Team Finance. De beveiliging van access delegation protocols zoals OAuth 2.0 heeft zijn bijzondere interesse. Matthijs heeft onder andere ervaring met het beveiligen van access delegation protocollen in het onderwijs.