Een review van een AI-gebouwd product is zo bruikbaar als het code audit-rapport waarmee de review eindigt. Op dat rapport baseert een founder zijn beslissing, het rapport gaat door naar het securityteam van een zakelijke klant en het belandt bij wie de code herstelt. Een rapport dat die drie taken niet aankan, laat de review onaf.

Dit artikel laat zien wat een goed code audit-rapport voor een AI-product bevat: de acht secties, de negen velden van één bevinding, hoe de ernst wordt bepaald en hoe u een beslisklaar rapport onderscheidt van een scannerexport. Voor de bredere route van prototype naar live product leest u de founder-gids over AI-gegenereerde code in productie.

TL;DR

Een code audit-rapport is het schriftelijke resultaat van een onafhankelijke review van de broncode, configuratie en technische opzet van een product: elke bevinding met bewijs en ernst, gerangschikt in een herstelvolgorde, met een overdracht waarmee een engineer aan de slag kan. Bij een AI-gebouwd product laat het rapport ook zien welke code niemand in het team kan uitleggen en wat het product naar AI-modellen stuurt.

  • Acht secties vormen een volledig code audit-rapport: samenvatting en oordeel, scope en grenzen, product- en architectuuroverzicht, bevindingen, risico-overzicht, afhankelijkheden en licenties, geprioriteerd actieplan, en technische overdracht met bewijs.
  • Negen velden beschrijven elke bevinding: ID, titel in gewone taal, ernst met reden, categorie, locatie, bewijs, zakelijke impact, oplossing met inspanning, en status.
  • Vijf ernstniveaus rangschikken de bevindingen, van Critical (herstellen vóór de lancering) via High, Medium en Low tot Informational; securitykwetsbaarheden kunnen met CVSS v4.0 worden gescoord als dat framework van toepassing is, andere bevindingen krijgen een onderbouwde inschatting van waarschijnlijkheid en impact.
  • Drie signalen onderscheiden een beslisklaar rapport van een scannerexport: gereproduceerd bewijs per bevinding, zakelijke impact in gewone taal, en een herstelvolgorde die is afgestemd op uw lancerings- of contractdatum.

Wat is een code audit-rapport?

Een code audit-rapport is het document dat een onafhankelijke reviewer oplevert na het lezen van de broncode, configuratie en deployment-opzet van een product. Het rapport noemt elke bevinding met bewijs, rangschikt de bevindingen op ernst, legt een herstelvolgorde vast en geeft engineers genoeg detail om te beginnen. Wat de reviewer controleert en hoe de opdracht verloopt, staat in AI code audit.

Drie lezers gebruiken hetzelfde rapport voor verschillende beslissingen. De founder of COO leest de samenvatting en het oordeel om te besluiten over lanceren, een klant tekenen of financiering ophalen. De technisch lead of freelancer leest de bevindingen en de overdracht om het herstelwerk te plannen. Een zakelijke klant of investeerder ziet meestal de samenvatting, de scope en de status van het herstel, niet elke bevinding.

Een code audit-rapport is geen certificaat en geen stempel “goedgekeurd” of “afgekeurd”. Het rapport beschrijft de staat van de code op een genoemde datum en commit, binnen een genoemde scope. Wat buiten die scope valt, is niet beoordeeld, en dus ook niet goedgekeurd.

Wat een code audit-rapport voor een AI-product bevat: acht secties

Wat een code audit-rapport voor een AI-product bevat: acht secties

Een code audit-rapport voor een AI-product bevat acht secties, en elke sectie beantwoordt een andere vraag voor een andere lezer. Secties 4 en 5 bevatten de bevindingen, sectie 7 maakt er een geprioriteerd actieplan van en sectie 8 is de technische overdracht: de drie onderdelen die een review belooft, in de volgorde waarin een lezer ze nodig heeft.

