Ataque com código invisível atinge GitHub e outros repositórios
Pesquisadores da empresa Aikido Security revelaram uma campanha sofisticada de ataques à cadeia de suprimentos que utiliza código invisível baseado em Unicode para comprometer plataformas como GitHub, NPM e Open VSX. A técnica permite esconder comandos maliciosos de forma indetectável a olho nu, confundindo até mesmo ferramentas de segurança automatizadas e revisões de código manuais.
Tabela de conteúdos
Descoberta da campanha Glassworm
Entre os dias 3 e 9 de março, a equipe da Aikido Security detectou 151 pacotes maliciosos hospedados em repositórios públicos. Esses pacotes, segundo os pesquisadores, foram projetados para se parecerem com bibliotecas confiáveis amplamente usadas por desenvolvedores, em uma tática conhecida como typosquatting. O grupo responsável recebeu o nome de Glassworm, referência à natureza furtiva e translúcida do ataque.
Os códigos maliciosos continham trechos de Unicode invisível, tornando-os praticamente impossíveis de detectar visualmente. O restante do código, visível e legítimo, imitava pequenos ajustes ou correções de bugs, o que dava credibilidade às modificações. Essa engenharia social no código aumentou significativamente as chances de integração acidental por parte dos desenvolvedores.
O papel dos LLMs e da automação
Os analistas da Aikido acreditam que o grupo Glassworm está utilizando modelos de linguagem de grande porte (LLMs) para gerar e diversificar automaticamente centenas de pacotes falsos. Essa abordagem seria impossível de ser replicada manualmente em larga escala. Pesquisadores da empresa parceira Koi também confirmaram padrões de automação e similaridade linguística entre os pacotes, reforçando a suspeita de uso de inteligência artificial para fins maliciosos.
Como o código invisível funciona
O ataque tira proveito da seção Public Use Areas do padrão Unicode, reservada para caracteres especiais como bandeiras e emojis. Esses pontos de código são interpretados por máquinas, mas permanecem invisíveis para humanos. Em editores de texto e análises estáticas, aparecem como espaços em branco. Entretanto, quando o código é executado, o mecanismo do JavaScript os decodifica em instruções maliciosas.
Um dos exemplos analisados demonstrou a presença de um payload oculto dentro de uma sequência que aparentava estar vazia. Ao ser interpretada, a função eval() executava o código decodificado, permitindo desde o roubo de tokens até o acesso a credenciais privadas. Segundo os especialistas, parte dessas cargas foi transmitida usando a blockchain Solana como canal de entrega secundário.
O ressurgimento do Unicode invisível
Personagens Unicode invisíveis já haviam sido quase abandonados no desenvolvimento moderno. No entanto, desde 2024, começaram a ser redescobertos e explorados por cibercriminosos. Inicialmente, foram usados para injetar prompts ocultos em sistemas de IA generativa, conseguindo driblar mecanismos de segurança e inserindo instruções secretas em diálogos aparentemente neutros.
Apesar da criação de “barreiras” nos modelos de linguagem, ataques usando Unicode invisível continuam emergindo, demonstrando que a linha entre segurança e exposição é cada vez mais tênue. O caso recente marca a primeira aplicação massiva dessa técnica em escala de cadeia de suprimentos de software.
Mitigação e boas práticas de segurança
Para evitar a integração acidental de pacotes comprometidos, os pesquisadores recomendam inspeções profundas nas dependências antes da instalação. Desenvolvedores devem verificar nomes de pacotes para detectar pequenas variações e usar ferramentas de verificação automatizada que considerem caracteres invisíveis em Unicode. A adoção de ambientes isolados também ajuda a conter possíveis execuções maliciosas.
Organizações como a Aikido e a Koi vêm colaborando com a comunidade de desenvolvedores open source para aumentar a conscientização sobre os riscos e melhorar o monitoramento de uploads suspeitos. Embora parte dos 151 pacotes já tenha sido removida, especialistas acreditam que muito mais possam ter passado despercebidos.
Perguntas Frequentes sobre Ataque com código invisível atinge GitHub
O que é um ataque à cadeia de suprimentos em software?
Um ataque à cadeia de suprimentos ocorre quando cibercriminosos comprometem componentes de software legítimos — como bibliotecas ou pacotes — para infectar os sistemas dos desenvolvedores que os utilizam. Esses ataques exploram a confiança nas plataformas de código aberto.
Como funciona o código invisível baseado em Unicode?
O código malicioso é inserido por meio de caracteres Unicode das áreas de uso privado, invisíveis a olho nu. Embora pareçam espaços em branco, são traduzidos em comandos executáveis por interpretadores como o do JavaScript.
O grupo Glassworm está usando inteligência artificial?
Sim, análises indicam que o grupo utiliza grandes modelos de linguagem (LLMs) para automatizar a criação de pacotes falsos e disfarçá-los com documentação legítima, o que torna a detecção manual praticamente inviável.
Como os desenvolvedores podem se proteger?
Antes de instalar qualquer biblioteca, verifique cuidadosamente o nome do pacote, o histórico de commits e o autor. Ferramentas de análise de segurança avançadas também podem identificar caracteres Unicode invisíveis.
Considerações finais
O avanço de ataques como o conduzido pelo grupo Glassworm revela um novo patamar de sofisticação no cibercrime. A combinação de código invisível, IA generativa e a exploração de repositórios confiáveis cria um desafio sem precedentes para a segurança open source. À medida que a automação aumenta, a vigilância e a educação em segurança tornam-se essenciais para proteger o ecossistema digital.

