Dexter ontmaskerd door Oauth authenticatie

Wie is er beter dan Dexter Morgan als het gaat om het verbergen van zijn ware identiteit? Hoe krijgt hij het voor elkaar dat hij pas zeer laat ontmaskerd wordt? Dexter is een voorbeeld voor vele hackers maar die gaan hopelijk niet te vaak over lijken. Uiteindelijk is Dexter zijn side hustle hem toch fataal geworden doordat zijn moorden te herleiden waren aan zijn ware identiteit: Dexter Morgan.

Deze metafoor gaat mij helpen om het nut van Oauth met je te delen. Wat heeft Dexter gemeen met het zero trust principe? Hoe belangrijk is de kracht van identificatie en authenticatie/autorisatie op basis van Oauth? Welke eigenschap heeft er voor gezorgd dat Dexter zijn acties terug te herleiden zijn aan de moorden? Veel plezier met lezen.

Spoiler alert: heb je de serie nog niet gezien? Ben je dat wel van plan? Stop dan met lezen! 

Dexter kruipt in de huid van een hacker

Wie is Dexter Morgan? Het lijkt me sterk maar er zijn vast lezers die nog een heel leven voor hun hebben:; Dexter op de bucketlist. Speciaal voor jullie nog even de introductie van Dexter Morgan. Dexter is een forensisch medewerker die vaak als eerste toegang heeft tot een plaats delict dus een uitstekend moment om te knoeien met de bewijslast.

Dexter heeft een bijzondere formule waarmee hij moorden (slachtoffers) verantwoordt: moordenaars die hun straf ontlopen door de mazen in de wet. Deze potentiële slachtoffers worden netjes opgeslagen in een database waar hij eenvoudige toegang tot kan krijgen.

Eigenschap van Dexter met gevolgen

Dexter heeft één heel bijzondere eigenschap die hem fataal wordt in de vorm van trofeeën. Hij neemt van elk slachtoffer een druppel bloed af en verzamelt deze in zijn appartement. O.a. zijn zus komt hierachter en weet dus na lange tijd de ware identiteit van haar broer.

Voor de kenners een zeer bekende box met plastic plakjes met daar tussen een bloeddruppel.

Zij was niet de enige die wist van zijn bestaan… Ondanks de 20 mensen die af weten van zijn side hustle lukt het Dexter om 10 seizoenen uit handen te blijven van de politie.

Autorisatie van Dexter

Zoals bekend heeft Dexter administrator rechten binnen zijn speelveld. Hij heeft onbeperkt toegang tot databases en heeft als één van de eerste toegang tot een plaats delict. Hij weet het dus al vrij snel als iemand hem verdenkt en/of probeert op te pakken.

Permanente administrator toegang tot zijn speelveld.

Zijn formule houdt hierdoor geen stand, hij moet afscheid nemen van goede politieagenten die hem verdenken. Van de 20 mensen die hem verdenken kun je degene die nog leven op één hand tellen.

Dexter z’n speelveld kan jou IT landschap zijn

In potentie hebben administators binnen jou IT landschap dezelfde vrijheid als Dexter. Er bestaat dus altijd een kans dat jou collega’s misbruik kunnen maken van de grote hoeveelheid rechten. Eigenlijk moeten we PIM inrichten maar dat is een ander onderwerp. We moeten er in ieder geval voor zorgen wat we acties direct kunnen herleiden aan persoonlijke- of applicatieve identiteiten.

Als we nou eens een API zien als een activiteit; zoals het ophalen van data [GET] of juist data muteren [PUT]. Deze acties willen we minimaal terug herleiden naar een applicatie of persoon.

Deze week las ik een nieuwsbericht over jonge hackers die persoonsdata wisten te verzamelen en daar bedrijven mee chanteerde voor o.a. Bitcoins. Wat zou ik toch graag onderzoek willen doen! Zouden daar ook API’s mee gemoeid zijn?

Wat is Oauth?

Wat een goede vraag zeg 🙂 . Microsoft kan het natuurlijk beter uitleggen dan mijn blog en dat scheelt onnodige karakters.

Waarom de documentatie van Microsoft? Hier wordt namelijk direct de relatie gelegd tussen webapplicaties (met API’s natuurlijk) en de identity store Azure Active Directory.