#SectieVraag die de sectie beantwoordtGelezen door
1Samenvatting en oordeelKunnen we lanceren, verkopen of overdragen, en wat moet eerst gebeuren?Beslisser
2Scope, methode en grenzenWat is beoordeeld (repositories, commit, omgevingen, tools), en wat niet?Beslisser, klant
3Product- en architectuuroverzichtHoe is het product gebouwd: modules, datastromen, externe diensten, AI-tools en AI-modellen?Technisch lead
4BevindingenWat is er mis, waar, hoe weten we dat, en hoe ernstig is het?Technisch lead
5Risico-overzichtHoeveel bevindingen per ernstniveau en per gebied, en waar clusteren ze?Beslisser
6Afhankelijkheden en licentiesWelke externe pakketten hebben bekende kwetsbaarheden, onderhouds- of licentierisico?Technisch lead, juridisch
7Geprioriteerd actieplanWat herstellen we nu, wat vóór de lancering, en wat later?Beide
8Technische overdracht en bewijsbijlageWat heeft een engineer of AI-codingtool nodig om elke bevinding te herstellen, en hoe wordt herstel bevestigd?Engineer
Tabel 1. De acht secties van het rapport, de vraag die elke sectie beantwoordt en wie ze leest

Sectie 2 slaan founders vaak over, terwijl die sectie het zwaarst weegt als er later iets misgaat. Een rapport zonder lijst van wat buiten de scope viel, laat niet-beoordeelde delen van het product veilig lijken. Wij raden aan een code audit-rapport zonder grenzenparagraaf te weigeren, omdat de grenzen bepalen wat u een klant eerlijk over de review kunt vertellen.

Het oordeel in sectie 1 is waar rapporten het meest verschillen. Een lanceringsoordeel hoort de voorwaarden te noemen waaraan eerst moet worden voldaan, en een checklist voor productiegereedheid laat zien wat die voorwaarden meestal omvatten; een structurele beslissing om te behouden, te refactoren of opnieuw te bouwen volgt refactor or rewrite. Het rapport hoort te vermelden op welke van de twee beslissingen het oordeel antwoordt.

Secties 2 en 4 beantwoorden ook de leveranciersvragenlijsten van zakelijke klanten, die vaak vragen hoe code wordt getoetst aan secure coding: de maatregel die ISO/IEC 27001:2022 noemt als Annex A 8.28.

Wat AI-gebouwde producten aan het rapport toevoegen

Een AI-gebouwd product heeft vier rapportonderdelen nodig die een klassieke code audit vaak overslaat: de AI-tool-voetafdruk, de kwaliteit van gegenereerde tests, controle van afhankelijkheden en licenties, en de risico’s van modelaanroepen wanneer het product tijdens gebruik een AI-model aanroept. Die onderdelen bestaan omdat AI-codingtools veranderen waar problemen zich verstoppen, niet omdat de tools slecht zijn.

AI-tool-voetafdruk en code die niemand kan uitleggen

Waar ontwikkelgegevens beschikbaar zijn, kan het rapport aangeven welke code met AI-hulp is geschreven of ingrijpend is gewijzigd. Belangrijker is dat het rapport modules markeert met onduidelijk eigenaarschap, dubbele logica, onvoldoende tests of ongedocumenteerd gedrag. Code uit losse prompts herhaalt vaak dezelfde regel net iets anders, zoals twee prijsberekeningen, en een latere wijziging herstelt één kopie en mist de andere.

Als de herkomst van een module niet is vast te stellen, legt het rapport die beperking vast in plaats van te raden welke tool de code heeft gemaakt. Eigenaarschap, tests en documentatie bepalen hoe riskant de volgende wijziging is; de naam van de tool doet dat niet.

Tests die slagen maar niets testen

Het aantal tests en het dekkingspercentage zijn zwak bewijs in een AI-gebouwd product, omdat dezelfde AI-tool vaak zowel de code als de tests heeft geschreven. Een goed rapport vermeldt per kritieke flow, zoals aanmelden, betalen en rechten, of er een test bestaat die faalt als het gedrag verkeerd is. Een test die alleen controleert dát een functie is aangeroepen, blijft groen terwijl de uitkomst fout is.

Afhankelijkheden en licenties

AI-codingtools voegen snel externe pakketten toe, ook pakketten die niet meer worden onderhouden, kwetsbaar zijn of een licentie hebben die botst met hoe het product wordt verkocht. OWASP Top 10:2025 noemt Software Supply Chain Failures als categorie A03. De sectie afhankelijkheden hoort externe componenten, versies, licenties en relevante relaties in de toeleveringsketen te benoemen.

