Goed geteste communicatie tussen applicaties: zo makkelijk kan het zijn
Digitale diensten spelen een grote rol in de maatschappij. Van een reis boeken tot onze belastingzaken: het gaat vaak via applicaties. Deze applicaties communiceren met elkaar via Application programming interfaces (API's). De veiligheid van die API's was niet altijd makkelijk te testen. Met hun nieuwe REST API fuzzer, maakt TNO dit proces eenvoudiger, toegankelijker én beschikbaar voor iedereen.
De dekkingsgestuurde REST API fuzzer van TNO is gericht op een breed publiek van eindgebruikers en heeft een sterke focus op gebruiksgemak. Je bent weinig tijd kwijt met configureren en interpreteert de resultaten makkelijk in het dashboard van de fuzzer. Hiermee hoopt TNO de drempel voor fuzz-testen lager te maken en zo uiteindelijk de cyberveiligheid van API's te verbeteren.
API's: wat zijn dat ook alweer?
API's verbinden de digitale wereld. Ze faciliteren communicatie tussen verschillende applicaties en diensten, ongeacht welke 'taal' de applicatie spreekt. Je kunt een API zien als een soort ober die informatie van jou (je bestelling) communiceert naar de keuken, om vervolgens weer bij je terug te komen met een antwoord (je eten).
Tegenwoordig zijn API's onmisbaar bij vrijwel elke digitale dienst. Vooral REST (Representational State Transfer) API's zijn populair. Deze REST API's hebben een specifieke architectuur die vooral goed werkt met webservices.
Veiligheid van REST API's wordt te weinig getest, en dat is gevaarlijk
Een beveiligingslek door een fout van een REST API kan grote gevolgen hebben. Want REST API's communiceren met verschillende applicaties én met gebruikers. Daarnaast hebben ze vaak toegang tot bedrijfslogica en -data. Het is dan ook extra belangrijk dat REST API's veilig en robuust zijn.
REST API's testen op veiligheid kan met Software Security Testing. Het uitvoeren van zo'n test is ingewikkeld en tijdrovend. Cyberveiligheid komt in de praktijk daarom vaak op de tweede plaats. Bedrijven testen dan wel de verwachte functionaliteit van hun REST API's, maar niet de veiligheid.
‘Dat is een probleem’, zegt Thomas Rooijakkers, cybersecurity onderzoeker bij TNO. 'Wat je ziet is dat een kleine fout soms grote gevolgen kan hebben. Laatst bijvoorbeeld, was er een incident waardoor allerlei vluchten geannuleerd moesten worden. Een kleine fout, die met software security testing voortijdig had kunnen worden opgespoord, heeft dan miljarden euro's aan schade tot gevolg.'
"Een kleine fout, die met software security testing voortijdig had kunnen worden opgespoord, heeft dan miljarden euro's aan schade tot gevolg."
Fuzzen om fouten op te sporen
Om de veiligheid van een REST API echt goed te testen, kun je veel semi-willekeurige data op de API afsturen. Deze data moet lijken op de data die de API normaal binnenkrijgt, maar nét een beetje afwijken. Zo ontdek je fouten of beveiligingslekken die je met een functionaliteitstest niet boven water krijgt. Fuzz-testen, of fuzzing, genereert deze (schijnbaar) willekeurige invoergegevens automatisch voor het programma dat wordt getest.
Zelf fuzzing inzetten wordt vaak als uitdagend ervaren. En beschikbare fuzzers zijn lastig in gebruik te nemen. Of het is onduidelijk wat de organisatie achter de fuzzer met jouw data doet. Met de nieuwe REST API-fuzzer hoopt TNO deze uitdagingen en zorgen weg te nemen.
De nieuwe REST API-fuzzer maakt testen eenvoudiger
De state-of-the-art REST API fuzzer van TNO (ontwikkeld boven op LibAFL) maakt het eenvoudiger om zelf een fuzzer toe te passen en zo potentiële fouten in een REST API op te sporen. Thomas Rooijakkers: 'Verbazingwekkend genoeg zie je dat we direct eigenlijk altijd wel íéts vinden wanneer we de fuzzer voor het eerst toepassen.'
De fuzzer is breed inzetbaar. Hij werkt voor elke REST API (voor de kenner: met black-box-, grey-box- en white-box-testen) en ondersteunt codedekking voor Java, Javascript en Python. Daarnaast biedt de fuzzer de mogelijkheid om eenvoudig nieuwe talen toe te voegen. En niet onbelangrijk: de REST API-fuzzer zit privacy-technisch goed in elkaar, je data komt niet bij TNO of andere partijen terecht.
TNO biedt gebruikers van de fuzzer verschillende hulpmiddelen aan. Zo kun je voor het eerste gebruik een tutorial volgen op GitHub en zijn er verschillende voorbeeld-configuratiebestanden om je op weg te helpen.
Ook de interpretatie van de resultaten wordt je makkelijk gemaakt: de fuzzer beschikt over een handig dashboard waarop het geobserveerde gedrag wordt gevisualiseerd. Het dashboard geeft ook de context weer, zoals de specifieke API-code of -endpoints die getest zijn. Zo helpt de REST API-fuzzer om potentiële fouten op te sporen en de API te verbeteren.
"Verbazingwekkend genoeg zie je dat we direct eigenlijk altijd wel íéts vinden wanneer we de fuzzer voor het eerst toepassen."
Doe en denk mee
De gratis REST API-fuzzer is open source en beschikbaar onder de Apache-2.0-licentie op GitHub. Je kunt de fuzzer direct zelf proberen en gebruiken om de veiligheid, betrouwbaarheid en robuustheid van je REST API's te verbeteren. Bijvoorbeeld bij een softwareontwikkelingscyclus, bij kwaliteitscontrole van de toeleveringsketen of bij penetratietesten. Het is ook mogelijk om samen met TNO aan de slag te gaan met de fuzzer.
TNO nodigt iedereen uit om mee te denken of bij te dragen op GitHub. Bijvoorbeeld door nieuwe talen of nieuwe mutatietechnieken toe te voegen. Thomas Rooijakkers: 'Bijdragen zijn hartstikke welkom. Daarom doen we het ook open source. We willen de fuzzer beschikbaar stellen zonder gekke restricties én willen graag feedback en sturing ontvangen.'
Heb je hulp nodig, wil je meedenken of wil je meer weten over tools voor het geautomatiseerd testen van betrouwbaarheid en security? Neem dan contact met ons op.
Meer weten?
Download het memo over Software Security Testing Techniques and Tools.