Um novo ataque de tempo surgiu para direcionar pacotes de software corporativos privados hospedados no repositório de código npm. O objetivo é descobrir as ofertas legítimas e, em seguida, criar pacotes públicos maliciosos usando os mesmos nomes para induzir os funcionários a baixar os blocos doppelganger.
Projetos de desenvolvedores internos normalmente usam dependências de código padrão e confiáveis que são hospedadas em repositórios privados no npm e em outros lugares. A ideia é evitar ataques à cadeia de suprimentos de software e outros problemas de dependência de código e proteger o código interno sensível do desenvolvedor. Como tal, se eles podem ser sequestrados ou armados, eles fornecem um caminho atraente para os cibercriminosos que desejam invadir redes corporativas e exfiltrar informações confidenciais.
A confusão de dependência de código aumenta novamente
No ano passado, o pesquisador Alex Birsan foi pioneiro no que é conhecido como ataque de confusão de dependência de código , usando blocos de código de prova de conceito (PoC) benignos para direcionar aplicativos internos na Amazon, Lyft, Slack e Zillow, entre outros. Ele criou pacotes “copycat” para serem alojados em repositórios públicos como o npm, com os mesmos nomes das dependências de código legítimo privado. O que aconteceu foi que os projetos internos começaram a importar os novos pacotes públicos em vez dos privados.
A PoC demonstrou como o código externo pode ser importado e propagado por meio de aplicativos e sistemas internos de uma empresa direcionada, com relativa facilidade – inclusive na Apple, Microsoft, Netflix, PayPal, Shopify, Tesla e Uber. Sem surpresa, não demorou muito para que os agentes mal-intencionados replicassem o padrão de ataque.
Uma maneira de se defender contra esses tipos de ataques é manter os nomes dos pacotes em segredo para que eles não possam ser clonados. Mas, de acordo com a equipe de pesquisa Nautilus da Aqua Security, é possível revelar nomes de pacotes privados usando uma falha na API de registro do npm.
Um novo tipo de ataque de tempo
A API de registro do Npm permite aos usuários verificar a existência de pacotes, baixá-los e receber informações sobre eles. Se um usuário pesquisar um pacote privado ou um que não existe, o site gerará uma mensagem de erro HTTP 404 em ambos os casos. No entanto, há uma diferença na quantidade de tempo que leva para retornar essa página de erro: o tempo médio de resposta para 404 um pacote privado é de 648 milissegundos, enquanto o tempo médio quando um pacote não existe é de apenas 101 milissegundos.
“Se um agente de ameaças envia cerca de cinco solicitações consecutivas de informações sobre um pacote privado e analisa o tempo necessário para que o npm responda, é possível determinar se o pacote privado existe de fato”, disseram pesquisadores do Nautilus em um relatório publicado em 1º de outubro . 13 postagem do blog .
Existem alguns métodos que podem ser usados para criar uma lista de nomes de pacotes privados para testar com o ataque de tempo, de acordo com a pesquisa. Esses incluem:
- Adivinhe os nomes dos pacotes privados executando um ataque de dicionário usando os padrões encontrados na nomenclatura dos pacotes públicos das organizações.
- Use conjuntos de dados públicos online (como library.io) para acessar informações históricas sobre pacotes públicos que foram excluídos — estes podem ter sido convertidos em pacotes privados.
Os pesquisadores relataram o problema ao programa de recompensas de bugs do GitHub, do proprietário do npm, obtendo esta resposta: “Por causa dessas limitações arquitetônicas, não podemos impedir que ataques de tempo determinem se um pacote privado específico existe no npm”.
Para se proteger, disseram os pesquisadores, as corporações devem procurar ativamente por pacotes typosquatting, lookalikes ou copycat , e verificar se não há outros pacotes com o mesmo nome de pacotes privados internos hospedados em repositórios.
FONTE: DARK READING