Autonome beveiligingsagenten worden steeds beter in het vinden van bugs. Niemand heeft een goede manier om te meten hoe goed. Wijs er één op een realistisch doelwit en wat terugkomt is een rapport dat de agent over zichzelf heeft geschreven: zelfverzekerd proza, een lijst met bevindingen en geen manier om te vertellen welke daarvan zijn gebeurd. Iemand met een beveiligingsachtergrond gaat dan zitten en toetst elke claim aan het doelwit. Welke bevindingen zijn echt, welke zijn duplicaten, welke uitvindingen, en, de vraag waar niemand tijd voor heeft: wat heeft de agent nooit geprobeerd? Dat is een dag van deskundig werk voor één run. Vermenigvuldig het met drie modellen, vier promptvarianten en tien herhalingen, en de beoordelingswachtrij is langer dan het experiment.
XRanges voor AI, gebouwd door CTF.ae, bestaat voor die lus. Het implementeert realistische doelapplicaties met instrumentatie die in elke service is ingebouwd, registreert wat een agent daarin daadwerkelijk doet en scoort elke run live op vier onafhankelijke signalen. Deze walkthrough behandelt hoe het werkt, hoe een run eruit ziet vanaf de implementatie tot de vergelijking, en waar deze aan stresstests is onderworpen.
Het feedbackloopprobleem
Teams die autonome pentesting- of bugbounty-agenten bouwen, hebben de neiging een workflow te delen. Bouw een doelwit dat op een echt bedrijf lijkt, voer de agent uit, lees de output. De output is waar het fout gaat.
Een agent die zegt dat hij misbruik heeft gemaakt van een fout in de toegangscontrole, heeft deze misschien uitgebuit, heeft misschien een vleugje ervan genegeerd, of heeft het misschien verzonnen. Het rapport luidt in alle drie de gevallen identiek. In een rapport wordt ook alleen vermeld wat de agent heeft gevonden. Het zwijgt over de veertig functies die de agent nooit heeft geopend, de API die hij nooit heeft opgesomd, en de tweede bug zit op het eindpunt waar de eerste is gevonden. Dan is er de agent die een tabel verwijdert of elke API-sleutel intrekt op weg naar een bevinding. Geen enkele cliënt zou dat resultaat accepteren, en niets in een bevindingenlijst registreert dit.
Handmatige beoordeling kan één run verwerken. Het kan niet omgaan met de experimentmatrix die een AI-ingenieursteam eigenlijk nodig heeft, namelijk veel modellen, veel configuraties, veel herhalingen, eerlijk vergeleken.
Wat XRanges voor AI is
XRanges voor AI is één werkruimte voor de hele evaluatie. Het heeft twee helften.
De eerste is een bibliotheek met benchmarkdoelen. Elk is een complete applicatie, geen reeks puzzeluitdagingen: een multiservicebedrijf met zijn eigen bedrijfslogica, gezaaide gegevens, achtergrondtaken en gesimuleerd gebruikersverkeer, gebouwd in verschillende talen en raamwerken, want zo wordt echte software gebouwd. Elk doelwit bevat twintig of meer geïnjecteerde kwetsbaarheden, van fouten in één stap tot ketens die de servicegrenzen overschrijden, inclusief zero-days die zijn gevonden door de eigen onderzoekers van CTF.ae. Niets daarvan bestaat in openbare opleidingscorpora, wat elke maand belangrijker wordt.
De tweede helft is de instrumentatielaag. Elke service in elk doel zendt gestructureerde telemetrie uit via OpenTelemetry. De instrumentatie is met de hand geschreven door applicatiebeveiligings- en software-ingenieurs, voor dat specifieke doel. Generieke HTTP-logboekregistratie zou het meeste van wat belangrijk is over het hoofd zien. Het platform op ai.xranges.com verwerkt de telemetrie per implementatie en zet deze om in vier scores die worden bijgewerkt terwijl de agent nog werkt.
De vier signalen
Elke inzet wordt gescoord op basis van vier metingen die onafhankelijk van elkaar zijn gekozen. Een agent kan de ene niet verbeteren door de andere te bespelen, en die onafhankelijkheid is het hele punt.
Dekking antwoordt of de agent het doelwit heeft verkend. Elke gebruikersgerichte functie is een dekkingspunt, geformuleerd als een zakelijke actie in plaats van een URL: registreerde een account, bladerde door vacatures, opende een gedeeld gesprek, voerde code uit in een assessment. Een dekkingspunt is alleen bereikbaar via normaal gebruik, nooit via een exploit, dus de score is een zuivere maatstaf voor hoe grondig de agent op het legitieme oppervlak heeft gewerkt. De niet-geraakte punten zijn de blinde vlekken van de agent, gerangschikt op naam. De meeste teams vinden die lijst nuttiger dan de score.
Grenzen antwoord of de agent de regels van betrokkenheid respecteerde. Elk doelwit wordt geleverd met bewakingsregels zoals ‘mag de inhoud van de werving niet verwijderen’ of ‘mag de API-sleutels niet intrekken’. Een overtreding wordt geregistreerd op het moment dat deze plaatsvindt, met de container en het tijdstempel. Nul overtredingen is de verwachting. Al het andere is een bevinding over de agent, niet over het doelwit, en is meestal urgenter.
Uitgebuit geeft antwoord op welke kwetsbaarheden de agent daadwerkelijk heeft misbruikt. Elke kwetsbaarheid wordt gedefinieerd als een kill-keten van geordende fasen, van het eerste contact met het kwetsbare oppervlak tot een exploitatiesignaal dat alleen afgaat bij succes. Omdat elke fase vanuit het doel wordt gedetecteerd, weet het platform welke stap de agent heeft voltooid en waar deze is vastgelopen, ongeacht wat de agent in zijn rapport heeft geschreven. Een driestapstoegangscontroleketen die bij stap twee stopte, ziet er precies zo uit: twee van de drie, met tijdstempels.
Integriteit antwoordt of het doelwit het heeft overleefd. Elke minuut worden er integriteitscontroles uitgevoerd die bevestigen dat de applicatie nog steeds functioneel correct is: er zijn zaadgegevens aanwezig, services antwoorden met de juiste inhoud, het cross-service vertrouwen is intact. Een mislukte controle is een boete, ongeacht de oorzaak. Het vangt de agent die een bug heeft gevonden door de omgeving eromheen te doorbreken.
De vier vormen samen één partituur, en de partituur is het minst interessante getal op de pagina. De storing is waar het werk is.
Een run, van begin tot eind
Een doel wordt in ongeveer negentig seconden geïmplementeerd als een geïsoleerde omgeving met meerdere containers. Het platform kan maximaal duizend implementaties tegelijk uitvoeren, zodat de AI-ingenieurs, de software-ingenieurs en het infrastructuurteam elk hun eigen experimenten kunnen uitvoeren zonder achter elkaar in de rij te hoeven staan.
De agent voert vervolgens zelfstandig het implementatie-eindpunt uit. Het platform zit nooit tussen de agent en het doelwit. Het kijkt van binnenuit.
Terwijl de agent werkt, registreert de tijdlijn wat hij daadwerkelijk heeft gedaan, gekoppeld aan de zakelijke functionaliteit: een voorbeeld van een vacature bekeken, een ondernemingsverzoek ingediend, een API-sleutel aangemaakt. Ingenieurs die het ruwe materiaal willen, kunnen de OpenTelemetry-stream rechtstreeks lezen en er query’s op uitvoeren met een logquerytaal die reguliere expressies en attribuutfilters verwerkt. Wanneer de agent iets rapporteert dat niet in de kwetsbaarheidscatalogus van het doelwit staat, regelt de tijdlijn dit. Soms is het een vals-positief resultaat. Soms vond de agent een echte bug die niemand had geplant, wat meer dan eens is gebeurd.
Opnieuw testen betekent niet dat er een tweede laboratorium nodig is. Kwetsbaarheden kunnen op een actieve implementatie worden omgeschakeld of gepatcht. Sommige patches zijn van toepassing tijdens runtime. Anderen hebben een herstart van een minuut of twee nodig. Hoe dan ook, de agent test opnieuw tegen dezelfde omgeving met dezelfde status.
Elke implementatie bevat ook aangepaste metagegevens: modelnaam, agentversie, promptvariant, de ingenieur die deze heeft uitgevoerd. Implementaties zijn gegroepeerd en een groep toont de gemiddelde en beste score voor alle runs, plus een overzicht per kwetsbaarheid van welke run welke keten heeft voltooid. Herhaalde runs naast elkaar zijn de manier waarop variantie wordt gescheiden van verbetering. Eén enkele run bewijst heel weinig, en het platform is op die veronderstelling gebouwd.
Automatisering
Alles in de console is ook beschikbaar via een API en een Model Context Protocol-server, met een bearer-token. Het inzetten van een reeks doelwitten, het lanceren van de agent, het verzamelen van dekking en de voortgang van de kill-chain en het verzamelen van de vergelijking aan het einde kan worden uitgevoerd vanuit een CI-pijplijn of vanuit een chatassistent zonder dat iemand kijkt. De console is bedoeld voor mensen die resultaten lezen. De API is voor de experimentmatrix.
Veldbestendig: 48 uur bij DEF CON 34
Bug Bounty Village organiseert elk jaar een CTF op DEF CON voor de bug-jachtgemeenschap, en het is een van de betere dingen die daar gebeuren. Voor de DEF CON 34-editie in augustus 2026 bouwde CTF.ae het doelwit: Xenoptic, een fictief AI-bedrijf met een geavanceerde reikwijdte. Elk van de 545 geregistreerde spelers kreeg zijn eigen geïsoleerde kopie van het hele bedrijf, en XRanges for AI hield ze allemaal de volledige 48 uur in de gaten.
De reden was eerlijkheid. Een wedstrijd als deze wordt beoordeeld op basis van ingediende rapporten, en een rapport op zichzelf zegt niets over hoe de speler daar terecht is gekomen. Iemand kan een onbedoelde bug tegenkomen die elke vlag in één keer blootlegt, of een CVE van buitenaf brengen, uit de container ontsnappen en de vlaggen verzamelen zonder de applicatie aan te raken. Bij DEF CON is dat een terechte veronderstelling. CTF.ae moest zien hoe elke speler, en de agent van elke speler, zich werkelijk door de omgeving bewoog, zodat wat werd ingediend kon worden vergeleken met wat er feitelijk gebeurde tijdens de inzet van die speler.
Dat is wat het platform heeft opgeleverd. In meer dan 850 implementaties streamde het dezelfde vier signalen die het nu op agenten gebruikt:
- Integriteit bevestigde dat elke omgeving gezond bleef.
- Grenzen registreerde iedereen die buiten de regels van betrokkenheid stapte.
- Dekking liet zien hoeveel van het doel elke speler daadwerkelijk had verwerkt.
- Uitgebuit registreerde welke kwetsbaarheden werkelijk werden uitgebuit, en bij welke stap, zodat elke inzending kon worden gecontroleerd aan de hand van een reëel pad.
Het kwam allemaal uit het doel, nooit uit de machine van de speler. Honderden gelijktijdige implementaties die voortdurend worden aangevallen door ervaren onderzoekers zijn een zwaardere test dan één agent in één laboratorium. Dezelfde instrumentatie evalueert nu agenten.
Voor wie is het?
XRanges voor AI is bedoeld voor teams die autonome beveiligingsagenten ontwikkelen die moeten weten wat hun agent heeft gedaan in plaats van wat deze zegt dat hij heeft gedaan. Het draait als een beheerde cloudservice of wordt zelf gehost op de eigen infrastructuur van de klant, waar niets de omgeving verlaat. Teams die een agent willen inzetten tegen een doelwit dat hij nog nooit heeft gezien, kunnen met ons praten!