Een software bill of materials (SBOM) geeft een gestructureerde inventaris van die componenten, terwijl een afhankelijkheidsanalyse bekende kwetsbaarheden, onderhoudsstatus en aanbevolen acties toevoegt. De 2026 Minimum Elements for a Software Bill of Materials, gepubliceerd door CISA en partnerinstanties, is een referentie voor de inventarisgegevens, geen vervanging van een securitybeoordeling.

Producten die tijdens gebruik een AI-model aanroepen

Een product met AI-functies, zoals een supportassistent, zoeken in documenten of gegenereerde samenvattingen, heeft een rapportsectie over zijn modelaanroepen nodig. De term “AI-product” dekt zowel een app die met AI-tools is gebouwd als een app met AI-functies; het verschil en het effect op de kosten staan in kosten van AI-appontwikkeling.

Drie controles horen in die sectie. Prompt injection, als LLM01:2025 opgenomen in de OWASP Top 10 for LLM Applications, gaat over tekst van gebruikers of documenten die verandert wat het model doet. Unbounded consumption, LLM10:2025, gaat over modelaanroepen zonder limiet die uitlopen op storingen of een onbeheerste modelrekening.

De datastroomcontrole legt vast welke persoonsgegevens de modelaanbieder bereiken, voor welk doel en onder welke contractuele afspraken. Treedt de aanbieder op als verwerker namens u, dan vereist de AVG artikel 28 een passende verwerkersovereenkomst, en artikel 32 vereist beveiligingsmaatregelen die passen bij het risico. Het rapport hoort ontbrekende maatregelen of afspraken te benoemen, in plaats van aan te nemen dat elke modelaanbieder dezelfde rol voor gegevensbescherming heeft.

Voor AI-systemen die bedoeld zijn om rechtstreeks met mensen te communiceren, vereist artikel 50, lid 1, van de EU AI-verordening in de regel dat gebruikers worden geïnformeerd dat zij met AI communiceren, tenzij dat al duidelijk is uit de context. De transparantieverplichtingen gelden sinds 2 augustus 2026. Een rapport hoort te controleren of de interface van het product aan de toepasselijke eis voldoet, in plaats van aan te nemen dat elke AI-functie dezelfde melding nodig heeft.

Anatomie van één bevinding: negen velden

Eén bevinding in een code audit-rapport hoort negen velden te hebben, zodat een founder kan beslissen en een engineer kan handelen zonder extra overleg. De bevinding, niet het aantal pagina’s, is wat het rapport waardevol maakt.

VeldInhoudWaarom de founder het nodig heeft
IDEen unieke referentie, bijvoorbeeld F-07Herstel volgen en bespreken in de toelichting
TitelEén zin in gewone taal: wat kan er misgaanDe bevinding begrijpen zonder code te lezen
ErnstCritical, High, Medium, Low of Informational, met een reden in één regelZien wat de lancering blokkeert
CategorieOWASP Top 10:2025- of OWASP LLM 2025-ID voor security; anders “engineeringkwaliteit”De bevinding koppelen aan vragenlijsten van klanten
LocatieBestand, endpoint, configuratie of dienstDe engineer kan direct beginnen
BewijsReproductiestappen of een testresultaatToont aan dat het probleem echt is, geen gok van een scanner
Zakelijke impactEffect op gebruikers, persoonsgegevens, geld of contractenDe bevinding afwegen tegen de lanceringsdatum
Oplossing en inspanningDe aanbevolen wijziging, ingeschat als S, M of LPlannen wie het werk doet en wanneer
StatusOpen, hersteld, deels hersteld of geaccepteerd risico, met een hertestdatumVoortgang tonen aan klanten en investeerders
Tabel 2. De negen velden van een bevinding

Geautomatiseerde scannerexports kunnen ernst, status en algemene impactbeschrijvingen bevatten. Een beslisklaar rapport voegt gevalideerd bewijs toe, legt het effect uit op de echte gebruikers en workflows van het product, en bepaalt een herstelvolgorde ten opzichte van zakelijke mijlpalen.

Voorbeeldbevinding 1: security (illustratief, geen klantgegevens)

