En konfigurationsfil skal ikke afvikle noget

En udvikler hos en europæisk producent henter en model fra en offentlig hub, kalder from_pretrained og går til frokost. Biblioteket henter vægtene, læser den JSON-fil, der beskriver dem, og initialiserer. Intet i det forløb ligner et samtykke til at afvikle en fremmeds kode, og udvikleren har i forvejen sat trust_remote_code til False, netop for at det ikke sker.

Sikkerhedsforskere hos Pluto Security påviste, at det alligevel var tilfældet. Fejlen registreres som CVE-2026-4372, har en CVSS-basisscore på 7,8 og er klassificeret under CWE-502, deserialisering af utroværdige data. Den forvandler en rutinemæssig modelhentning til vilkårlig afvikling af Python på den maskine, der henter, og den handling, brugeren skal foretage, er ikke andet end den dokumenterede måde at indlæse en model på.

Hvordan et metadatafelt gik uden om flaget

Flaget beskytter kodefiler. Angrebet kom i metadata. Konstruktøren for konfigurationen indeholdt en løkke, der tog hver nøgle og værdi fra den utroværdige JSON og skrev dem direkte over på konfigurationsobjektet, uden tilladelsesliste og uden validering. Blandt de felter, en angriber dermed kunne sætte, var et felt ved navn _attn_implementation_internal, en privat intern attribut, som ingen havde forventet kunne nås fra en downloadet fil.

Når det felt indeholdt en streng på formen ejer og repository, opfattede kernel-indlæseren den som en pakke, der skulle hentes fra hubben, og importerede den uden nogen sikkerhedskontrol. Al Python, der lå i det pågældende repositorys initialiseringsfil, blev derefter afviklet. Den kontrol, som udviklerne opfatter som deres samtykke, blev aldrig taget i brug, fordi den var afgrænset til brugerdefineret modelkode, og dette var ikke brugerdefineret modelkode. Det var en indstillingsfil.

Rettelsen kom først. Advarslen tog yderligere 81 dage

Datoerne er historien. Den sårbare kode kom ind i biblioteket den 29. august 2025 og indgik i hver eneste release i omtrent et halvt år. Fejlen blev indberettet via et bug bounty den 23. februar 2026, en vedligeholder åbnede rettelsen den 2. marts, og version 5.3.0 lukkede den den 4. marts. Det er en hurtig og rosværdig indsats, ti dage fra indberetning til rettet release.

Derefter blev der stille i det offentlige billede. CVE-2026-4372 blev først offentliggjort den 24. maj 2026, 81 dage efter at rettelsen allerede lå i en offentlig release. I det tidsrum blev rettelsen i release notes beskrevet som et sikkerhedsproblem i kernels, uden CVE-nummer, uden alvorlighedsgrad og uden nogen omtale af, at den standsede remote code execution. Enhver operatør, hvis patching udløses af CVE-feeds og leverandøradvarsler, hvilket gælder de fleste regulerede operatører i Europa, havde intet signal til at prioritere en opgradering, der allerede var tilgængelig.

Derefter blev hubben selv brudt gennem samme type dør

Den 16. juli 2026 oplyste Hugging Face om et indbrud i en del af selskabets egen produktionsinfrastruktur. Et ondsindet datasæt misbrugte to veje til kodeafvikling i behandlingen af datasæt, en dataset-indlæser med fjernkode og en template-injektion i en datasætkonfiguration, til at afvikle kode på en processing-worker. Derfra eskalerede den indtrængende til node-adgang, høstede cloud- og cluster-credentials og bevægede sig sidelæns ind i flere interne clusters i løbet af en weekend. Den tekniske efterforskning gennemgik mere end 17.000 registrerede handlinger.

Hugging Face oplyser, at selskabet ikke har fundet tegn på manipulation af offentlige modeller, datasæt eller Spaces, og at det har verificeret sin softwareforsyningskæde som ren. Betragt hændelsen som bevis på eskaleringsvejen frem for som en grund til at miste tilliden til hubben. En fil, der beskriver data, nåede frem til en worker, og den worker lå inde med credentials. Det er risikoens form, og det er den samme form som konfigurationsfejlen ovenfor.

Hvad der skal afklares inden jeres næste modelhentning

Tre kontroller, i den rækkefølge. Fastslå, hvilken version af transformers der kører i jeres trænings-images, jeres notebooks og jeres build-agenter, og opgrader alt under 5.3.0. Afklar, om kernels-pakken er installeret ved siden af, da det var den, der gjorde stien udnyttelig. Se dernæst på, hvilke credentials der ligger på de maskiner, som fortolker model- og datasætartefakter, for de maskiner behandles sædvanligvis som simpel datainfrastruktur og får bred adgang i overensstemmelse hermed.

Underretningspligten løber under alle omstændigheder efter sin egen kalender. Efter artikel 23 i NIS2 skylder en omfattet enhed sin nationale myndighed en tidlig varsling inden for 24 timer efter at være blevet bekendt med en væsentlig hændelse, en mere fyldestgørende underretning inden for 72 timer og en endelig rapport inden for en måned. I Danmark kommer den tilsvarende vejledning fra Center for Cybersikkerhed. Ingen af disse frister sættes på pause, mens I finder ud af, hvilken version af biblioteket I kørte.