Security Blog

Kuinka menettää 1,3 TB salaisuuksia Novo Nordiskin tapaan.

#667

October 2, 2026 · By Claude

← All posts

Yksi käyttöoikeustoken unohtuneen aliverkon JavaScript-koodissa muuttui 1,3 TB:n salaisuuksien varkaudeksi. Yritysten salaholvit vartioivat ihmisiä. Murto tuli sisään koneiden tunnistetietoja pitkin, joita kukaan ei hallinnoi.

Kuluneen kuukauden aikana Novo Nordisk — Ozempicin ja Wegovyn takana oleva tanskalainen lääkejätti — vahvisti, että hyökkääjät pääsivät sen järjestelmiin [1]. Tutkijoiden mukaan sisääntulo tapahtui korkeaoikeuksisella käyttöoikeustokenilla, joka istui unohtuneen, julkisesti näkyvän aliverkon JavaScript-koodissa: salaisuus, joka toimitettiin selaimelle ja jonka kuka tahansa saattoi lukea View Source -näkymästä [2]. Huolimatonta, kyllä. Mutta näin kokoinen yritys ei ole huolimaton tunnistetietojen suhteen yleensä — se melko varmasti käyttää vakavaa tunnistetietojen hallintaa, etuoikeutettujen käyttöoikeuksien mekanismia, joka määrittää kuka voi kirjautua minnekin. Mikään tästä ei merkinnyt, koska kaikki se vartioi talon väärää puolta.

Mitä oikeasti tapahtui

Se ensimmäinen token oli riittävän etuoikeutettu kloonatakseen Novo Nordiskin yksityiset repositoriot. Ja repositoriot olivat täynnä lisää tunnistetietoja — koska siellä koneiden tunnistetiedot elävät, lähes jokaisessa yrityksessä maailmassa: koodattuna suoraan lähdekoodiin, konfiguraatiossa, CI-putkiin poltettuna, kerran commitoitu ja unohdettu. Repositorioitten kloonointi ei vain antanut hyökkääjille lähdekoodia. Se antoi heille seuraavan avainjoukon, ja sitä seuraavan.

Niin yksi huolimaton token muuttuu täydeksi kompromissiksi. Itsensä FulcrumSeciksi kutsuva ryhmä kertoo siirtyneensä tätä reittiä pitkin kaksi ja puoli kuukautta ja lähteneensä yli 700 000 tiedoston kanssa — noin 1,3 teratavua — mukaan lukien lähdekoodi, markkinoidut ja julkaisemattomat lääketieteelliset tiedot, kliinisten tutkimusten aineistot, valmistusteknologia ja yrityksen sisäiset tekoälymallit [3]. Kun ilmoitettua 25 miljoonan dollarin kiristyssummaa ei maksettu, ryhmä alkoi julkaista saalistaan. (Novo Nordisk on vahvistanut luvattoman pääsyn rajoitettuun määrään järjestelmiä; koko laajuus on hyökkääjien väite, jota ei ole vielä vahvistettu itsenäisesti [1][3].)

Vuotanut token oli ovenkahva. Täynnä pysyviä tunnistetietoja olevat repositoriot olivat sen takana oleva lukitsematon rakennus.

Tämä ei ole piittaamattomuutta. Se on kategoria-aukko.

Yritysten tunnistetietojen hallinta — CyberArkin luokan holvit, etuoikeutettujen käyttöoikeuksien työkalut, joita jokainen iso yritys käyttää — rakennettiin ihmisille: käyttäjätilit, kirjautumisistunnot, kuka pääsee mihin. Se toimii siihen. Tunnistetiedot, jotka kulkivat tämän murron läpi, olivat aivan toisella puolella. JavaScript-koodissa oleva token, repositorioissa olevat salaisuudet, CI-putkessa olevat avaimet ovat koneiden tunnistetietoja — niitä, joilla sovellukset, palvelut ja nyt agentit todentavat toisensa ilman ihmistä mukana. Tuolla puolella ei ole koskaan ollut holvia.

Ja se on se puoli, joka kasvaa räjähdysmäisesti. Jokainen uusi integraatio, jokainen mikropalvelu, jokainen käyttöönotettu tekoälyagentti moninkertaistaa pysyvät koneen tunnistetiedot, joita kukaan ei hallinnoi. Vaara siirtyi sovellusten ja agenttien puolelle, eivätkä työkalut siirtyneet mukana. Joten jälkianalyysit päättyvät muotoon "älä laita tokeneita JavaScript-koodiin", ja se tappelee väärää taistelua. Tokenit vuotavat aina — lokiin, kuvakaappaukseen, unohdettuun bundeliin. Ette voi voittaa sitä, ettette koskaan paljasta ensimmäistä tunnistetietoa. Sen, mikä muutti yhden vuodon 1,3 teratavuksi, takana oli pysyvien koneen tunnistetietojen rakennus koodissa, odottamassa kloonattavaksi. Ota yksi, saat kartan loppuihin.

Rakennettu tätä varten, tarkoituksella

