Zo controleren we, en waarom je elke bevinding kunt nakijken

Elke bevinding in je werkplek wijst naar zijn bewijs: een bestand en een regel, een scanresultaat of een CI-rapport bij een commit. Hier lees je hoe dat tot stand komt, wat onze eigen tests daarover bewijzen, en wat nog niet bewezen is.

Bijgewerkt op

Eerst vaste scans, zonder AI

Erkende open-source scanners in een vaste versie lezen je repository: gitleaks voor geheimen in code en geschiedenis, osv-scanner voor kwetsbare en kwaadaardige onderdelen uit je lockfiles, semgrep en bandit voor riskante code, hadolint en trivy voor Dockerfiles en configuratie, lizard en scc voor complexiteit en omvang. Dezelfde code geeft dezelfde uitkomst: dat is bij ons een test, geen belofte.

Daarnaast lezen vaste tools je git-geschiedenis: hoe oud, hoe actief, hoeveel mensen, en of het meeste werk van één persoon komt. Een gevonden geheim wordt gemeld met bestand, regel en soort, nooit met de waarde.

Dan leest een AI-model de code, en wij controleren elke bewering

Een AI-model leest de code alleen lezend, deel voor deel, en levert wat het vindt in als beweringen. Niet het model bepaalt wat je ziet, onze code wel: elke bewering gaat door twaalf vaste regels voordat hij in je werkplek komt. Wat een regel afwijst, gaat één keer terug naar het model en daarna naar ons team, nooit naar jou. Een paar van die regels:

  • Het bestand en de regel bestaan, en het citaat staat er echt
  • Een naam in de bewering, zoals een functie, een pakket, een instelling of een route, bestaat in je code
  • Een bewering dat iets ontbreekt, controleren we opnieuw met een zoekopdracht
  • Een document dat veel ouder is dan de code die het beschrijft, mag niet actueel heten
  • Een bewering met een geheim, een link of een instructie aan de lezer erin wordt afgewezen
  • Het model moet de bestanden waarover het spreekt echt geopend hebben; dat loggen wij, niet het model

Elke geautomatiseerde controle bewijst zichzelf

Een geautomatiseerde controle van ons bestaat pas als hij zichzelf kan bewijzen: een geplante testcase waarin het probleem zit en de controle het moet vinden, en een schone testcase waarin hij niets mag vinden. Die tests draaien elke nacht en voordat iets van ons naar productie gaat. Verdwijnt zo'n testcase, dan faalt die ronde.

De catalogus telt vandaag 275 controles, verdeeld over twaalf onderdelen. Niet elke controle is even ver: een deel heeft nog geen eigen testcase en staat op een gedateerde lijst van uitzonderingen die alleen korter mag worden. De documentatiecatalogus valt er nog buiten.

Code
12 controles
Beveiliging
80 controles
Wet- en regelgeving
2 controles
Documentatie
127 controles
Kwaliteit
9 controles
Optimalisatie
7 controles
Architectuur
5 controles
Onderhoudbaarheid
10 controles
Data
12 controles
Continuïteit
2 controles
Proces en oplevering
6 controles
AI-risico's
3 controles

Wat je ziet, en wat je nooit ziet

Elke controle krijgt een woord met een icoon, nooit alleen een kleur: door jullie getest en door ons gecontroleerd, door jullie gemeld en niet gecontroleerd, niet bewezen of gefaald, niet van toepassing. Een onderdeel waarin niets gemeten is, is nooit groen.

  • Wat je ziet: bij elke bevinding het bestand en de regel, de commit, het scanresultaat of het CI-rapport
  • Wat je nooit ziet: de waarde van een geheim. Die tonen we niet en sturen we nooit naar een AI-model
  • Wat wij nooit doen: je code wijzigen of een bevinding repareren. Je tests draaien we in de pilot niet; verandert dat, dan staat het eerst in de voorwaarden. Jullie bepalen wat je oplost
  • Wat je zelf kunt: elke bevinding nakijken op de plek die hij noemt, hem betwisten met een reden, of hem als aanvaard risico markeren. Een geheim kun je nooit wegfilteren

Wat nog niet bewezen is

Niet alles wat we doen, is al even hard bewezen. Dit is de stand:

  • De documentatiecatalogus, welk document aanwezig, dun of ontbrekend is, bepaalt het model aan de hand van bestandsnamen en de regels hierboven. De eerste meting op onze eigen goudset staat gepland; tot dan is dit ons minst harde onderdeel
  • Hoe vaak een controle iets mist, is niet gemeten. We weten dat elke controle zijn geplante geval vindt, niet hoe vaak hij een variant mist. Een meting op openbare, met opzet kwetsbare projecten is de volgende stap
  • We vinden niet alles. Dat iets niet bij de bevindingen staat, betekent niet dat het in orde is. Een controle is een momentopname en geen certificaat; zo staat het ook in onze voorwaarden

Vragen die we vaak krijgen

Wat als het model iets verzint?

Dan komt het niet in je werkplek. Een bewering telt pas als onze code hem heeft nagekeken op de plek die hij noemt. Een bewering die klopt maar over een verouderd document gaat, kan er wel doorheen; daarom hebben we een goudset met bekende antwoorden gebouwd; de eerste meting daarop staat gepland.

Ziet het AI-model onze geheimen?

Nee. De scanner vindt ze; we tonen de waarde niet en sturen hem nooit naar een AI-model. Bestanden zoals .env staan op een uitsluitlijst en zitten niet in de kopie die het model leest. Onze eigen tests planten een geheim en controleren dat het de scan niet verlaat.

Kunnen we een bevinding zelf nakijken?

Ja, dat is de bedoeling. Elke bevinding noemt het bestand en de regel, de commit, het scanresultaat of het CI-rapport. Klopt hij niet, dan betwist je hem in je werkplek met een reden. Een geheim kun je niet wegfilteren.

Vinden jullie alles?

Nee. Onze tests bewijzen dat elke controle het probleem vindt waarvoor hij is geschreven, niet dat er geen andere problemen zijn. Dat zeggen we ook in onze voorwaarden.

Hoe verschilt dit van de scanners in onze eigen pipeline?

Vaak draaien dezelfde open-source scanners daar al, en dat is goed. Wij draaien ze in een vaste versie, zetten de uitkomst met zijn bewijs naast je tests, je documentatie en je architectuur, en laten per rol zien wat bewezen is.

Aanmelden voor de pilot

De pilot is op uitnodiging. Meld je aan, dan kijken we of je applicatie past en mailen we je. Je koppelt je repository met leesrechten, de eerste controle start vanzelf, je ziet wat er gecontroleerd en bewezen is, en daarna vragen we wat het je waard is. Heb je eerst een vraag? Stel hem in het bericht hieronder.

Ons team

Leest elke aanmelding en elke vraag

Ons team leest wat je stuurt en antwoordt per mail. Een gesprek volgt alleen als je erom vraagt: met de mensen die het werk doen, niet met een verkoper.

We gebruiken je gegevens alleen om op je aanmelding te reageren. De website slaat je aanvraag niet op.