NieuwProbeer 7 dagen gratis
white box pentest

Een white box pentest die je code leest, en alles toch moet aantonen.

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.

01 / Hoe een run werkt

Eerst testen, dan de code lezen.

De volgorde is belangrijk. De broncode verklaart wat al is waargenomen; een bevinding bestaat nooit alleen omdat de code er verdacht uitziet.

Koppelen

Koppel de repository één keer.

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.

  • Rollen zoals runtime, frontend, backend of infra
  • Meerdere repositories voor één applicatie
Codehosts
Workspace / Integrations
Code
GitHubacme · 12 repositories connected
GitLabSync projects, open fix MRsConnect
BitbucketCloud repos, fix PRsConnect
Source reposfor app.acme.io
acme/frontendFrontend
acme/backendBackend / API
acme/monorepoMain source
acme/marketing-site—
Omgeving

Wijs een omgeving aan, of laat er een bouwen.

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.

  • Een env-profiel levert de variabelen die de build nodig heeft
  • De code draait tijdens de run in een afgeschermde omgeving
  • Verwijderd als de run klaar is, en nooit gebruikt om modellen te trainen
Scanmodi
Step 3
Configuration
Runtime target
Use existing URLThe target is already running. The scanner reads the paired repo for context.
Set up from sourceBoots the app from the repository in a managed runtime. No deployment or allowlisting.
Env profilebilling-api · stagingfrom .env
DATABASE_URLpostgres://•••••••
STRIPE_SECRET_KEYsk_test_•••••
NODE_ENVstaging
Injected into install and build, encrypted at rest
Bewijs

Eerst aantonen, dan verklaren.

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
highF-7BB9DDDEPath traversal in invoice attachment download
FindingSuggested fixAIActivity3Notes
Observation
1GET /api/invoices/INV-2201/attachment?file=../../../etc/passwd
2HTTP/2 200
3root:x:0:0:root:/root:/bin/bash

The handler joins the query parameter onto the upload directory without normalising it:

src/invoices/attachments.ts: 22 - 26
22export async function download(req, res) {
23 const invoice = await findInvoice(req.params.id);
24 const filePath = path.join(UPLOAD_DIR, req.query.file);
25 return res.sendFile(filePath);
26}
Fix

Een fix in je eigen stijl.

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.

  • Pas de diff aan of laat bestanden weg voordat je hem opent
  • Een pull request of merge request op een eigen branch
Fixes en pull requests
1 of 1 file included · +3 −1Branch fix/invoice-attachment-path · base main Open PR
src/invoices/attachments.ts: +3 −1
2+import { safeJoin } from "../lib/fs";
2223export async function download(req, res) {
2324 const invoice = await findInvoice(req.params.id);
24− const filePath = path.join(UPLOAD_DIR, req.query.file);
25+ const filePath = safeJoin(UPLOAD_DIR, req.query.file);
26+ if (!filePath) return res.status(404).end();
2527 return res.sendFile(filePath);
Re-test after the mergeChecks F-7BB9DDDE with the configuration it ran with.
02 / Wat de broncode toevoegt

Zes dingen die je alleen met de broncode krijgt.

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.

01

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.

02

Het bestand en de regel waar het misgaat

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.

03

Logica die je van buitenaf niet ziet

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.

04

Secrets die per ongeluk zijn gecommit

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.

05

Wat je dependencies echt binnenhalen

De pakketversies die je echt uitrolt, gecontroleerd op bekende kwetsbaarheden, in plaats van een lijstje dat aan het begin van een traject is gemaakt.

06

Een fix in je eigen codestijl

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.

03 / Black, grey, white

Wat elke variant meekrijgt.

Alle drie gebruiken dezelfde agent, met dezelfde eisen aan bewijs. Het verschil is hoeveel hij zelf moet afleiden.

Black box

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.

Grey box

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.

White box

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.

04 / Vragen

Veelgestelde vragen.

klaar wanneer jij dat bent

Koppel je repository. Krijg de exacte regel, geen gok.

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.