Geschreven door: Securityteam

In samenwerking met onze pentester: Martin Knuijsting

Een API is voluit geschreven een Application Program Interface. In het bedrijfsleven wordt een API steeds meer gebruikt, maar zijn bedrijven zich vaak onbewust van de risico’s die hiermee gepaard gaan? Is uw API wel echt veilig? En wat zijn nu eigenlijk de gevaren van een API? In dit artikel vertellen we u er alles over.   

Wat is een API?

Een API zorgt ervoor dat een functionaliteit van een systeem beschikbaar wordt gemaakt voor andere systemen. Met andere woorden, een API maakt communicatie en uitwisseling van informatie tussen verschillende systemen op een universele en gestructureerde manier mogelijk. API’s worden de laatste jaren steeds meer gebruikt . Elk jaar neemt het aantal API’s dan ook flink toe. Doordat alles met elkaar verbonden moet zijn tegenwoordig, is dit ook niet heel raar. Zo maken API’s bijvoorbeeld het thuisbezorgen van eten mogelijk of het vergelijken van een vliegticket bij verschillende vliegmaatschappijen.

Hoe werkt een API?

De werking van een API is makkelijk uit te leggen aan de hand van een voorbeeld. Wanneer u een hotel of vliegticket gaat boeken wordt er razendsnel op de achtergrond, door middel van API’s verschillende data verzameld. Deze checkt alle mogelijkheden real-time van hotels of vliegreizen. Rekent met prijzen en periodes en geeft zo een geheel overzicht van mogelijkheden. 

Een soort slimme zoekmachine omdat deze via API’s beschikken over alle realtime data van bijvoorbeeld hotels. Hier schuilt ook een gevaar in, want bepaalde processen hebben dus toegang tot de databases van al deze bedrijven.

Is uw API wel veilig?

Heeft u zelf ook een API uitgegeven, zodat klanten of leveranciers direct toegang hebben tot uw systemen?  Het gebruik van API’s gaat namelijk niet zonder risico’s. Het zou kunnen zijn dat de API die u nu uitgeeft, mogelijk een ingang is voor kwaadwillenden. Dit kan een risico opleveren voor de data in uw eigen systemen. Daarom is het goed om uzelf de vraag te stellen: Is uw API eigenlijk wel veilig?

API Tokens

Een van de gevaren gaat schuil in de tokens van een API. Dit is de identiteit van een gebruiker binnen bijvoorbeeld een webapplicatie. U moet goed weten wat u doet wanneer uw organisatie een API uitgeeft. U kunt daarmee onbewust een kwetsbaarheid in huis halen. Dit kan als gevolg een beveiligingsincident hebben met mogelijk een grote impact voor uw organisatie.

Wanneer een kwaadwillende een token bemachtigt is hij in staat om bedrijfsgevoelige data in te kunnen zien. Dit heeft als gevolg dat hij informatie kan stelen en naar de buitenwereld kan lekken. Indirect kan dit voor uw organisatie een datalek betekenen, met alle gevolgen van dien.

API Link

Een andere manier die een kwaadwillende kan gebruiken om schade aan te richten aan een webapplicatie, is het gebruik van een API link. Er wordt een mail gestuurd naar de gebruiker van de applicatie met daarin een API link die ervoor zorgt dat bepaalde dingen in de applicatie worden aangepast. 

Wanneer de gebruiker op deze link klinkt in de mail, wordt de API in werking gesteld en kan de applicatie ontregeld worden. Hierdoor wordt de applicatie mogelijk onbereikbaar. Wanneer deze applicatie onderdeel is van een kritisch bedrijfsproces kan het proces stil komen te liggen, wat grote financiële schade kan betekenen voor uw organisatie.

Hoe het al eerder is misgegaan

API’s worden bij ontwikkelwerk steeds meer gebruikt. Het kan ook veel voordeel opleveren voor de ontwikkelaar, omdat het gebruik van een API veel werk scheelt. Echter kunnen er ook veel dingen mis gaan als hier niet verantwoordelijk mee om wordt gegaan. Hackers kunnen via API’s veel schade aanrichten aan uw organisatie.