De acht stappen van de Oauth flow

Op dezelfde pagina wordt ook een oauth flow weergegeven met acht stappen voor een succesvolle inlogactie van een eindgebruiker.

De flow van een succesvolle login actie door middel van Oauth.

Dit is DE manier om eindgebruikers toegang te geven tot je applicatie [2 – Azure Web App]. Er wordt gesproken over twee types: authentication en token.

Voor wat betreft is het type authentication dekt het niet de volledige lading want naast authenticatie wordt er ook gekeken naar de autorisatie. Autorisatie wordt gebruikt door de applicatie en geeft weer wat een identiteit wel of juist niet mag. Hanteer hier a.u.b. het least privilege principe waar door een gebruiker minimale rechten krijgt. Het speelveld van Dexter wordt gelukkig aanzienlijk kleiner en hij kan zijn eigen sporen niet uitwissen.

Dan hebben we nog het token. De token geeft een gebruiker rechten tot een resource en heeft een bepaalde geldigheid. In veel gevallen is dat bijvoorbeeld een uur. Na een uur moet een gebruiker zijn token vernieuwen of opnieuw aanvragen.

Wel eens gehoord van een bearer token? Het staat letterlijk voor de drager van het token. Zodra je een token opvraagt voor toegang tot een applicatie kan dezelfde token gebruikt worden voor het aanroepen van een API. Er wordt dan gesproken over een bearer token die je mee moet sturen door middel van de autorisatie header van een API call.

Mijn praktijk ervaring met het toepassen van Oauth

Wel eens te maken gehad met Oauth authenticatie? Of overwogen? En in combinatie met Multi Factor Authentication (MFA)? Deze twee samen zijn een goede combinatie voor extra security. MFA kan enkel gebruikt worden in combinatie met menselijke identiteiten. Het zorgt ervoor dat identiteiten gecontroleerd worden door een extra menselijke invoer, denk bijvoorbeeld aan een authenticator app op een mobiele telefoons waar je een actie moet bevestigen.

Weet wie je applicatie en/of API gebruikt.

Mijn ervaring leert helaas dat er nog weinig systemen zijn die authenticatie tot applicaties hergebruikt voor het aanroepen van API’s. Het is super krachtig als API’s calls pas uitgevoerd kunnen worden als er een bearer token beschikbaar is door user authenticatie. Met als extra voordeel dat je ook autorisatie kan toepassen dus controle over welke API wel of juist niet aangeroepen kan worden.

Wat ik gelukkig wel vaker zie is Oauth autorisatie op applicatief niveau. Het is een eerste stap de goede richting in maar nog niet water dicht. Er is bijvoorbeeld geen (menselijk) MFA mogelijk en acties zijn niet herleidbaar naar personen. Applicatie autorisatie kan namelijk gebruikt worden door meerdere mensen of systemen waar Dexter vast wel raad mee weet.

Toepassen binnen API Management

Alvast een teaser voor mijn volgende twee blog posts:

  • Oauth authenticatie tot API Management. Voordat een API achter een API Management service geconsumeerd kan worden is een bearer token nodig. De bearer token wordt uitgegeven tot een identity store zoals Azure Active Directory.
  • Oauth authenticatie wordt afgedwongen door de backend van een API achter de API Management service. De API Management service moet dus eerst een token ophalen bij de backend (kan bijvoorbeeld een leverancier en/of een SaaS applicatie zijn).

Geen langdurig speelveld meer voor Dexter

Het is goed om te zien dat Dexter uiteindelijk ontmaskerd is, maar je moet er niet aan denken dat een hacker acht seizoenen lang als administrator toegang heeft tot je belangrijkste webapplicaties en API’s. Pas zo snel als mogelijk autorisatie toe op basis van identiteiten, zorg voor een zero trust omgeving (geen permanente administators) en uiteraard goede monitoring. Hiermee kan je acties direct herleiden naar personen in plaats van systemen of gedeelde autorisaties. Be safe!

Mijn volgende blog publicatie gaat je helpen met het implementeren van Oauth voor inkomend verkeer (lees: consumers van je API).

Leave a Reply

Your email address will not be published. Required fields are marked *