02 / StacklaagWEB & API

API-pentest: wie krijgt welk object?

Een API-pentest controleert of je API elk object alleen afgeeft aan de aanroeper die het mag hebben. We roepen elk endpoint aan als elke rol en namens elke klant, testen authenticatie, de omgang met tokens en rate limits, en zoeken naar de versies en endpoints die niemand documenteerde. Bevindingen koppelen we aan de OWASP API Security Top 10 (2023), de tien grootste risico’s van API’s. We beoordelen ze in CVSS v4.0 en leveren ze met de exacte requests.

Voor teams waarvan de API het product is, of de echte voordeur achter een web- en mobiele app.

Pakket
WEB & API
Bandbreedte, excl. btw
EUR 5.000 tot 15.000
Testdagen
4 tot 10

OBJECTEN / FICTIE / TWEE TENANTS, EEN API04 REGELS GELEZEN / 1 GEVONDENVOORBEELD

TENANT ATOKEN VAN TENANT A

  1. CLM-48211200 / EIGEN
  2. CLM-48212200 / EIGEN

TENANT BZELFDE TOKEN

  1. CLM-48213200 / NIET EIGEN
  2. CLM-48214403 / NIET EIGEN

CLM-48213 / EIGENAAR NIET GECONTROLEERD / API1:2023

Het token van klant A krijgt de ene claim van klant B geweigerd en de andere teruggestuurd: het endpoint controleert het token, niet van wie het object is. Wij testen elk endpoint dat een id aanneemt, met accounts van twee klanten en elke rol.

Hoe ziet een API-bevinding eruit?

Eén kaart per bevinding, steeds met dezelfde velden. Deze komt uit de fictieve opdracht in ons voorbeeldrapport: de claims-API van een verzekeraar.

VOORBEELD / FICTIEVE KLANT / ECHT FORMAT

SAMPLE-01 / F-01

KRITIEKCVSS-B 9.3STACKLAAGAPI1:2023

De claims-API geeft de claim van elke klant aan het token van de assistent

Impact op het bedrijf
Wie de assistent kan sturen, kan de claim van een andere klant lezen en wijzigen.
Bewijs
REQUESTS REQ-07 TOT EN MET REQ-11, BIJLAGE B De requests die het reproduceren, met beide testaccounts erbij.
CVSS v4.0-vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Oplossingsprincipe
Controleer autorisatie op elk object, niet alleen bij het inloggen: beperk het token van de assistent tot één klant en dwing het eigenaarschap van claims af in de API.
Hertest
OPGELOST 2026-09-24 Eigenaarschap wordt nu per claim afgedwongen; alle vijf requests worden geweigerd.
Het format dat elke bevinding in ons rapport krijgt. De klant en de bevinding zijn fictief; de velden niet. Lees F-01 in het voorbeeldrapport.

Hoe verloopt een API-pentest?

We beginnen bij je specificatie en gaan door waar die niet meer klopt.

  1. 01Inventaris

    We vergelijken de gedocumenteerde API met de live API.

    Je OpenAPI-beschrijving of GraphQL-schema is het startpunt, vastgelegd verkeer van je eigen clients het tweede, en het verschil tussen die twee kan de eerste bevinding zijn: oude versies, interne endpoints en velden die de documentatie nooit noemt.

  2. 02Autorisatiematrix

    We bouwen een matrix van aanroepers en objecten.

    Twee klanten, elke rol, elk endpoint dat een id aanneemt. Onze tooling speelt elk request af als elke aanroeper; een mens leest de matrix en beslist welke cellen een lek zijn en welke het ontwerp. Broken object level authorization komt hier boven, als het er is.1

  3. 03Tokens

    We testen het hele leven van een token.

    Uitgifte, scope, audience, verloop en intrekking, plus de flows die tokens uitdelen. Een token dat voor meer geldig is dan zijn taak, is hoe een kleine fout toegang wordt tot de data van een andere klant, dus bij elke bevinding staat welk token we gebruikten.

  4. 04Limieten en processen

    We testen limieten zonder je plat te leggen.

    Rate- en groottelimieten controleren we met afgemeten requests in laag volume, binnen de afgesproken vensters, nooit met belasting. Gevoelige bedrijfsprocessen testen we op automatisering tot het niveau dat elk van je eigen klanten zou kunnen halen.

  5. 05Bewijs

    Bij elke bevinding horen de requests.

    Bij elke bevinding staan het exacte request en de response, de aanroeper als wie het is verstuurd, de OWASP API-id en een beoordeling in CVSS v4.0.

Wat testen we in een API?

De OWASP API Security Top 10 (2023), één regel per risico, plus de GraphQL- en API-controles uit de Web Security Testing Guide. Broken object level authorization staat bovenaan: de fout die het dossier van de ene klant aan de andere geeft.2

Elke regel is een categorie uit onze testcatalogus. De ids linken naar het framework dat ze definieert.
Nr.CategorieWat we controlerenGekoppeld aan
01Autorisatie per object op elk endpointOf elk endpoint dat een object-id aanneemt, controleert dat deze aanroeper dit object mag hebben.
02API-authenticatie en omgang met tokensHoe tokens worden uitgegeven, gevalideerd, afgebakend en ingetrokken, en of een endpoint de controle overslaat.
03Autorisatie per eigenschap bij lezen en schrijvenOf responses velden teruggeven die de aanroeper niet hoort te zien, en of requests velden kunnen zetten die de aanroeper niet hoort te wijzigen.
04Rate limits en grenzen aan resourcegebruikRate limits, paginagroottes en payloadgroottes, zodat één client de dienst of je rekening niet kan uitputten.
05Autorisatie per functie voor rollen en beheerroutesOf beheerfuncties en rolspecifieke functies aanroepers zonder die rol weigeren, op elke versie die nog draait.
06Bescherming van gevoelige bedrijfsprocessenOf processen als aanmelden, afrekenen of boeken geautomatiseerd kunnen worden op een schaal die het bedrijf schaadt.
07Verdediging tegen server-side request forgeryOf URL’s die de API namens een aanroeper ophaalt, naar interne diensten of cloudmetadata kunnen worden gestuurd.
08API-beveiligingsconfiguratie en hardeningConfiguratie en hardening: CORS, headers, detail in foutmeldingen, TLS en HTTP-methoden die niemand gebruikt.
09API-inventaris, versies en ongedocumenteerde endpointsWelke versies, hosts en endpoints live zijn, ook de endpoints die in de documentatie ontbreken.
10Veilig gebruik van API’s van derdenHoe de API omgaat met data uit de API’s van derden die hij aanroept, en of hij die meer vertrouwt dan zijn eigen gebruikers.
11Review van GraphQL en het API-oppervlakGraphQL-schema’s en introspectie-instellingen, limieten op querydiepte en batching, en de autorisatie achter elke resolver.

Buiten scope Load- en denial-of-servicetests: we controleren dat er limieten zijn, niet waar de dienst omvalt. API’s van derden die je aanroept, vallen buiten scope zonder schriftelijke toestemming van hun eigenaar.

Wat kost een API-pentest?

Een API-test valt onder ons pakket Web en API, exclusief btw. Eén API met een gepubliceerde specificatie en een paar rollen zit aan de onderkant; de offerte na het scopinggesprek bepaalt het precieze bedrag.

02 / Stack Pentest

WEB & API

EUR 5.000 tot 15.000

DOORGAANS 4 TOT 10 TESTDAGEN

Wat de prijs bepaalt

  • Endpoints en versies in scope
  • Rollen en klanten in de autorisatiematrix
  • REST, GraphQL of allebei
  • Of er een specificatie is, of dat wij de inventaris bouwen

Bekijk alle prijzen

Rapport
Scope, methode, datums, bevindingen met bewijs, ernst in CVSS v4.0, framework-ids, oplossingsadvies en de status na de hertest.
Verklaring
Eén pagina die scope, datums en de status na de hertest bevestigt, voor klanten die het resultaat willen zonder de bevindingen.
Dekkingsmatrix
Elke categorie in scope gemarkeerd als getest, niet van toepassing of buiten scope, zodat ook de gaten op papier staan.
Bewijs
Het request en de response achter elke bevinding, klaar om opnieuw af te spelen.

Vragen over het testen van API’s.

Wat is API security testing?

API security testing controleert of een API elke aanroeper alleen geeft wat die mag hebben. Een pentest doet dat met de hand: elk endpoint als elke rol en elke klant, authenticatie en tokenbeheer, rate limits, en endpoints die niemand documenteerde. Bevindingen koppelen we aan de OWASP API Security Top 10 (2023), en ze komen met de exacte requests.

Testen jullie naast REST ook GraphQL?

Ja. GraphQL verplaatst autorisatie van routes naar resolvers, dus testen we de controle achter elk veld en elke resolver, samen met de blootstelling van het schema, querydiepte, batching en de kostenlimieten die voorkomen dat één query het werk van duizenden doet. REST en GraphQL in dezelfde API vallen onder één scope.

Wat is broken object level authorization?

Bij broken object level authorization geeft of wijzigt een API een object zonder te controleren of de aanroeper erbij mag, zodat een ander id bij de data van iemand anders uitkomt. OWASP zet het op API1 in de OWASP API Security Top 10 van 2023. We testen het met accounts van minstens twee klanten, in elke rol.

Wat hebben jullie van ons nodig voor een API-pentest?

Een specificatie als je die hebt, zoals een OpenAPI-beschrijving of een GraphQL-schema, testaccounts voor elke rol bij minstens twee klanten, en een testomgeving met realistische data. Zonder specificatie bouwen we de inventaris op uit het verkeer van je clients, en dat kost een deel van de testdagen.

Testen jullie rate limits op productie?

Alleen met afgemeten requests in laag volume, binnen de vensters uit de spelregels, en nooit als loadtest. We bevestigen dat limieten bestaan en per client, token en endpoint gelden; we zoeken niet naar het punt waarop de dienst omvalt. Capaciteit testen is een ander vak.

De opdracht, in het kort.

4 tot 10 testdagen op staging waar het kan, binnen de spelregels die je vooraf tekent. Daarna het rapport en een verklaring van één pagina, en de hertest zodra je de bevindingen hebt opgelost. Elke stap, van het scopinggesprek tot het regressiepakket, staat in de werkwijze.