VeldInhoud
IDF-03
TitelIedereen met een gratis account kan de AI-supportassistent onbeperkt gebruiken
ErnstHigh (illustratieve ernstinschatting, geen berekende CVSS-score) — eenvoudig uit te lokken met een simpel script; impact op kosten en beschikbaarheid; geen blootstelling van gegevens vastgesteld
CategorieOWASP LLM10:2025 Unbounded Consumption
LocatiePOST /api/assistant/chat; de model-API wordt vanaf de server aangeroepen zonder quotum per gebruiker
BewijsEen script, ingelogd als gratis testgebruiker, verstuurde 500 verzoeken in tien minuten. Elk verzoek werd beantwoord, en er sloeg geen rate limit, quotum of kostenalarm aan.
Zakelijke impactDe modelaanbieder rekent per token af, dus één misbruikt account bepaalt de hoogte van de maandrekening. Bereikt de aanbieder zijn eigen gebruikslimiet, dan stopt de assistent voor alle klanten.
Oplossing en inspanningEen rate limit en daglimiet per gebruiker op het endpoint, een kostenplafond en alarm bij de modelaanbieder, en een blokkade voor gratis accounts die de limiet blijven raken. Inspanning: S.
StatusOpen — hertest na herstel

Voorbeeldbevinding 2: engineeringkwaliteit (illustratief, geen klantgegevens)

VeldInhoud
IDF-11
TitelBetaaltests slagen ook als terugbetalingsbedragen fout zijn
ErnstMedium (illustratief) — geen securityrisico; de inschatting hangt af van het aantal getroffen terugbetalingen, de bedragen en de werkelijke impact op klanten, en stijgt als een daarvan groot is
CategorieEngineeringkwaliteit (testdekking)
Locatietests/checkout/ en de module voor terugbetalingen
BewijsDe 42 checkouttests vervangen de betaalprovider door een mock (een nabootsing) en controleren alleen dat de terugbetalingsfunctie is aangeroepen. Na het wijzigen van de afronding van twee decimalen naar nul bleven alle 42 tests groen.
Zakelijke impactEen fout in een terugbetaling bereikt klanten en de financiële afdeling voordat een test faalt. Het eerste signaal is een klacht van een klant of een verschil in de maandafsluiting.
Oplossing en inspanningContracttests tegen de sandbox van de betaalprovider voor drie flows (betaling, gedeeltelijke terugbetaling, volledige terugbetaling) die bedragen en valuta controleren. Inspanning: M.
StatusOpen

De twee voorbeelden laten zien waarom een rapport beide soorten bevindingen nodig heeft. Een securityscanner zou F-03 alleen melden als hij het zakelijke doel van het endpoint kende, en geen enkele securityscanner zou F-11 melden.

Wilt u bevindingen zoals deze voor uw eigen product?

Een AI-built product review legt elke bevinding uit in begrijpelijke taal, met het bewijs erachter en het effect op uw product, en maakt van de bevindingen een geprioriteerd actieplan waar uw team of uw AI-codingtool mee verder kan. Engineering en security worden samen beoordeeld, dus u krijgt één herstelvolgorde in plaats van twee rapporten die elkaar tegenspreken.

→ Bekijk wat de AI-built product review omvat

Hoe de ernst in een code audit-rapport wordt bepaald

De ernst in een code audit-rapport beschrijft hoe serieus een bevinding is, op vijf niveaus van Critical tot Informational. Securitykwetsbaarheden kunnen met CVSS v4.0 worden gescoord als dat framework van toepassing is: de CVSS v4.0-specificatie van FIRST noemt scores van 0,1–3,9 Low, 4,0–6,9 Medium, 7,0–8,9 High en 9,0–10,0 Critical. Andere bevindingen, zoals engineeringkwaliteit, operationele zwakke plekken en fouten in bedrijfslogica, vragen om een onderbouwde ernstinschatting op basis van waarschijnlijkheid, impact en de getroffen gebruikers of workflows.

