Pesquisadores de cibersegurança descobriram dois modelos maliciosos de aprendizado de máquina (ML) no Hugging Face que utilizavam uma técnica incomum de arquivos “pickle” corrompidos para evitar detecção.
“Os arquivos pickle extraídos dos arquivos de PyTorch mencionados revelaram o conteúdo Python malicioso no início do arquivo,” disse o pesquisador do ReversingLabs, Karlo Zanki, em um relatório compartilhado com o The Hacker News. “Em ambos os casos, a carga maliciosa era um típico shell reverso consciente da plataforma que se conecta a um endereço IP codificado.”
A abordagem foi apelidada de nullifAI, pois envolve tentativas claras de driblar as salvaguardas existentes para identificar modelos maliciosos. Os repositórios do Hugging Face foram listados abaixo –
– glockr1/ballr7
– who-r-u0000/0000000000000000000000000000000000000
Acredita-se que os modelos sejam mais um prova de conceito (PoC) do que um cenário ativo de ataque à cadeia de suprimentos.
O formato de serialização pickle, comumente usado para distribuir modelos de ML, foi repetidamente considerado um risco de 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 estão armazenados no formato PyTorch, que nada mais é do que um arquivo pickle comprimido. Enquanto o PyTorch usa o formato ZIP para compressão por padrão, os modelos identificados foram encontrados comprimidos usando o formato 7z.
Consequentemente, esse comportamento permitiu que os modelos passassem despercebidos e evitassem ser sinalizados como maliciosos pelo Picklescan, uma ferramenta usada pelo Hugging Face para detectar arquivos pickle suspeitos.
“Uma coisa interessante sobre este arquivo Pickle é que a serialização do objeto – o propósito do arquivo Pickle – quebra logo depois que a carga maliciosa é executada, 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 a desserialização funciona, fazendo com que o código malicioso seja executado apesar da ferramenta lançar uma mensagem de erro. A utilidade de código aberto 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 códigos de operação do Pickle são executados conforme são encontrados, e até que todos os códigos de operação sejam executados ou uma instrução quebrada seja encontrada. No caso do modelo descoberto, como a carga maliciosa é inserida no início do fluxo Pickle, a execução do modelo não seria detectada como insegura pelas ferramentas de verificação de segurança existentes do Hugging Face.”
Encontrou este artigo interessante? Siga-nos no Twitter e LinkedIn para ler mais conteúdo exclusivo que publicamos.