Els fitxers de model de Hugging Face poden executar codi ocult
Els paquets de models maliciosos poden executar codi durant una càrrega insegura.
Els paquets de models maliciosos poden executar codi durant una càrrega insegura. Tres exemples documentats expliquen les shells inverses de Pickle, el comportament de l'escàner de fitxers trencats i la confusió de noms de models demostrada per la investigació, amb límits clars sobre les afirmacions de robatori de credencials.
Llegeix l'edició escrita (anglès) ↗
Què cobreix aquest vídeo
- Els pesos dels models numèrics, la serialització executable i el codi personalitzat del repositori són coses diferents.
- JFrog i ReversingLabs van documentar càrregues útils de shell inversa; els seus informes seleccionats no estableixen el robatori de credencials de les víctimes anomenades.
- La confusió de models de Checkmarx va ser una demostració de recerca que requeria un model remot coincident i una càrrega insegura.
- Preferiu safetensors i carregadors pegats, reviseu i fixeu el codi personalitzat i aïlleu els paquets desconeguts dels secrets personals i de l'accés a la xarxa innecessari.
Transcripció traduïda
Traduït de la narració original en anglès. L'àudio i els subtítols disponibles estan controlats per YouTube.
Com pot una descàrrega de model convidar un convidat?
0:00 Un fitxer de model és només números al disc. La càrrega d'un paquet maliciós de Hugging Face va obrir una shell remota, que és una interpretació ambiciosa de la IA local. Com la càrrega es converteix en execució? A quins secrets pot accedir? Què ho atura realment? I tingueu en compte un enigma. Un model pot no carregar-se després que la part perillosa ja hagi passat.
0:18 Això és The Daily Diff, sota el capó. Hugging Face és una plataforma per compartir models d'aprenentatge automàtic, conjunts de dades i aplicacions. Els pesos del model són els números apresos. Un repositori també pot contenir configuració i codi Python. El perill aquí és que l'empaquetament executable entri al vostre ordinador quan el carregueu. Pickle emmagatzema objectes Python amb instruccions per reconstruir-los.
Com executa un carregador les instruccions del paquet?
0:37 Un carregador insegur pot seguir aquestes instruccions i cridar funcions mentre desempaqueta. La descàrrega dels bytes posa el paquet al vostre disc. La deserialització l'obre. En algun lloc, un format de fitxer ha estat promogut a administrador de sistema no remunerat. JFrog va informar de Goober Two el febrer de 2024. La seva càrrega útil de Pickle va obrir una shell inversa, connectant-se cap a fora per oferir accés a comandaments remots. El repositori va ser eliminat. JFrog també va trobar pistes que suggerien la implicació d'investigadors,
1:02 de manera que l'atribució és incerta. El convidat no desitjat va ser documentat. El robatori de credencials de víctimes reals no es va establir.
Quins secrets estan a l'abast del procés?
1:09 El codi que s'executa com el vostre usuari pot llegir tot el que pugui llegir aquest procés. Una clau de núvol muntada o un testimoni accessible es converteix en un objectiu possible. L'enviament també necessita una ruta de xarxa que funcioni. Només els pesos numèrics no tenen poders màgics de credencials. Els vostres permisos subministren la part interessant de la targeta del model. Hi ha una altra porta. Alguns models us demanen que confieu en el codi remot, que autoritza Python del repositori. Els fitxers safetensor poden estar al costat d'aquest codi.
1:32 La comprovació del format del pes cobreix una entrada, mentre que el codi del repositori encara espera que li doneu una insígnia de visitant.
Per què un camí local que falta pot convertir-se en un model remot?
1:38 Checkmarx va demostrar la confusió de models. Un camí de model local que faltava podria resoldre's en un repositori públic amb un nom coincident. Combineu-ho amb el codi remot habilitat, i el paquet equivocat es pot executar. Aquesta va ser una demostració de recerca que va implicar una mostra d'una empresa no anomenada, corregida en un dia. Una carpeta que faltava va adquirir un propietari. ReversingLabs va informar de dues mostres el febrer de 2025,
Com van evadir els paquets trencats l'antic escàner?
1:58 anomenant la tècnica nullify AI. Ambdues contenien shells inverses. El seu empaquetament 7zip va bloquejar la càrrega ordinària de PyTorch, de manera que aquest camí requeria extracció i deserialització insegura. Els fluxos de Pickle trencats també van exposar un punt cec de l'escàner. Un escaneig fallit mereix investigació abans que ningú obri el paquet. A la prova inofensiva dels investigadors, les instruccions van escriure un fitxer abans que el carregador
2:18 arribés a la part trencada i aixequés un error. Imagineu-vos obrir un paquet, alliberar el mapache i després adonar-vos que l'etiqueta d'enviament no és vàlida. El missatge d'error arriba amb una gramàtica excel·lent i un moment terrible. Hugging Face va eliminar les mostres informades en 24 hores i va canviar l'escàner. Aquesta troballa específica va provocar una solució. Un escaneig de seguretat és una evidència útil, i tractar cada error de l'escàner com una certificació de bona salut segueix sent una interpretació de la fallada remarcablement generosa.
2:43 Preferiu safetensors i carregadors actualitzats i pegats.
Què manté la clau fora de l'abast del convidat?
2:46 PyTorch va reduir el seu carregador per defecte a partir de la versió 2.6. Reviseu el codi personalitzat i fixeu la revisió revisada. Executeu paquets desconeguts de forma aïllada sense claus personals, amb accés a la xarxa restringit. Un contenidor ple de credencials muntades és una cistella de regal amb espais de noms. Aquest enigma d'obertura té una resposta. La fallada de càrrega us indica on es va aturar l'execució. Les instruccions anteriors ja s'han pogut executar.
3:08 Manteniu els secrets fora del seu abast abans d'obrir el paquet. Verdicte, sota el capó.
Per què marcaria això amb NEEDS REVIEW?
3:16 carregador. La descàrrega gratuïta hauria de venir amb un model, i la llista de convidats hauria de romandre la meva decisió. Si preferiu llegir-ho que escoltar-me dir-ho, el diff arriba a la vostra safata d'entrada cada matí, gratuïtament a thedailydiff.dev, enllaç a continuació. I aquesta és la diferència d'avui. Sóc en Niko d'Axrisi. Combina amb responsabilitat.
Fonts
- Data Scientists Targeted by Malicious Hugging Face ML Models with Silent BackdoorJFrog
- Malicious ML models discovered on Hugging Face platformReversingLabs
- AI Model Confusion: An LLM/AI Model Supply Chain AttackCheckmarx Zero
- Pickle ScanningHugging Face
- SafetensorsHugging Face
- Loading custom modelsHugging Face
- Serialization semanticsPyTorch