ErnstBetekenisVoorbeeld bij een AI-productIllustratieve herstelprioriteit
CriticalNu misbruikbaar, of breekt een kernflow voor alle gebruikersKlantgegevens leesbaar zonder in te loggen; geheime sleutel van een betaalde dienst in de front-endcodeVóór de lancering; eerst de blootstelling indammen
HighErnstig en bereikbaar, met beperkte voorwaardenEen klantaccount kan de gegevens van een ander account openen; AI-endpoint zonder limieten (F-03)Vóór de lancering of de volgende zakelijke deal
MediumReëel risico onder specifieke voorwaarden, of fout gedrag met een workaroundTests die betaalfouten niet kunnen vangen (F-11); geen afhandeling bij een storing van een externe dienst (OWASP A10:2025)Binnen de volgende één of twee releases
LowBeperkte impact of moeilijk uit te lokkenUitgebreide foutmeldingen in productie; verouderd pakket zonder bekend misbruikpadGeplande backlog
InformationalGeen direct risico; een opmerking over kwaliteit of onderhoudbaarheidDubbele logica in meerdere modules; ontbrekende architectuurnotitiesBij de volgende wijziging van de module
Tabel 3. Ernstniveaus voor een AI-product, met voorbeelden en een illustratieve herstelprioriteit

Ernst beschrijft hoe serieus een bevinding is. Prioriteit bepaalt wat eerst wordt hersteld, op basis van ernst, misbruikbaarheid, zakelijke afhankelijkheden en komende mijlpalen. Een Medium-bevinding die de securityvragenlijst van een zakelijke klant blokkeert, mag terecht vóór een High-bevinding in een intern beheerscherm komen.

Andersom werkt prioriteit nooit: een probleem dat de lancering blokkeert, wordt niet aanvaardbaar door het alleen een latere streefdatum te geven. De herstelprioriteiten in tabel 3 zijn voorbeelden, geen vaste wachttijden voor elke bevinding op dat niveau.

Een code audit-rapport lezen als u niet technisch bent

Een niet-technische founder leest een code audit-rapport in vijf stappen, zonder code te lezen. De eerste twee stappen laten zien of de rest van het rapport uw plannen verandert.

  1. Lees het oordeel en de lijst “herstellen vóór de lancering” in sectie 1.
  2. Lees de titel en zakelijke impact van elke Critical- en High-bevinding; sla locatie en bewijs voorlopig over.
  3. Lees de grenzen in sectie 2 en noteer wat u niet tegen klanten kunt beweren.
  4. Leg het actieplan naast uw echte data: lancering, zakelijk contract of financieringsronde.
  5. Controleer of elk “nu herstellen”-punt een eigenaar met naam aan uw kant heeft.

Vijf vragen maken de toelichting met de reviewer nuttig:

  • Welke ene bevinding zou u tegenhouden om te lanceren als dit uw product was?
  • Wat heeft u niet beoordeeld, en is dat gat belangrijk voor onze volgende mijlpaal?
  • Welke bevindingen heeft u gereproduceerd, en welke zijn risico’s die nog onderzocht moeten worden?
  • Welke bevindingen kunnen veilig drie maanden wachten?
  • Hoe wordt bevestigd dat een herstel is afgerond?

Wie na het rapport wat herstelt, en wanneer een bevinding als afgerond geldt, staat in de sectie over de periode na de audit in AI code audit.

Een goed rapport onderscheiden van een scannerexport

Een beslisklaar code audit-rapport verschilt op acht zichtbare punten van een scannerexport, en alle acht kunt u in een voorbeeldrapport controleren voordat u een review tekent.

SignaalScannerexport of zwak rapportBeslisklaar rapport
BewijsPatroonherkenning, geen bewijs dat het probleem bereikbaar isReproductiestappen of een testresultaat per bevinding
Zakelijke impactAlgemene risicotekst per regelImpact op uw gebruikers, gegevens, geld of contracten
DubbelingenHetzelfde probleem één keer per bestand vermeldGebundeld in één bevinding met alle locaties
False positivesBlijven in de lijst staanVerwijderd, of gemarkeerd als “niet bevestigd” met de reden
GrenzenNiet vermeldGebieden buiten de scope opgesomd
HerstelvolgordeGesorteerd op toolscoreGeprioriteerd ten opzichte van uw data
SamenvattingGeen, of alleen een grafiekEen oordeel in gewone taal op pagina één
HertestpadGeenStatusveld en hertestlog
Tabel 4. Scannerexport of zwak rapport tegenover een beslisklaar rapport

