API security
Binnen het bedrijfsleven worden binnen verschillende systemen veel gegevens uitgewisseld. Veel van deze communicatie verloopt via API's. Wat zijn API's eigenlijk en hoe zorg je ervoor dat de uitwisseling van gegevens zo veilig mogelijk verloopt?
Wat is een API?
API staat voor Application Programming Interface. Dit is een manier waarmee meerdere applicaties met elkaar kunnen communiceren, gegevens verkrijgen en samenwerken. Ook biedt het een mogelijkheid om toegang tot specifieke informatie vrij te geven of juist af te schermen. API’s worden (vooral) door programmeurs gebruikt om op een gestandaardiseerde manier softwareonderdelen, services en functionaliteiten met elkaar te verbinden. Omdat API’s op de achtergrond opereren (software naar software), is de kans zeer klein dat jij als eindgebruiker iets van het proces ziet of direct interactie met API's hebt. Maar vergis je niet; API’s zijn overal en worden voor oneindig veel doeleinden ingezet. Zo worden ze in allerlei software gebruikt zoals mobiele apps, websites, besturingssystemen en in Internet of Things-toepassingen.
Hoe werkt een API?
Een API werkt op basis van een input en een output. Dat wil zeggen dat er een verzoek wordt ingediend (input) en dat deze vervolgens een antwoord terugkoppelt (output). De API zorgt voor de verbinding tussen beide. Hoe de communicatie plaatsvindt en hoe onderdelen op elkaar reageren, is vastgelegd in de API documentatie. API documentatie is een specifieke en veelal gestandaardiseerde set van regels.
Om je een beter beeld te geven hoe dit in z’n werk gaat kun je een API vergelijken met een ober van een restaurant. Jij zit als klant aan tafel en bent gereed om te bestellen. De keuken is in dit voorbeeld de leverancier en verzorgt het eten. Om vervolgens je bestelling door te geven aan de keuken, is een verbinding nodig, een ober dus. Jij geeft je keuze door aan de ober op basis van de menukaart (de API documentatie). De ober neemt jouw bestelling op en geeft dit door aan de keuken. De keuken bereidt het gerecht en geeft dit weer aan de ober die vervolgens het gerecht bij jou bezorgt.
Wat zijn de risico’s met API's?
API’s bieden programmeurs en applicatieontwikkelaars erg veel mogelijkheden maar bevatten kwetsbaarheden, net als ieder ander stuk software. Ook hebben API’s toegang tot gevoelige data, specifieke gegevens of bepaalde delen van een applicatie waardoor ze helaas voor cybercriminelen een geliefd doelwit zijn. Daarbij zijn veel API’s vanaf het internet benaderbaar en voor een aanvaller met technische kennis mogelijk van afstand te misbruiken. Ook wordt bij bepaalde software (bijvoorbeeld een boekhoudpakket of CRM-systeem) door de leverancier een ‘standaard API’ meegeleverd waar je mogelijk als afnemende organisatie geen weet van hebt. Deze API wordt meegeleverd met het pakket en kan kwetsbaarheden bevatten die jouw organisatie tot een interessant doelwit maakt. Bij kwetsbaarheden moet je denken aan bijvoorbeeld zwakke toegangsrechten en slechte of ontbrekende versleuteling. Tot slot worden bepaalde beveiligingsmaatregelen, die wel worden genomen in de bijbehorende webapplicatie, niet doorgevoerd in de API waardoor kwetsbaarheden worden geïntroduceerd.
Waar moet je als ondernemer op letten?
API’s zijn best complex en voor ondernemers vaak onzichtbaar, maar dat betekent niet dat ze onbelangrijk zijn. Maar waar moet je als ondernemer nu op letten? Onderzoek de volgende aspecten of bevraag je IT-leverancier:
- Gebruik je een API?
Het klinkt gek maar voor veel ondernemers is het niet bekend dat het pakket dat ze hebben aangekocht een eigen API aanbiedt of gebruik maakt van andere API’s. Het is daarom verstandig om dit grondig te inventariseren, je ICT-leverancier kan je hier mee helpen. - Test je API
Verreweg het belangrijkste is dat je als ondernemer budget en tijd vrij maakt om de API’s te (laten) testen. Dit geldt voor alle API’s die je binnen je organisatie gebruikt. Zorg ervoor dat je ze periodiek laat doorlichten door een (onafhankelijke) testorganisatie. Deze organisaties zijn gespecialiseerd in het testen van essentiële onderdelen en het blootleggen van mogelijke kwetsbaarheden. Dit geeft je ook een helder beeld waar je bedrijf mogelijk risico’s loopt. Vergeet ook niet om je API’s na grote wijzigingen in de code of belangrijke updates te laten onderzoeken op kwetsbaarheden. - Authenticatie
Hoe zijn de verificatiemechanismen geïmplementeerd en hoe wordt de identiteit van de eindgebruiker binnen de API vastgesteld? - Beveiligingscertificaat
Wordt er binnen de API gebruik gemaakt van een modern beveiligingscertificaat? Met een dergelijk beveiligingscertificaat zorg je ervoor dat de communicatie is versleuteld. - Autorisatie
Hoe worden toegangsrechten binnen de API bepaald?Is het voor een normale API-gebruiker mogelijk om bepaalde beheerdersfunctionaliteiten aan te roepen? - Gebruik van standaarden
Worden er richtlijnen (zoals de OWASP API Security Top 10) voor de beveiliging van de API gebruikt? Zo ja, worden alle richtlijnen gevolgd en in hoeverre wijkt de implementatie van binnen jouw API af? Waarom is daar voor gekozen? Zo nee, waarom worden beveiligingsrichtlijnen niet gevolgd?
Handige API-links
Mocht je zelf aan de slag gaan met het beveiligen van jouw API neem dan eerst de OWASP API Security Top 10 van 2019 door.