PyTorch: Kit de ferramentas de aprendizado de máquina desenvolvido do Natal ao Ano Novo PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

PyTorch: kit de ferramentas de aprendizado de máquina é vendido do Natal ao Ano Novo

PyTorch é um dos kits de ferramentas de aprendizado de máquina mais populares e amplamente usados ​​que existem.

(Não vamos nos preocupar com sua posição no ranking de inteligência artificial – como acontece com muitas ferramentas de código aberto amplamente utilizadas em um campo competitivo, a resposta parece depender de a quem você pergunta e de qual kit de ferramentas eles usam. eles mesmos.)

Originalmente desenvolvido e lançado como um projeto de código aberto pelo Facebook, agora Meta, o software foi entregue à Linux Foundation no final de 2022, que agora o administra sob a égide da PyTorch Foundation.

Infelizmente, o projeto foi comprometido por meio de um ataque à cadeia de suprimentos durante a época festiva do final de 2022, entre o dia de Natal [2022-12-25] e a véspera de Ano Novo [2022-12-30].

Os invasores criaram maliciosamente um pacote Python chamado torchtriton no PyPI, o popular repositório Python Package Index.

O nome torchtriton foi escolhido para corresponder ao nome de um pacote no próprio sistema PyTorch, levando a uma situação perigosa explicado pela equipe PyTorch (grifo nosso) da seguinte forma:

[Um] pacote de dependência maliciosa (torchtriton) […] foi carregado no repositório de código Python Package Index (PyPI) com o mesmo nome de pacote daquele que enviamos no índice de pacotes noturnos PyTorch. Como o índice PyPI tem precedência, este pacote malicioso estava sendo instalado em vez da versão do nosso repositório oficial. Este design permite que alguém registre um pacote com o mesmo nome que existe em um índice de terceiros, e pip instalará sua versão por padrão.

O programa pip, aliás, costumava ser conhecido como pyinstall, e aparentemente é uma piada recursiva que é a abreviação de pip installs packages. Apesar do nome original, não serve para instalar o Python em si – é a maneira padrão para os usuários do Python gerenciarem bibliotecas de software e aplicativos escritos em Python, como PyTorch e muitas outras ferramentas populares.

Atormentado por um truque da cadeia de suprimentos

Qualquer pessoa que tenha a infelicidade de instalar a versão proprietária do PyTorch durante o período de perigo quase certamente acabará com malware de roubo de dados implantado em seu computador.

De acordo com o curto, mas útil, próprio PyTorch análise do malware, os invasores roubaram alguns, a maioria ou todos os seguintes dados significativos dos sistemas infectados:

  • Informações do sistema, incluindo nome do host, nome de usuário, usuários conhecidos no sistema e o conteúdo de todas as variáveis ​​de ambiente do sistema. As variáveis ​​de ambiente são uma forma de fornecer dados de entrada somente na memória que os programas podem acessar quando são inicializados, muitas vezes incluindo dados que não deveriam ser salvos em disco, como chaves criptográficas e tokens de autenticação que dão acesso a serviços baseados em nuvem. A lista de usuários conhecidos é extraída de /etc/passwd, que, felizmente, não contém nenhuma senha ou hashes de senha.
  • Sua configuração local do Git. Isso é roubado de $HOME/.gitconfige normalmente contém informações úteis sobre a configuração pessoal de qualquer pessoa que use o popular sistema de gerenciamento de código-fonte Git.
  • Suas chaves SSH. Estes são roubados do diretório $HOME/.ssh. As chaves SSH normalmente incluem as chaves privadas usadas para conexão segura via SSH (secure shell) ou usando SCP (cópia segura) a outros servidores em suas próprias redes ou na nuvem. Muitos desenvolvedores mantêm pelo menos algumas de suas chaves privadas não criptografadas, para que os scripts e ferramentas de software que eles usam possam se conectar automaticamente a sistemas remotos sem parar para pedir uma senha ou chave de segurança de hardware todas as vezes.
  • Os primeiros 1000 arquivos em seu diretório inicial são menores que 100 kilobytes. A descrição do malware PyTorch não diz como a “lista dos primeiros 1000 arquivos” é calculada. O conteúdo e a ordem das listagens de arquivos dependem de a lista estar classificada em ordem alfabética; se os subdiretórios são visitados antes, durante ou depois do processamento dos arquivos em qualquer diretório; se arquivos ocultos estão incluídos; e se alguma aleatoriedade é usada no código que percorre os diretórios. Você provavelmente deve presumir que quaisquer arquivos abaixo do limite de tamanho podem ser roubados.

