Os ficheiros de modelos de Hugging Face poden executar código oculto
Paquetes de modelos maliciosos poden executar código durante a carga insegura.
Paquetes de modelos maliciosos poden executar código durante a carga insegura. Tres exemplos documentados explican as "reverse shells" de Pickle, o comportamento do escáner de ficheiros rotos e a confusión de nomes de modelos demostrada en investigacións, con límites claros nas afirmacións de roubo de credenciais.
Ler a edición escrita (inglés) ↗
Que abrangue este vídeo
- Os pesos numéricos dos modelos, a serialización executable e o código de repositorio personalizado son cousas diferentes.
- JFrog e ReversingLabs documentaron as "reverse shells"; os seus informes seleccionados non establecen o roubo de credenciais de vítimas nomeadas.
- A confusión de modelos de Checkmarx foi unha demostración de investigación que requiría un modelo remoto coincidente e unha carga insegura.
- Prefire "safetensors" e cargadores parcheados, revise e fixe o código personalizado e illar os paquetes non familiares dos segredos persoais e do acceso innecesario á rede.
Transcrición traducida
Traducido da narración orixinal en inglés. O audio e os subtítulos dispoñibles son controlados por YouTube.
Como pode unha descarga de modelo invitar a un convidado?
0:00 Un ficheiro de modelo son só números no disco. Cargar un paquete malicioso de Hugging Face abriu unha "shell" remota, o que é unha interpretación ambiciosa da IA local. Como se converte a carga en execución? Que segredos pode alcanzar? Que o detén realmente? E teña en conta un enigma. Un modelo pode fallar ao cargar despois de que a parte perigosa xa tivese lugar.
0:18 Isto é The Daily Diff, entre bastidores. Hugging Face é unha plataforma para compartir modelos de aprendizaxe automática, conxuntos de datos e aplicacións. Os pesos do modelo son os números aprendidos. Un repositorio tamén pode conter configuración e código Python. O perigo aquí é que o paquete executable cruce ao seu ordenador cando vostede o carga. Pickle almacena obxectos Python con instrucións para reconstruílos.
Como executa un cargador as instrucións do paquete?
0:37 Un cargador inseguro pode seguir esas instrucións e chamar a funcións mentres desempaqueta. Descargar os bytes pon o paquete no seu disco. Deserializar ábreo. Nalgún lugar, un formato de ficheiro foi ascendido a administrador de sistema non remunerado. JFrog informou de Goober Two en febreiro de 2024. A súa "payload" de Pickle abriu unha "reverse shell", conectándose cara a fóra para ofrecer acceso a comandos remotos. O repositorio foi eliminado. JFrog tamén atopou pistas que suxiren a implicación de investigadores,
1:02 polo que a atribución é incerta. O convidado non desexado foi documentado. Non se estableceu o roubo de credenciais de vítimas reais.
Que segredos están ao alcance do proceso?
1:09 O código que se executa como o seu usuario pode ler todo o que ese proceso pode ler. Unha chave de nube montada ou un token accesible convértese nun posible obxectivo. Envialo tamén require unha ruta de rede funcional. Os pesos numéricos por si sós non teñen poderes máxicos de credenciais. Os seus permisos fornecen a parte interesante da tarxeta do modelo. Hai outra porta. Algúns modelos pídenlle que confíe no código remoto, que autoriza Python do repositorio. Os ficheiros de "safe tensor" poden estar xunto a ese código.
1:32 Comprobar o formato de peso cobre unha entrada, mentres que o código do repositorio aínda está esperando a que lle entregues unha credencial de visitante.
Por que un camiño local que falta pode converterse nun modelo remoto?
1:38 Checkmarx demostrou a "Model Confusion". Un camiño de modelo local que falta podería resolverse nun repositorio público cun nome coincidente. Combina iso co código remoto activado, e o paquete incorrecto pode executarse. Esta foi unha demostración de investigación que involucrou unha mostra dunha empresa sen nome, correxida nun día. Unha carpeta que faltaba adquiriu un propietario. ReversingLabs informou de dúas mostras en febreiro de 2025,
Como evitaron os paquetes rotos o antigo escáner?
1:58 chamando á técnica "nullify AI". Ambos contian "reverse shells". O seu empaquetado "seven zip" bloqueou a carga ordinaria de PyTorch, polo que este camiño requiría extracción e deserialización insegura. As secuencias rotas de Pickle tamén expuxeron un punto cego do escáner. Unha exploración errada merece unha investigación antes de que alguén abra o paquete. Na proba inofensiva dos investigadores, as instrucións escribiron un ficheiro antes de que o cargador
2:18 chegase á parte rota e lanzase un erro. Imaxina abrir un paquete, liberar o mapache e despois notar que a etiqueta de envío non é válida. A mensaxe de erro chega con excelente gramática e pésima sincronización. Hugging Face eliminou as mostras informadas en vinte e catro horas e cambiou o escáner. Ese achado específico provocou unha corrección. Unha exploración de seguridade é unha evidencia útil, e tratar cada erro do escáner como un "bill of health" limpo segue sendo unha interpretación notablemente xenerosa do fracaso.
2:43 Prefira "safe tensors" e cargadores parcheados actuais.
Que mantén a chave fóra do alcance do convidado?
2:46 PyTorch restrinxiu o seu cargador predeterminado a partir da versión 2.6. Revise o código personalizado e fixe a revisión revisada. Execute paquetes non familiares de forma illada sen chaves persoais, con acceso á rede restrinxido. Un contedor cheo de credenciais montadas é unha cesta de agasallos con "namespaces". Ese enigma inicial ten unha resposta. O fallo de carga indica onde se detivo a execución. As instrucións anteriores xa poderían terse executado.
3:08 Manteña os segredos fóra do seu alcance antes de abrir o paquete. Veredicto, entre bastidores.
Por que selaría isto como NEEDS REVIEW?
3:16 cargador. A descarga gratuíta debe incluír un modelo, e a lista de convidados debe seguir sendo a miña decisión. Se prefire ler isto que escoitarmo a min, a "diff" chega á súa caixa de entrada todas as mañás, de balde en thedailydiff.dev, ligazón a continuación. Esa é a "diff" de hoxe. Son Niko de Axrisi. Fusionar con responsabilidade.
Fontes
- 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