Geautomatiseerde scans blijven input voor de review, niet de uitkomst ervan. Wij raden aan elke reviewer om één voorbeeldbevinding met alle negen velden te vragen voordat u tekent; een voorbeeld zonder bewijs of zakelijke impact voorspelt een volledig rapport zonder die velden.

Code audit-rapport, security assessment-rapport en pentestrapport vergeleken

Code audit-rapport, security assessment-rapport en pentestrapport vergeleken

Een code audit-rapport, een security assessment-rapport en een penetratietestrapport beantwoorden verschillende vragen, dus het ene kan het andere niet vervangen in een vragenlijst van een klant. NIST SP 800-115, de technische gids van het Amerikaanse National Institute of Standards and Technology voor securitytests en -beoordelingen, scheidt reviewtechnieken van technieken die kwetsbaarheden in het doelsysteem valideren, zoals penetratietesten — dezelfde grens die de twee documenten scheidt.

RapportGebaseerd opTypisch bewijsMeestal gevraagd als
Code audit-rapportBroncode, configuratie en deployment-opzet — engineering en securityBestand en regel, reproductie met testaccounts, testresultatenVóór de lancering, een zakelijke deal, due diligence of een overdracht
Security assessment-rapportBeveiligingsmaatregelen, beleid, configuratie en processen; soms zonder codereviewGaten in maatregelen ten opzichte van een framework zoals ISO/IEC 27001:2022 Annex AEen klant, auditor of verzekeraar vraagt hoe security is geregeld
PenetratietestrapportAanvallen op de draaiende applicatie of het netwerkMisbruikte paden, aanvalsketens, screenshotsEen klant of toezichthouder vraagt bewijs dat het live systeem aanvallen weerstaat
Tabel 5. Code audit-rapport, security assessment-rapport en penetratietestrapport

Voor een AI-gebouwd product vóór de lancering komt het code audit-rapport meestal eerst, omdat het engineering en security in één herstelvolgorde dekt. Gaat de vraag over hoe het live systeem standhoudt tegen een aanvaller, dan legt de penetratietestgids uit wat een pentestrapport toevoegt.

Hoe Sunbytes rapporteert over een AI-built product review

De toets voor een code audit-rapport is of een beslisser op pagina één kan handelen en een engineer op pagina tien. Die toets bepaalt hoe Sunbytes AI-gebouwde producten beoordeelt.

Sunbytes beoordeelt AI-gebouwde producten binnen een afgesproken scope die de relevante code, architectuur, security, kritieke workflows en deployment-instellingen omvat. Engineers en securityspecialisten onderzoeken hetzelfde product en maken van de bevindingen een geprioriteerd actieplan en een technische overdracht. Herstel en hercontroles kunnen volgen waar nodig, met verantwoordelijkheden en scope die apart worden afgesproken. Zo kunnen founders beslissen wat vóór de lancering moet veranderen, en krijgt hun technische team een praktisch startpunt.

Toegang tot uw code valt onder een ISO/IEC 27001-gecertificeerd managementsysteem voor informatiebeveiliging met governance vanuit Nederland, en de review steunt op meer dan 15 jaar ervaring in softwareontwikkeling en meer dan 300 opgeleverde projecten.

Wilt u dit rapportformat toegepast zien op uw eigen product? Start met een AI-built product review of bespreek uw AI-gebouwde product met ons.


Author

Thien Le Marketing Executive

Thien Le is een B2B-contentschrijver met ruim vier jaar ervaring in het maken van B2B-content voor een internationaal publiek. Haar specialisme ligt op het snijvlak waar mensen, technologie en bedrijfsvoering samenkomen. Bij Sunbytes verzorgt ze de planning, bundelt ze de kennis van HR-experts, redigeert ze en zet ze technologie in om de kwaliteit van content te verhogen. Met haar artikelen helpt ze lezers om ingewikkelde thema's te ontrafelen en biedt ze praktische handvatten voor het grensoverschrijdend werven, verlonen en aansturen van medewerkers.

Waar kunnen we je mee verder helpen?

Laat ons weten waar je aan werkt. Wij koppelen je aan de juiste Sunbytes-oplossing.

[DUTCH] Submission form (Homepage, Contact us & Service pages)

This field is for validation purposes and should be left unchanged.
(Required)
Untitled(Required)