PackageDNA, nossa estrutura de análise de pacote de desenvolvimento que estreou na BlackHat

Diego Samuel Espitia    5 octubre, 2021
PackageDNA

Após vários meses de pesquisa e desenvolvimento, durante o evento BlackHat USA 2021 Arsenal, apresentamos nossa ferramenta de análise profunda para pacotes de desenvolvimento que chamamos de PackageDNA. Foi o que pôde ser visto durante a palestra “Scanning DNA para detectar pacotes maliciosos em seu código”, cujo objetivo foi mostrar o framework de análise de bibliotecas que foi programado para ajudar desenvolvedores e empresas a validar a segurança dos pacotes que estão sendo usados ​​em seus códigos.

Essa ferramenta surgiu quando nós, da equipe de Inovação e Laboratório, decidimos analisar o malware que está oculto nas bibliotecas de desenvolvedores. De vez em quando, tornava-se público que alguns deles suplantavam os originais, já no final de 2018, quando algumas bibliotecas PyPi foram alertadas. A história se repetiria muito desde então, mas como fazer a pesquisa sem uma ferramenta que facilite a pesquisa?

Nossa ideia inicial era levar apenas os pacotes PyPi, mas nos propusemos um desafio maior e a ideia evoluiu para levar as bibliotecas das principais linguagens de programação. Assim, tornou-se um framework, que deveria mostrar a cada pacote que analisou no PyPi, RubyGems, NPM e Go, os seguintes dados:

  • Metadados do pacote;
  • HASH de todos os arquivos que ele contém;
  • detecção de possíveis IoCs, como IPs, HASH, URLs e e-mails;
  • análise estática do código, com ferramenta open source para cada linguagem;
  • análise usando AppInspector, ferramenta de código aberto da Microsoft para identificar componentes maliciosos;
  • validação de arquivos suspeitos contra Virustotal;
  • validação do relatório CVE no GitHub, levando em consideração a versão específica do pacote;
  • validação de pacotes gerados pelo mesmo usuário dentro da biblioteca e em outras linguagens de programação;
  • verifique o possível typosquatting do pacote na mesma biblioteca.

Tudo isso terminou em uma estrutura poderosa que permite uma análise profunda das bibliotecas que estão sendo usadas no código que é analisado ou que está sendo criado, mas que também dá aos analistas de segurança uma visão estática da segurança do código, uma visão sobre comportamento do atacante e dados para inteligência de ameaças.

Como usar o PackageDNA?

O framework é desenvolvido em Python3 com um console interativo que permite ao usuário simplesmente selecionar o que deseja fazer. A primeira tela que o usuário vê é a seguinte:

A partir daqui você deve iniciar com a opção 7 a configuração de todas as ferramentas externas que estão associadas ao uso do framework (todas são de uso livre ou desenvolvimentos de código aberto). Como você pode ver na imagem a seguir, é apenas para carregar corretamente cada valor.

Depois que tudo estiver configurado, o usuário pode executar o seguinte nas bibliotecas PyPI, RubyGems, NPM e Go:

  1. Analise a versão mais recente de um pacote;
  2. analise todas as versões de um pacote e compare os resultados entre as versões;
  3. carregue uma lista de pacotes com versões específicas;
  4. faça upload de um pacote local para análise.

Para a análise de inteligência de ameaças, o usuário seleciona a opção 4 no painel inicial e permite que ele entre em outro painel onde pode realizar:

  1. Pesquisas dos pacotes gerados em cada uma das bibliotecas e desenvolvimentos carregados no github usando o nome de usuário que deseja investigar;
  2. analisar o «typosquatting» e «marksquiatting» encontrados em uma biblioteca específica de um pacote;
  3. pesquise por segmentos de código dentro de um pacote específico.

Embora a ferramenta seja desenhada sem um banco de dados que armazene todas as buscas, existe uma opção que permite revisar os resultados das análises realizadas e armazenadas localmente na máquina.

Tendo as informações inicialmente no console, mas com a opção de visualizá-las no navegador através do Flask, conforme pode ser visto nas imagens a seguir.

Ataques na cadeia de abastecimento, a melhor bancada de teste

Durante o desenvolvimento, os ataques à cadeia de suprimentos de software ganharam grande relevância no mundo, com relatos de vários pacotes que foram detectados como maliciosos em muitas bibliotecas que estavam ao nosso alcance. Não poderíamos ter um cenário de teste melhor.

Na verdade, fomos capazes de analisar versões do maratlib, um pacote PyPI que foi implantado para minerar criptomoedas maliciosamente e suplantou um pacote comumente usados em matemática chamado matplotlib.

Executando a ferramenta e utilizando a comparação nas duas versões, pudemos ver claramente o segmento de código malicioso que é detectado pelo AppInspector e que está presente em apenas uma das versões carregadas na biblioteca.

Mas, além disso, podemos observar os outros pacotes que aparecem no relatório e que são gerados usando técnicas de typosquatting.

Portanto, com esta estrutura, esperamos ser capazes de fornecer à comunidade de desenvolvedores e analistas de segurança de código um mecanismo simples, mas muito poderoso, para atingir seus objetivos. Você pode baixá-lo gratuitamente em https://github.com/telefonica/packagedna e estamos abertos aos seus comentários e contribuições para melhorar a ferramenta.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *