Elk pad, niet alleen waar tijd voor was
Een tester komt in de geboekte dagen maar bij een deel van de routes. Met de repository wordt elke tak achter elk endpoint nagelopen, en juist daar zitten de criticals die niemand bereikt.
Koppel GitHub, GitLab of Bitbucket en de agent volgt de code achter elk endpoint in plaats van te gokken. Bevindingen komen nog steeds met een request en een response, maar nu ook met het bestand en de regel.
De volgorde is belangrijk. De broncode verklaart wat al is waargenomen; een bevinding bestaat nooit alleen omdat de code er verdacht uitziet.
GitHub, GitLab of Bitbucket, gekoppeld voor je hele organisatie. Eén koppeling werkt voor elke applicatie en elke volgende run, zonder instellingen per repository. Geef elke repository een rol, zodat de agent weet hoe de onderdelen samenhangen.

Test de omgeving die jij kiest, of laat de applicatie opstarten vanuit de repository in een beheerde omgeving, zodat niets van jou wordt geraakt. Geen deployment, allowlist of firewallwijziging nodig.
De bevinding wordt aangetoond op de draaiende applicatie. Daarna wordt de broncode gelezen om te zien welke code hem veroorzaakt. Daarom heeft ook een white box bevinding een request en een response, naast het bestand en de regel.
Bevindingen
The handler joins the query parameter onto the upload directory without normalising it:
De patch gebruikt de veilige functies die je code al gebruikt, dus hij past in je codebase en review je als een gewone pull request. Staat hij live, dan test Hertesten die ene bevinding opnieuw, met dezelfde instellingen als de oorspronkelijke run.

Alles wat een black box run doet, gebeurt nog steeds. Met de broncode erbij krijg je ook de verklaring, en uit die verklaring een patch.
Een tester komt in de geboekte dagen maar bij een deel van de routes. Met de repository wordt elke tak achter elk endpoint nagelopen, en juist daar zitten de criticals die niemand bereikt.
Een bevinding wijst naar de code die hem veroorzaakt, niet alleen naar een URL. Wie hem oppakt, begint meteen op de juiste plek in plaats van eerst uit te zoeken waar het zit.
Welke rol een controle echt checkt, wat een achtergrondtaak zomaar vertrouwt, de code die alleen voor één klant draait. Van buitenaf zie je dat niet; in de broncode staat het gewoon.
Sleutels, tokens en connectionstrings in de Git-geschiedenis, in configuratie of in een vergeten testbestand. Is zo'n sleutel nog geldig, dan is dat een bevinding op zich, geen voetnoot.
De pakketversies die je echt uitrolt, gecontroleerd op bekende kwetsbaarheden, in plaats van een lijstje dat aan het begin van een traject is gemaakt.
De patch gebruikt de veilige functies die je code al gebruikt, dus hij past in je codebase en review je als een gewone pull request.
Alle drie gebruiken dezelfde agent, met dezelfde eisen aan bewijs. Het verschil is hoeveel hij zelf moet afleiden.
Een URL en verder niets. Het brengt in kaart wat bereikbaar is, maakt zelf een account aan als iedereen zich kan registreren, en begint waar een aanvaller van buiten ook begint. Alles wat het rapporteert, heeft het van buitenaf bereikt.
Testaccounts voor de rollen die ertoe doen. Hier komen fouten in toegangsrechten boven, want wat twee rollen mogen, vergelijk je alleen met allebei de accounts.
Alles wat black en grey box doen, plus de repository. De code achter een endpoint wordt gelezen in plaats van afgeleid, secrets en dependencies vallen binnen scope, en de fix komt als pull request in plaats van als een alinea advies.
Eén koppeling werkt voor al je applicaties. De agent test wat je uitrolt, zoekt de oorzaak op in de code en zet de fix klaar op een eigen branch.