Um novo ataque à cadeia de suprimentos de software projetado para extrair dados de aplicativos e sites foi encontrado em mais de duas dúzias de pacotes NPM.
Ameaça -
No início deste mês, o ReversingLabs identificou o IconBurst, um ataque JavaScript NPM que instala módulos NPM maliciosos que coletam dados de formulários incorporados em aplicativos móveis e sites.
Propagação -
A propagação do ataque não está totalmente clara neste momento, no entanto, tem o potencial de infectar em massa sites e aplicações, que são construídos por desenvolvedores que utilizam estes pacotes. Como cada desenvolvedor pode construir vários sites, a ameaça é ampliada. Com alguns dos pacotes sendo baixados dezenas de milhares de vezes, o escopo estimado pode ser tão difundido quanto infecções em massa anteriores, como Log4J e SolarWinds. Embora o Log4J tenha sido mais difundido e o SolarWinds tenha tido um impacto maior, o dano final pode ser igualmente significativo.
Tecnologia -
Os pacotes usam scripts jQuery com o objetivo de roubar dados de aplicativos implantados.
Além disso, o IconBurst usa um ofuscador JavaScript para ocultar parte do código. Um ofuscador normalmente serve para proteger código proprietário em pacotes de código aberto e compactar arquivos JavaScript. No entanto, o IconBurst o utiliza para ocultar o endereço de exfiltração usado na extração de dados de formulário serializados.
Isso significa que os desenvolvedores que usam esses pacotes falsos sem saber não são o alvo do ataque, o verdadeiro alvo é o usuário final.
Infecção -
Vinte e quatro pacotes que utilizam métodos typosquatting como meio de distribuição foram identificados desde o início deste ano.
Os invasores usam técnicas de typosquatting, o que significa personificar pacotes legítimos por meio de repositórios públicos, como o NPM.
IconBurst se concentra em pacotes que contêm a palavra “Icon”, representando módulos NPM de alto tráfego e oferecendo pacotes com nomes confusos e comuns com erros ortográficos.
Typosquatting é uma forma de ataque de ciberespeculação e uma forma de ataque de engenharia social.
Por que usar “icon” como palavra-chave base – o motivo provavelmente é o pacote ionicons, usado frequentemente para fornecer ícones em aplicativos construídos usando a estrutura ionic.
Com uma contagem de downloads de mais de 17000 para o pacote de ícones, de longe o pacote mais baixado, e mais de 3700 para o pacote ionício.
Bandeira -
Então o que fez ReversingLabs levantar a proverbial bandeira vermelha? Ofuscador Javascript.
Conforme mencionado, um ofuscador javascript tem como objetivo proteger aplicativos Javascript, permitindo que os desenvolvedores protejam o código contra cópia ou engenharia reversa.
No entanto, a desvantagem desta capacidade é que ela pode ser explorada por invasores para disfarçar códigos maliciosos.
A presença de um ofuscador javascript foi o que fez os engenheiros do ReversingLabs inspecionarem vários pacotes NPM. Ao observar os nomes desses pacotes, surgiu um padrão. Alguns dos primeiros pacotes inspecionados continham a palavra “ícone”, foi aí que a estratégia dos invasores ficou clara: agachar-se com erros de digitação e infectar em massa.
Os invasores não tentaram mirar especificamente em pacotes com a palavra ícone; no entanto, em última análise, a maioria dos pacotes baixados estava relacionada a ícones, devido à sua popularidade.
Hance – “IconBurst”
Aqui está a lista:
Autor/Nome do pacote | Contagem de download | Nome do pacote original |
---|---|---|
ícone iônico | 108 | iônicos |
Iônico | 3,724 | iônicos |
pacote de ícones | 17,774 | iônicos |
ajax-libs | 2,440 | |
guarda-chuvas | 686 | guarda-chuvajs |
biblioteca ajax | 530 | |
pacote de ícones | 101 | |
pacote-sidr | 91 | |
kbrstore | 89 | |
pacote de ícones | 380 | |
subek | 99 | |
show de pacotes | 103 | |
ícone do pacote | 122 | |
pacotes de ícones | 170 | |
pacote ionicon | 64 | |
pacote de ícones | 49 | |
ícones de pacote | 468 | |
pacote de íons | 89 | |
pacote-ionicons | 144 | |
pacote-ionicon | 57 | |
base64-javascript | 40 | |
ionicons-js | 38 | |
ionicons-json | 39 | |
rodapé | 1,903 | |
rugido-01 | 40 | |
rugido-02 | 37 | |
wkwk100 | 38 | |
swiper-bundie | 39 | swiper |
ajax-libz | 40 | |
pacote de swiper | 185 | swiper |
atez | 43 | |
ajax-googleapis | 38 | |
tezdoank | 69 | |
ajaxapis | 40 | |
tescodek | 38 | |
atezzz | 114 | |
libz.jquery | 160 | |
biblioteca ajax | 36 |
Intenção -
IconBurst foi projetado para atingir o usuário final e obter dados inseridos em formulários. Outros ataques podem ter como alvo outros tipos de dados ou outros tipos de público-alvo, e não os usuários finais.
Mas os invasores estão sempre atrás de dados? Na verdade não, eles não são. Vimos outros tipos de ataques; os invasores usaram códigos ocultos em pacotes e conseguiram instalar mineradores de criptografia, visando os recursos das máquinas atacadas (poder computacional) e não afetando em nada seus dados.
Resumo -
IconBurst demonstra a capacidade de usar o que é uma tecnologia bastante simples, um ofuscador de JavaScript que disfarça código malicioso e se faz passar por pacotes legítimos por meio de repositórios públicos, como o NPM.
O verdadeiro ás na manga do IconBurst é engenharia social, não tecnologia altamente sofisticada, e pode ser igualmente eficaz.
Este conteúdo é oferecido a você pela Scribe Security, um fornecedor líder de soluções de segurança de cadeia de suprimentos de software ponta a ponta – fornecendo segurança de última geração para artefatos de código e processos de desenvolvimento e entrega de código em todas as cadeias de suprimentos de software. Saiba mais.