Neste ponto, mencionaremos as boas notícias: apenas aqueles que buscavam a versão chamada “noturna”, ou experimental, do software corriam risco. (O nome “nightly” vem do fato de ser a versão mais recente, normalmente criada automaticamente no final de cada dia útil.)

A maioria dos usuários do PyTorch provavelmente seguirá a chamada versão “estável”, que não foi afetada por este ataque.

Além disso, pelo relatório do PyTorch, parece que o arquivo executável do malware Triton visava especificamente ambientes Linux de 64 bits.

Portanto, presumimos que esse programa malicioso só seria executado em computadores Windows se o Windows Subsystem for Linux (WSL) estivesse instalado.

Não se esqueça, porém, de que as pessoas com maior probabilidade de instalar “nightlies” regulares incluem desenvolvedores do próprio PyTorch ou de aplicativos que o utilizam – talvez incluindo seus próprios desenvolvedores internos, que podem ter acesso baseado em chave privada à construção corporativa , servidores de teste e produção.

Roubo de dados DNS

Curiosamente, o malware Triton não exfiltra seus dados (o termo do jargão militarista que a indústria de segurança cibernética gosta de usar em vez de roubar or copiar ilegalmente) usando HTTP, HTTPS, SSH ou qualquer outro protocolo de alto nível.

Em vez disso, ele criptografa e codifica os dados que deseja roubar em uma sequência do que parecem ser “nomes de servidores” que pertencem a um nome de domínio controlado pelos criminosos.

Isso significa que, ao fazer uma sequência de pesquisas de DNS, os criminosos podem roubar uma pequena quantidade de dados em cada solicitação falsa.

Este é o mesmo tipo de truque que foi usado por Hackers Log4Shell no final de 2021, que vazou chaves de criptografia fazendo pesquisas DNS em busca de “servidores” com “nomes” que por acaso eram o valor de sua chave de acesso secreta da AWS, roubada de uma variável de ambiente na memória.

Então, o que parecia ser uma pesquisa de DNS inocente, embora inútil, para um “servidor” como S3CR3TPA55W0RD.DODGY.EXAMPLE vazaria silenciosamente sua chave de acesso sob o pretexto de uma simples pesquisa direcionada ao servidor DNS oficial listado para o DODGY.EXAMPLE domínio.


DEMO AO VIVO DO LOG4SHELL EXPLICANDO A EXFILTRAÇÃO DE DADOS VIA DNS

[Conteúdo incorporado]

Se você não conseguir ler o texto claramente aqui, tente usar o modo de tela cheia ou assistir diretamente no YouTube.
Clique na engrenagem do player de vídeo para acelerar a reprodução ou ativar as legendas.


Se os bandidos são donos do domínio DODGY.EXAMPLE, eles informam ao mundo a qual servidor DNS se conectar ao fazer essas pesquisas.

Mais importante ainda, mesmo redes que filtram estritamente conexões de rede baseadas em TCP usando HTTP, SSH e outros protocolos de compartilhamento de dados de alto nível…

…às vezes nem filtra as conexões de rede baseadas em UDP usadas para pesquisas de DNS.

A única desvantagem para os criminosos é que as solicitações de DNS têm um tamanho bastante limitado.

