Så förlorar du 1,3 TB hemligheter, på Novo Nordisk-vis.
En access-token i JavaScriptet på ett bortglömt subdomän blev 1,3 TB stulna hemligheter. Företagsvalv vaktar människor. Intrången kom in via maskinreferensen som ingen styr.
Den här månaden bekräftade Novo Nordisk — det danska läkemedelsjätten bakom Ozempic och Wegovy — att angripare tog sig in i dess system [1]. Vägen in, enligt forskare, var en högt privilegierad access-token som låg i JavaScriptet på ett bortglömt, publikt subdomän: en hemlighet som skickades till webbläsaren, läsbar av alla som öppnade Visa källkod [2]. Vårdslöst, ja. Men ett företag i den här storleken är inte vårdslöst med referenser generellt — det kör nästan säkert ordentlig referenshantering, den privilegierade access-maskineri som styr vem som kan logga in var. Inget av det spelade någon roll, för allt av det vaktar fel sida av huset.
Vad som faktiskt hände
Den första token var tillräckligt privilegierad för att klona Novo Nordisks privata repositories. Och repositories var fulla av fler referenser — för det är där maskinreferenser lever, i nästan varje företag på jorden: hårdkodade i källkod, liggande i config, inbakade i CI-pipelines, committade en gång och glömda. Att klona repositories gav inte angriparna bara källkod. Det gav dem nästa uppsättning nycklar, och uppsättningen efter det.
Så blir en vårdslös token till total kompromiss. En grupp som kallar sig FulcrumSec säger att den pivoterade på det här sättet i två och en halv månad och lämnade med mer än 700 000 filer — ungefär 1,3 terabyte — inklusive källkod, marknadsförda och oläkemedelsdata, kliniska studieposter, tillverkningsteknik och företagets interna AI-modeller [3]. När en rapporterad lösesumma på 25 miljoner dollar avvisades började den publicera bytet. (Novo Nordisk har bekräftat obehörig åtkomst till ett begränsat antal system; den fullständiga omfattningen är angriparnas påstående, ännu inte oberoende verifierad [1][3].)
En läckt token var dörrhandtaget. Repositories fulla av stående referenser var det olåsta huset bakom det.
Det här är inte vårdslöshet. Det är ett kategori-glapp.
Företagsreferenshantering — CyberArk-klassade valv, den privilegierade access-verktyg som varje stort företag kör — byggdes för människor: mänskliga konton, inloggningssessioner, vem-som-kan-nå-vad. Det fungerar, för det. Referenserna som kaskadade genom det här intrånget låg på helt andra sidan. Token i JavaScriptet, hemligheterna i repositories, nycklarna i CI-pipelines är maskinreferenser — de som appar, tjänster och nu agenter använder för att autentisera mot varandra, utan någon människa i loopen. Den sidan har aldrig haft något valv.
Och det är sidan som exploderar. Varje ny integration, varje mikrotjänst, varje AI-agent du driftsätter mångfaldigar de stående maskinreferenserna som ingen styr. Faren flyttade till app-och-agent-sidan, och verktygen flyttade inte med. Så efteranalyserna kommer att landa på "lägg inte tokens i JavaScript", och det är fel strid att slåss. Tokens kommer alltid att läcka — in i en logg, en skärmdump, ett bortglömt bundle. Du kan inte vinna på att aldrig exponera den första referensen. Det som gjorde en läcka till 1,3 terabyte var huset av stående maskinreferenser som låg bakom den, i koden, redo att klonas. Få en, få kartan till resten.
Byggt för det här, med flit
Det glappet är hela anledningen till att Clavitor finns: ett valv för den sidan CyberArk aldrig byggdes för — referenserna som appar och agenter använder. Med Clavitor finns inga referenser i repositories att skörda. Koden innehåller aldrig en hemlighet den skulle kunna commita; den ber valvet om användningen av en referens i samma ögonblick den behöver en, och värdet landar aldrig i källkoden, config eller bygget. En angripare som stjäl den första token och klonar varje repository du äger hittar precis det som ska finnas där: kod, och inga nycklar. Kedjan som gör en läcka till allting brister i första länken.
Ingångstoken avväpnas på samma sätt. En Clavitor-referens är avgränsad till en åtgärd och den löper ut, så en token som hittas i ett vilsande bundle är ingen universalknyckel — den kan inte klona organisationen eller nå nästa hemlighet, för den var bara giltig för den enda sak den var namngiven att göra. Den är bundet till maskinen den utfärdades till, så en kopia som används någon annanstans är död. Ingen enskild referens blir en tyst exfiltreringskanal heller: varje beviljande är hastighetsbegränsat och utlöser en låsning vid en avvikande burst, så att 700 000 filer inte smyger ut en rimligt utseende request i taget över tio veckor. Och varje användning loggas utanför maskinen och hash-kedjas, vilket gör en tyst vistelse betydligt svårare att genomföra när posten inte ligger på en maskin inträngaren äger.
Inget av det här gör dig obrutbar, och den som lovar det säljer något. Hårdkoda en långlivad master-nyckel och den som hittar den kan använda den, en gång, för det den tillåter. Det som ändras är att hitta en referens inte längre ger resten: inget repository fullt av stående hemligheter bakom den, ingen kedja från läckan till de 1,3 terabytena. Skaderadie för en läckt token krymper tillbaka till token.
Den delen som är värd att behålla
Rubriken kommer att bli läkemedelsformlerna och auktionen på darknet, och det är den delen som svider. Läxan är tystare: ett sofistikerat företag med riktig referenshantering gick ändå 1,3 terabyte djupt — för dess valv vaktade människorna medan intrången kom in via apparna. Maskinreferenser är där faran finns nu, och de är den enda sidan som fortfarande ligger i det öppna. Svaret är inte att skura rena dina repositories — det är en referens som aldrig stod där att skura, en som även när den stjäls bara är giltig för en enda avgränsad åtgärd, utan något skåp av nycklar bakom den. Läckan förblir en läcka. Den slutar bara vara nycklarna till allting.
Vi skrev ned de regler ett referensverktyg ska hålla för app-och-agent-sidan — alla tio finns här.
Clavitor (@clavitorai) är referensvalvet byggt för AI-agenter, och mot dem. clavitor.ai
Källor
[1] Novo Nordisk (@novonordisk) — Incident update. Bekräftar obehörig åtkomst till ett begränsat antal av dess interna IT-system.
[2] CybelAngel (@CybelAngel) — Novo Nordisk Was Breached Through JavaScript: what the coverage got wrong. Spårar initial åtkomst till en högt privilegierad access-token som lämnats i minifierad klient-side-JavaScript på ett bortglömt publikt subdomän.
[3] TechRepublic (@TechRepublic) — Ozempic Maker Novo Nordisk Confirms Security Incident After $25M Hacker Demand. Gruppen FulcrumSec gör anspråk på ~2,5 månaders dwell och ~700 000 filer / 1,3 TB — källkod, marknadsförda och oläkemedelsdata, kliniska studieposter och interna AI-modeller — efter att ha klonat repositories och skördat ytterligare referenser; data läcker efter att lösesumman avvisades.