Twee weken geleden schreef ik over wat AI-code je kost nadat hij geschreven is. Een van de cijfers in dat stuk kwam van Veracode: in hun meting uit 2025 introduceerde 45 procent van de gegenereerde code een bekend beveiligingslek. Op 29 oktober publiceerde Veracode een nieuwe editie, en de kop is opvallend positief. Voor het eerst sinds ze in juli 2025 begonnen, zien ze een stap vooruit die ertoe doet.
Dat wilde ik niet uit een samenvatting overnemen.
Wat er gemeten is
Veracode liet 18 taalmodellen programmeeropdrachten uitvoeren in Python, C#, JavaScript en Java, en toetste de uitkomst op vier soorten lekken: SQL-injectie, zwakke cryptografie, cross-site scripting (XSS) en log injection. De opdrachten bevatten geen beveiligingsinstructie. Het model krijgt dus een gewone vraag, en Veracode kijkt of er een gat in het antwoord zit.
Hoeveel opdrachten er per taal en per categorie waren, staat niet in de blog en niet in het persbericht. Dat maakt het lastig om te zien hoe zwaar een verschuiving van een paar procentpunten weegt.
De koppen uit het persbericht: het gemiddelde slagingspercentage ging volgens Veracode van 56 naar 62 procent, en het aandeel opdrachten met een lek daalde van 44 naar 38 procent. Claude Opus 5.5 en GPT-6-Sol delen de eerste plaats met 73 procent. De onderkant van de lijst ligt nog altijd tussen 44 en 50 procent.
Deze site wordt gebouwd met Claude Code, en Opus 5.5 is het model dat ik daarvoor gebruik. De topscore is dus ook een goede score voor mijn eigen gereedschap. Dat maakt hem niet onwaar, maar het is wel een reden om de rest van het rapport extra goed te lezen.
Waar de winst zit
Veracode schrijft zelf dat de verbetering niet gelijk verdeeld is. Per categorie, juli tegenover oktober:
| Soort lek | Juli 2026 | Oktober 2026 | Beweging |
|---|---|---|---|
| Zwakke cryptografie | 87% | 87,4% | vlak |
| SQL-injectie | 83% | 83,7% | vlak |
| Cross-site scripting (XSS) | 15% | 18% | omhoog |
| Log injection | 12% | 12,6% | vlak |
Twee categorieën zaten al hoog en bleven daar. Van de twee zwakke categorieën ging er één omhoog en bleef de ander liggen. Dat verschil is het nieuws.
XSS ontstaat als je onbetrouwbare tekst in een webpagina zet zonder die eerst onschadelijk te maken. De oplossing is bijna altijd hetzelfde patroon: gebruik textContent in plaats van innerHTML, of laat een template-engine het escapen voor je doen. Moderne frameworks doen dat standaard. Een model dat genoeg recente code heeft gezien, kiest dus vaker vanzelf de veilige weg. Veracode noemt het letterlijk patroonherkenning.
Log injection werkt anders. Daar gaat het erom of invoer van een gebruiker, via een paar functies en misschien een database, ongefilterd in een logbestand belandt. Er is geen veilige functie die je kunt aanroepen. Je moet de route van de data volgen door de hele applicatie. Volgens Veracode staat die categorie in elke meting van de reeks rond de 12 procent, zonder enig herstel.
Chris Wysopal van Veracode zei het tegen TechTarget zo: een model moet weten welke invoer van de gebruiker komt en waar die heen gaat. De winst op XSS bewijst dat volgens hem nog niet.
Het cijfer dat ik niet rond krijg
Bij het nalezen liep ik vast op de rekensom. Het gemiddelde van 62 procent klopt met het leaderboard: tel de 18 scores op en deel door 18, dan kom je op 62,1. Maar de uitsplitsingen in dezelfde blog komen lager uit. De vier categorieën gemiddeld geven 50,4 procent, de vier talen 52,9 procent.
Daar kan een goede verklaring voor zijn, zoals een andere weging of een ander aantal opdrachten per categorie. Die staat er alleen niet bij.
In juli testte Veracode 11 modellen, nu 18. Een gemiddelde over een andere groep modellen vergelijken met het vorige gemiddelde zegt iets over het veld, maar niet per se dat dezelfde modellen beter zijn geworden. Een deel van de sprong kan komen doordat er nieuwe, sterkere modellen bij zijn gekomen. En een stijging van drie punten in één van de vier categorieën verklaart bij gelijke weging nog geen punt op het totaal. Ik kan de kop dus niet helemaal laten aansluiten op de tabellen eronder.
Dat maakt het rapport niet waardeloos. De richting is overal hetzelfde en Veracode schrijft zelf dat de kop een sterretje nodig heeft. Maar “zes procentpunt veiliger” is een minder hard getal dan het in een kop lijkt.
Wat dit in mijn eigen code betekent
Na het lezen heb ik de code van deze site op precies die twee patronen doorzocht.
De zoekfunctie, op 17 oktober gebouwd, zet zoekresultaten in de pagina met textContent, op één plek na. Daar staat innerHTML, met een regel commentaar dat de zoekbibliotheek de tekst zelf escapet en alleen het zoekwoord markeert. Dat is het veilige patroon als standaard, met één bewuste uitzondering. Het is ook een aanname over een bibliotheek van iemand anders, en dat soort aanname ziet geen enkele test van Veracode.
De worker die inschrijvingen voor de wachtlijst opslaat, logt bij een fout alleen de foutmelding en niet het ingevulde adres. Het adres moet bovendien door een controle die spaties en regeleinden weigert. Log injection kan daar dus niet. Maar dat weet ik omdat ik de route van het adres heb gevolgd, en dat is precies het werk waar de modellen volgens dit rapport niet beter in worden.
De kanttekening
De veiligste code komt van het duurste model. Veracode ziet voor het eerst dat grotere modellen beter scoren: gemiddeld 55 procent tegen 51 voor kleine. Wie veilige code wil zonder er zelf naar te kijken, betaalt daar per token voor. Daarmee verschuift beveiliging van iets wat je doet naar iets wat je inkoopt, en dat is een keuze die de meeste mensen niet bewust maken.
De verantwoordelijkheid verschuift naar het deel dat niet beter wordt. Als het model de makkelijke lekken steeds vaker vanzelf voorkomt, blijven voor de mens juist de moeilijke over: de datastroom door vijf functies, de aanname over een bibliotheek. Een reviewer die ziet dat de bekende fouten weg zijn, kijkt minder scherp. Dan landt het lastigste werk bij de persoon die het minst alert is.
Wie het meet, verkoopt de oplossing. Veracode verkoopt scanners. In dezelfde blog staat de conclusie dat een middelmatig model plus hun scanner beter is dan een topmodel zonder controle. Dat kan waar zijn, maar het rapport is ook een verkoopargument, en de weging achter het hoofdcijfer is niet gepubliceerd.
Wat ik zelf doe
Ik behandel dit rapport niet als reden om minder te controleren. De zeven controles die deze site voor elke deploy draait, kijken naar tekst, cijfers en planning. Geen ervan kijkt naar beveiliging. Dat was een bewuste keuze voor een statische site, maar met een wachtlijst en een zoekfunctie erbij is de site niet meer helemaal statisch.
Wat ik wel doe bij elke wijziging die invoer van buiten aanneemt: de route van die invoer volgen tot waar hij eindigt, en elke uitzondering op het veilige patroon voorzien van een regel commentaar waarom. Die regel schrijf ik voor mezelf, over een half jaar.
Veelgestelde vragen
Is AI-code nu veilig genoeg om zonder review te gebruiken?
Nee. Ook het beste model in deze meting maakt in meer dan een kwart van de opdrachten een lek, en gemiddeld zit er in bijna vier op de tien opdrachten een. De verbetering zit bovendien vooral in het soort lek dat al het makkelijkst te vinden was.
Helpt het om het model om veilige code te vragen?
Veracode testte expres zonder beveiligingsinstructie, dus dit rapport zegt daar niets over. Het zegt wel iets over de standaard: wat je krijgt als je het niet vraagt. Voor log injection helpt een instructie waarschijnlijk minder, omdat het model daarvoor de hele route van de data moet overzien.
Waarom scoort Java zo veel slechter?
Java staat volgens Veracode op 31 procent, tegen 57 tot 64 voor de andere drie talen. Het rapport geeft daar geen sluitende verklaring voor. Het noemt hetzelfde patroon als bij log injection: de verbetering houdt op waar patroonherkenning ophoudt.
Bronnen
- Veracode, “GenAI Code Security Fall 2026: The Ceiling Moves, But on the Low-Hanging Fruit”, blog van 29 oktober 2026.
- Veracode, persbericht “Veracode Finds First Meaningful Gain in AI Code Security Since 2025 as Average Pass Rate Hits 62%”, 29 oktober 2026.
- TechTarget, “Secure code: LLMs improve, but orgs can’t rely on AI for AppSec”, 29 oktober 2026.
- Veracode, “2025 GenAI Code Security Report”, blog van 30 juli 2025 (de meting uit mijn stuk van 19 oktober).
Gecontroleerd op 30 oktober 2026, bij de blog en het persbericht van Veracode zelf. Wat ik niet heb kunnen verifiëren: het aantal opdrachten per categorie en de weging achter het gemiddelde van 62 procent, want die staan in geen van beide. De rekensommen in de paragraaf over het cijfer dat ik niet rond krijg zijn van mij, gemaakt op de tabellen uit de blog. Of de zoekbibliotheek op deze site de tekst inderdaad zelf escapet, heb ik niet in de broncode van die bibliotheek nagekeken. Veracode is de leverancier van een beveiligingsscanner en heeft er belang bij dat AI-code gecontroleerd moet worden.