Os nomes de servidores individuais são limitados a 64 caracteres de um conjunto de 37 (A-Z, 0-9 e o símbolo de traço ou hífen), e muitas redes limitam os pacotes DNS individuais, incluindo todas as solicitações, cabeçalhos e metadados incluídos, a apenas 512 bytes cada.

Acreditamos que é por isso que o malware, neste caso, começou perseguindo suas chaves privadas e depois se restringiu a no máximo 1000 arquivos, cada um menor que 100,000 bytes.

Dessa forma, os criminosos conseguem roubar muitos dados privados, incluindo chaves de acesso ao servidor, sem gerar um número incontrolavelmente grande de pesquisas de DNS.

Um número incomumente grande de pesquisas de DNS pode ser notado por motivos operacionais de rotina, mesmo na ausência de qualquer escrutínio aplicado especificamente para fins de segurança cibernética.

O que fazer?

O PyTorch já tomou medidas para encerrar esse ataque, então, se você ainda não foi atingido, é quase certo que não será atingido agora, porque o ataque malicioso torchtriton O pacote no PyPI foi substituído por um pacote vazio deliberadamente “insuficiente” com o mesmo nome.

Isto significa que qualquer pessoa, ou qualquer software, que tente instalar torchtriton do PyPI após 2022/12/30:08:38Z, seja por acidente ou intencionalmente, não receberia o malware.

O pacote PyPI desonesto após a intervenção do PyTorch.

PyTorch publicou uma lista útil de IoCs, ou indicadores de compromisso, que você pode pesquisar em sua rede.

Lembre-se, como mencionamos acima, que mesmo que quase todos os seus usuários fiquem com a versão “estável”, que não foi afetada por este ataque, você pode ter desenvolvedores ou entusiastas que experimentam “noites”, mesmo que usem a versão estável. liberar também.

De acordo com PyTorch:

  • O malware é instalado com o nome do arquivo triton. Por padrão, você esperaria encontrá-lo no subdiretório triton/runtime no diretório de pacotes do site Python. Dado que os nomes dos arquivos por si só são indicadores fracos de malware, trate a presença desse arquivo como evidência de perigo; não trate sua ausência como uma certeza.
  • O malware neste ataque específico tem a soma SHA256 2385b294­89cd9e35­f92c0727­80f903ae­2e517ed4­22eae672­46ae50a5cc738a0e. Mais uma vez, o malware pode ser facilmente recompilado para produzir uma soma de verificação diferente; portanto, a ausência desse arquivo não é um sinal de integridade definitiva, mas você pode tratar sua presença como um sinal de infecção.
  • Pesquisas de DNS usadas para roubar dados terminaram com o nome de domínio H4CK.CFD. Se você tiver logs de rede que registram pesquisas de DNS por nome, poderá pesquisar essa sequência de texto como evidência de vazamento de dados secretos.
  • As respostas DNS maliciosas aparentemente foram para, e as respostas, se houver, vieram de um servidor DNS chamado WHEEZY.IO. No momento, não conseguimos encontrar nenhum número IP associado a esse serviço, e o PyTorch não forneceu nenhum dado IP que vinculasse o tráfego DNS a esse malware, portanto, não temos certeza do quanto essas informações são úteis para a caça a ameaças. no momento [2023-01-01T21:05:00Z].

Felizmente, presumimos que a maioria dos usuários do PyTorch não terá sido afetada por isso, seja porque não usam compilações noturnas, ou porque não trabalharam durante o período de férias, ou ambos.

Mas se você é um entusiasta do PyTorch que mexe em construções noturnas e tem trabalhado durante as férias, mesmo que não consiga encontrar nenhuma evidência clara de que foi comprometido…

… mesmo assim, você pode querer considerar a geração de novos pares de chaves SSH como precaução e a atualização das chaves públicas que você carregou nos vários servidores que você acessa via SSH.

Se você suspeita que foi comprometido, é claro, não adie as atualizações da chave SSH – se ainda não as fez, faça-as agora mesmo!


Carimbo de hora:

Mais de Segurança nua