Een goed voorbeeld uit de praktijk is een incident bij Facebook. Hier waren bugs in de API aanwezig die zij gebruikten voor hun platform. Hierdoor was het mogelijk voor een gebruiker om informatie in te zien die niet voor hem bestemd was. De ontdekker van deze bug heeft hier gebruik van gemaakt door privacygevoelige data van gebruikers op Facebook te lekken naar de buitenwereld. Dit is een inbreuk op de privacy van deze gebruikers en heeft Facebook dan ook veel geld gekost (5 miljard euro).  

Op het moment dat dit met een van uw uitgegeven API’s gebeurt kunt u te maken krijgen met een datalek en de Autoriteit Persoonsgegevens (AP). U moet dan rekening houden met boetes van maximaal 10 miljoen euro. Of een boete van maximaal 2% van de wereldwijde jaaromzet. Daarnaast zal dit imago schade betekenen voor uw organisatie en gevolgen hebben wanneer u in de toekomst nog een een API uitgeeft. Deze kan dan als onbetrouwbaar worden aangezien.

Voorbeeld van een API exploit

Cross-Origin Resource Sharing (CORS) is een mechanisme dat webapplicatie in staat stelt om cross-domein verzoeken uit te voeren op een gecontroleerde manier met behulp van de API XMLHttpRequest. Deze cross-origin verzoeken hebben een Origin-header, die het domein dat het verzoek maakt identificeert. Deze Origin-header stelt het protocol vast dat moet worden gebruikt tussen een webapplicatie en een server om te bepalen of een cross-origin verzoek is toegestaan.

Een van de meest voorkomende (CORS) misconfiguraties is het verkeerd gebruiken van wildcards zoals (*), waardoor domeinen resources mogen opvragen. Dit is meestal standaard ingesteld, wat betekent dat elk domein toegang heeft tot bronnen op deze site.

Als de wildcard verkeerd staat ingesteld, kan dit leiden tot misbruik van de functie

Hieronder ziet u een voorbeeld van een (CORS) exploit script.

Door middel van dit script kan een kwaadwillende API gebruiker meer informatie bemachtigen dan dat de bedoeling is.

Hoe gaat u veilig met een API om?

Er zijn verschillende manieren om de risico’s die gepaard gaan met het gebruik van API, te verlagen. Het belangrijkste is om in de token zo min mogelijk informatie prijs te geven. Omdat de token in het logboek van de servers wordt opgeslagen, kan dit betekenen dat andere gebruikers de tokens kunnen gebruiken.

Daarom is het ook belangrijk om de geldigheidsduur van een token zo kort mogelijk te houden. Wanneer een token niet lang geldig is kunnen andere personen er geen misbruik van maken. De data van de token is weggeschreven in een code die gemakkelijk uit te lezen is door kwaadwillenden.

Uw API kunt u ook voorzien van whitelisting. Dit wil zeggen dat u enkel vertrouwelijke IP’s toestaat, wanneer het IP niet geregistreerd is, dan wordt deze niet vertrouwd en geblokkeerd. Dit maakt het een stuk moeilijker voor een kwaadwillende om misbruik te maken van de API, doordat u hem direct kunt buitensluiten. Maar het kan natuurlijk ook zijn dat één van uw klanten misbruikt maakt van de gewhiteliste connectie, of een hacker, via een connectie van uw klant, dat via die manier doet. Wel is deze manier al een grote stap vooruit in de beveiliging.

Laat uw API testen op risico’s

De meeste bedrijven laten hun applicaties regelmatig pentesten, echter wordt een API koppeling nog wel eens vergeten. Het is lastig voor u als organisatie om de kwetsbaarheden van een API te achterhalen. Hiervoor is kennis en ervaring nodig om mogelijke risico’s te kunnen verlagen. Networking4all heeft ervaren pentesters die voor u deze kwetsbaarheden kunnen blootleggen. Zo kan uw organisatie zich bezig houden met waar u goed in bent en hoeven uw gebruikers zich geen zorgen te maken over het gebruik van uw API’s.

Wij geven u een duidelijk en overzichtelijk advies waarmee u de risico’s binnen uw API kunt (helpen) verlagen. U kunt door middel van ons rapport aan uw klanten aantonen dat uw API veilig is en getest op kwetsbaarheden door een onafhankelijke partij.

Meer weten

Wilt u meer weten over deze dienst of over onze werkwijze? Neem dan gerust contact met ons op door ons te bellen op : 020 788 10 30. Onze medewerkers zijn u graag van dienst.



Deel artikel via: