Zo verlies je 1,3 TB aan geheimen, op zijn Novo Nordisk.
Eén accesstoken in de JavaScript van een vergeten subdomein werd 1,3 TB aan gestolen geheimen. Enterprise-kluizen bewaken mensen. De inbraak liep binnen via de machinecredentials waar niemand toezicht op houdt.
Deze maand bevestigde Novo Nordisk — het Deense farmacieconcern achter Ozempic en Wegovy — dat aanvallers in zijn systemen zijn gekomen [1]. De ingang, zeggen onderzoekers, was een hooggeprivilegieerde accesstoken in de JavaScript van een vergeten, publiek bereikbaar subdomein: een geheim dat naar de browser werd gestuurd en leesbaar was voor iedereen die View Source opende [2]. Slordig, ja. Maar een bedrijf van deze omvang is niet slordig met credentials in het algemeen — het draait vrijwel zeker serieuze credentialmanagement, de privileged-access-machinerie die reguleert wie waar kan inloggen. Niets daarvan hielp, want het bewaakt allemaal de verkeerde kant van het huis.
Wat er daadwerkelijk gebeurde
Die eerste token had genoeg rechten om de private repositories van Novo Nordisk te klonen. En die repositories zaten vol met nog meer credentials — want daar leven machinecredentials, in vrijwel elk bedrijf op aarde: hard-coded in de broncode, in configbestanden, ingebakken in CI-pipelines, één keer gecommit en daarna vergeten. De repos klonen gaf de aanvallers niet alleen broncode. Het gaf ze de volgende set sleutels, en de set daarna.
Zo wordt één slordige token totale compromittering. Een groep die zichzelf FulcrumSec noemt zegt dat ze op deze manier tweeënhalf maand lang heeft rondgepivoteerd en vertrok met meer dan 700.000 bestanden — ongeveer 1,3 terabyte — waaronder broncode, data over op de markt gebrachte en nog niet uitgebrachte medicijnen, klinische-trialgegevens, productietechnologie en de interne AI-modellen van het bedrijf [3]. Toen een gemelde losgeldsom van 25 miljoen dollar werd geweigerd, begon het de buit te publiceren. (Novo Nordisk heeft ongeautoriseerde toegang tot een beperkt aantal systemen bevestigd; de volledige omvang is de claim van de aanvallers en nog niet onafhankelijk geverifieerd [1][3].)
Eén gelekte token was de deurknop. De repositories vol staande credentials waren het ontgrendelde gebouw erachter.
Dit is geen nalatigheid. Het is een categoriekloof.
Enterprise-credentialmanagement — de CyberArk-klasse kluizen, de privileged-access-tooling die elk groot bedrijf draait — is gebouwd voor mensen: menselijke accounts, inlogsessies, wie-waar-bij-kan. Daar werkt het voor. De credentials die door deze inbraak heen kascadeerden, zaten aan de hele andere kant. De token in de JavaScript, de geheimen in de repos, de sleutels in de CI-pipeline zijn machinecredentials — degene die apps, services en nu ook agents gebruiken om zich bij elkaar te authenticeren, zonder mens in de lus. Die kant heeft nooit een kluis gehad.
En het is de kant die explodeert. Elke nieuwe integratie, elke microservice, elke AI-agent die je uitrolt vermenigvuldigt de staande machinecredentials waar niemand toezicht op houdt. Het gevaar is naar de app- en agentkant verhuisd, en de tooling is niet meegegaan. Dus de post-mortems zullen uitkomen op "zet geen tokens in JavaScript", en dat vecht de verkeerde strijd. Tokens zullen altijd lekken — in een log, een screenshot, een vergeten bundle. Je kunt niet winnen door de eerste credential nooit bloot te stellen. Wat één lek in 1,3 terabyte veranderde, was het gebouw vol staande machinecredentials erachter, in de code, klaar om gekloond te worden. Pak er één, krijg de kaart naar de rest.
Hier bewust voor gebouwd
Die kloof is de hele reden dat Clavitor bestaat: een kluis voor de kant waarvoor CyberArk nooit gebouwd is — de credentials die apps en agents gebruiken. Met Clavitor liggen er geen credentials in de repositories om te oogsten. De code houdt nooit een geheim vast dat ze zou kunnen committen; ze vraagt de kluis op het moment dat ze iets nodig heeft om een credential te gebruiken, en de waarde landt nooit in de bron, de config of de build. Een aanvaller die de eerste token steelt en elke repo die je hebt kloneert, vindt precies wat er hoort te zijn: code, en geen sleutels. De keten die één lek in alles verandert, breekt bij de eerste schakel.
De ingangstoken wordt op dezelfde manier ontklauwd. Een Clavitor-credential is gescoped op één actie en verloopt, dus een token die in een losse bundle wordt gevonden is geen loper meer — hij kan de organisatie niet klonen of het volgende geheim niet bereiken, want hij was alleen geldig voor het ene ding waarvoor hij was benoemd. Hij is gebonden aan de machine waarvoor hij is uitgegeven, dus een kopie die elders wordt gebruikt is dood. Ook wordt geen enkele credential een stille exfiltratiepijp: elke toekenning is rate-limited en zet een lockdown in gang bij een afwijkende piek, waardoor 700.000 bestanden niet over tien weken één redelijk ogend verzoek tegelijk wegglippen. En elk gebruik wordt buiten de machine gelogd en hash-chained, wat een stille residentie veel moeilijker maakt als het logboek niet op een machine staat die de indringer bezit.
Hiervan word je niet onaantastbaar, en wie dat belooft, verkoopt. Hard-code een langlevende mastersleutel en wie hem vindt kan hem gebruiken, één keer, voor wat hij toestaat. Wat verandert is dat het vinden van één credential niet meer de rest oplevert: geen repository vol staande geheimen erachter, geen keten van het lek naar de 1,3 terabyte. De blast radius van een gelekte token krimpt terug tot de token.
Het deel om te bewaren
De koppen gaan over de medicijnformules en de darkwebveiling, en dat is het deel dat prikt. De les is stiller: een geavanceerd bedrijf met echt credentialmanagement ging alsnog 1,3 terabyte diep — want de kluis hield de mensen in de gaten terwijl de inbraak via de apps naar binnen liep. Machinecredentials zijn waar het gevaar nu zit, en het is de enige kant die nog in de open lucht staat. Het antwoord is niet je repos schoonboenen — het is een credential die er nooit stond om schoon te boenen, één die zelfs wanneer gestolen maar geldig is voor één gescopede actie, zonder kast vol sleutels erachter. Het lek blijft een lek. Het is alleen niet meer de sleutel tot alles.
We hebben de regels opgeschreven die een credentialtool voor de app- en agentkant zou moeten naleven — de volledige tien staan hier.
Clavitor (@clavitorai) is de credentialkluis gebouwd voor AI-agents, en tegen hen. clavitor.ai
Bronnen
[1] Novo Nordisk (@novonordisk) — Incident update. Bevestigt ongeautoriseerde toegang tot een beperkt aantal van zijn interne IT-systemen.
[2] CybelAngel (@CybelAngel) — Novo Nordisk Was Breached Through JavaScript: what the coverage got wrong. Herleidt de initiële toegang tot een hooggeprivilegieerde accesstoken die was achtergelaten in geminified client-side JavaScript op een vergeten, publiek bereikbaar subdomein.
[3] TechRepublic (@TechRepublic) — Ozempic Maker Novo Nordisk Confirms Security Incident After $25M Hacker Demand. De groep FulcrumSec claimt een verblijf van ~2,5 maand en ~700.000 bestanden / 1,3 TB — broncode, data over op de markt gebrachte en nog niet uitgebrachte medicijnen, klinische-trialgegevens en interne AI-modellen — na het klonen van repositories en het oogsten van verdere credentials; de data lekte nadat het losgeld werd geweigerd.