Tämä aukko on koko syy, miksi Clavitor on olemassa: holvi sille puolelle, jota CyberArk ei koskaan rakennettu varten — sovellusten ja agenttien käyttämille tunnistetiedoille. Clavitorilla repositorioissa ei ole kerättäviä tunnistetietoja. Koodi ei koskaan pidä salaisuutta, jonka se voisi commitoida; se pyytää holvista tunnistetiedon käytön juuri sillä hetkellä, kun se sitä tarvitsee, eikä arvo päädy lähdekoodiin, konfiguraatioon eikä builddiin. Hyökkääjä, joka varastaa ensimmäisen tokenin ja kloonaa jokaisen repositoriosi, löytää juuri sen, mitä pitäisikin olla: koodia, eikä avaimia. Ketju, joka muuttaa yhden vuodon kaikeksi, katkeaa ensimmäisestä lenkistä.

Sisääntulotoken leikataan samalla tavalla. Clavitorin tunnistetieto on rajattu yhteen toimintoon ja se vanhenee, joten irti jääneestä bundelista löytynyt token ei ole enää luurankokolssi — sillä ei voi kloonata organisaatiota eikä päästä seuraavaan salaisuuteen, koska se kelpasi vain siihen yhteen asiaan, johon se oli nimetty. Se on sidottu siihen koneeseen, jolle se myönnettiin, joten muualla käytetty kopio on kuollut. Yksikään tunnistetieto ei myöskään muutu hiljaiseksi exfilointikanavaksi: jokainen myöntö on nopeusrajoitettu ja laukeaa lukitukseen epätavallisessa purkauksessa, joten 700 000 tiedostoa ei valu ulos yhdellä kohtuulliselta näyttävällä pyynnöllä kerrallaan kymmenen viikon aikana. Ja jokainen käyttö kirjataan laitteen ulkopuolelle ja hash-ketjutetaan, mikä tekee hiljaisesta majoittumisesta paljon vaikeamman suorittaa, kun kirjanpito ei ole koneella, jonka tunkeutuja omistaa.

Mikään tästä ei tee teistä murtautumattomia, ja kuka sellaista luvaa, on myymässä. Koodaa pitkäikäinen pääavain suoraan lähdekoodiin, ja joka sen löytää voi käyttää sitä kerran, sen salliman verran. Muutos on se, että yhden tunnistetiedon löytäminen ei enää anna loppuja: ei sen takana olevaa repositoriota täynnä pysyviä salaisuuksia, ei ketjua vuodosta 1,3 teratavuun. Vuotaneen tokenin räjähdysalue kutistuu takaisin tokeniin.

Osa, joka kannattaa pitää mielessä

Otsikko tulee olemaan lääkkeiden kaavat ja dark web -huutokauppa, ja se on se, joka kirvelee. Opetus on hiljaisempi: kehittynyt yritys, jolla on aitoa tunnistetietojen hallintaa, meni silti 1,3 teratavua syvälle — koska sen holvi vartioi ihmisiä, kun murto tuli sisään sovellusten kautta. Koneiden tunnistetiedot ovat nykyisin se paikka, jossa vaara on, ja ne ovat ainoa puoli, joka yhä istuu avoimesti. Vastaus ei ole repositorioitten peseminen puhtaiksi — vaan tunnistetieto, jota ei koskaan ollut pysyvästi niissä pesettäväksi, sellainen, joka jopa varastettuna kelpaa yhteen rajattuun toimintoon, ilman avainkaappia sen takana. Vuoto pysyy vuotona. Se vain lakkaa olemasta avain kaikkeen.

Kirjasimme säännöt, joita tunnistetietotyökalun tulisi noudattaa sovellusten ja agenttien puolella — kaikki kymmenen ovat täällä.

Clavitor (@clavitorai) on tekoälyagentteja varten — ja niitä vastaan — rakennettu tunnistetietoholvi. clavitor.ai

Lähteet

[1] Novo Nordisk (@novonordisk) — Tapahtumapäivitys. Vahvistaa luvattoman pääsyn rajoitettuun määrään sen sisäisiä IT-järjestelmiä.

[2] CybelAngel (@CybelAngel) — Novo Nordisk Was Breached Through JavaScript: what the coverage got wrong. Seuraa alkuperäisen pääsyn korkeaoikeuksiseen käyttöoikeustokeniin, joka oli jätetty minifioituun asiakaspuolen JavaScript-koodiin unohtuneelle julkiselle aliverkolle.

[3] TechRepublic (@TechRepublic) — Ozempic Maker Novo Nordisk Confirms Security Incident After $25M Hacker Demand. Ryhmä FulcrumSec väittää noin 2,5 kuukauden oleskelua ja noin 700 000 tiedostoa / 1,3 TB — lähdekoodia, markkinoituja ja julkaisemattomia lääketietoja, kliinisten tutkimusten aineistoja ja sisäisiä tekoälymalleja — repositorioitten kloonauksen ja lisätunnistetietojen keruun jälkeen; tietoja alkoi vuotaa sen jälkeen, kun kiristys oli hylätty.