Pesquisadores de cibersegurança descobriram dois modelos de machine learning (ML) maliciosos na plataforma Hugging Face, que utilizaram uma técnica incomum de arquivos pickle "corrompidos" para evitar detecção.
"Os arquivos pickle extraídos dos arquivos PyTorch mencionados revelaram o conteúdo Python malicioso no início do arquivo", disse o pesquisador da ReversingLabs, Karlo Zanki, em um relatório compartilhado.
Em ambos os casos, o payload maliciosa era um shell reverso típico ciente da plataforma que se conecta a um endereço IP codificado diretamente no código.
A abordagem foi apelidada de nullifAI, pois envolve tentativas claras de contornar as salvaguardas existentes colocadas para identificar modelos maliciosos.
Os repositórios do Hugging Face listados são:
- glockr1/ballr7
- who-r-u0000/0000000000000000000000000000000000000
Acredita-se que os modelos sejam mais uma prova de conceito (PoC) do que um cenário ativo de ataque à cadeia de suprimentos.
O formato de serialização pickle, comum para distribuir modelos de ML, foi repetidamente identificado como um risco à segurança, pois oferece maneiras de executar código arbitrário assim que são carregados e desserializados.
Os dois modelos detectados pela empresa de cibersegurança são armazenados no formato PyTorch, que não é nada mais que um arquivo pickle comprimido.
Enquanto o PyTorch utiliza o formato ZIP para compressão por padrão, os modelos identificados foram encontrados comprimidos usando o formato 7z.
Consequentemente, esse comportamento possibilitou que os modelos passassem despercebidos e evitassem ser marcados como maliciosos pelo Picklescan, uma ferramenta usada pelo Hugging Face para detectar arquivos pickle suspeitos.
"O interessante sobre este arquivo pickle é que a serialização do objeto — o propósito do arquivo pickle — se rompe logo após a execução do payload malicioso, resultando na falha da decompilação do objeto", disse Zanki.
Análises adicionais revelaram que tais arquivos pickle corrompidos ainda podem ser parcialmente desserializados devido à discrepância entre o Picklescan e como funciona a desserialização, causando a execução do código malicioso apesar da ferramenta apresentar uma mensagem de erro.
A utilidade de código aberto desde então foi atualizada para corrigir esse bug.
"A explicação para esse comportamento é que a desserialização do objeto é realizada em arquivos pickle sequencialmente", observou Zanki.
Os opcodes do pickle são executados à medida que são encontrados, e até que todos os opcodes sejam executados ou uma instrução quebrada seja encontrada.
No caso do modelo descoberto, uma vez que o payload malicioso é inserida no início do stream do pickle, a execução do modelo não seria detectada como insegura pelas ferramentas de varredura de segurança existentes do Hugging Face.
Publicidade
Conheça a Solyd One, e tenha acesso a todos os cursos de segurança ofensiva da Solyd, todas as certificações práticas, incluindo a SYCP, 2 CTFs anuais com prêmios de até 30 mil reais, dezenas de laboratórios realísticos, suporte, comunidade e muito mais. Saiba mais...