Backdoor em vez de um Teste: Uma Análise Detalhada de um Ataque em um Repositório GitHub
Um desenvolvedor de front-end se deparou com um backdoor disfarçado em um teste técnico, revelando um ataque sofisticado que explorava o arquivo tailwind.config.js para instalar um malware. O artigo detalha a engenharia reversa do código malicioso, as táticas de ofuscação e as recomendações de segurança para desenvolvedores.
MundiX News·13 de maio de 2026·10 min de leitura·👁 3 views
Backdoor em vez de um Testo
Recentemente, um desenvolvedor se deparou com uma situação alarmante ao tentar concluir um teste técnico para uma vaga de emprego. O que parecia ser um projeto simples de front-end revelou-se um ataque sofisticado, com um backdoor escondido no arquivo tailwind.config.js. Este artigo detalha a análise do código malicioso, as táticas de ofuscação empregadas e as lições aprendidas para a comunidade de desenvolvedores.
O Convite e a Descoberta
O desenvolvedor recebeu um convite no LinkedIn de um indivíduo que se apresentou como gerente de projeto. Após enviar o currículo e passar por uma breve entrevista, foi solicitado que realizasse um teste técnico. O link fornecido para o repositório GitHub (https://github.com/Stash-Home/Home-assignment-u, que já foi removido) chamou a atenção por seu tamanho incomum (mais de 5MB) para um teste. A ausência de forks, algo comum em repositórios de testes, também levantou suspeitas.
Ao analisar o código, o desenvolvedor descobriu uma longa string JavaScript ofuscada no final do arquivo tailwind.config.js. A string, aparentemente inofensiva, continha um código malicioso que, ao ser executado, realizava diversas ações prejudiciais. O código utilizava módulos como fs, os, request, path, node:process e child_process para se comunicar com servidores C2 (Command and Control), coletar informações do sistema e baixar um payload adicional.
Engenharia Reversa e Ofuscação
A ofuscação do código foi realizada em várias camadas para dificultar a análise. O código utilizava um array de strings em base64, que eram decodificadas por meio de funções complexas. A função a0a1(), por exemplo, recuperava strings do array e as decodificava, enquanto outras funções, como n(), removiam caracteres desnecessários e decodificavam o restante em base64. Além disso, algumas strings eram representadas como arrays de números e submetidas a operações XOR com uma chave.
Após a desofuscação, o código revelou sua verdadeira natureza. Ele se conectava a servidores C2 em 78.142.218.26:1244 e 66.235.168.17:1244, enviava um "fingerprint" mínimo da máquina e baixava um segundo payload em ~/.vscode/f.js. O código também criava um arquivo ~/.vscode/package.json, executava npm install e, finalmente, executava o payload em segundo plano usando node/nohup.
Funcionamento do Backdoor
O código malicioso, em resumo, funcionava da seguinte forma:
Comunicação Inicial: O código entrava em contato com um servidor C2 para obter instruções e o endereço do servidor para download do payload.
Coleta de Informações: O código coletava informações básicas do sistema, como hostname, sistema operacional e nome de usuário (no macOS).
Download do Payload: O código baixava um segundo estágio de malware (f.js) e o salvava em um diretório oculto (~/.vscode).
Instalação de Dependências: O código criava um projeto npm local e instalava as dependências necessárias para o payload.
Execução em Segundo Plano: O payload era executado em segundo plano, permitindo que o malware continuasse a operar mesmo após o término do processo de teste.
Análise do Payload
O payload principal, contido em f.js, é o componente mais perigoso do ataque. Ele é responsável por realizar as ações maliciosas específicas, que podem incluir:
Roubo de Dados: Coleta de informações sensíveis, como credenciais, chaves de API, dados de navegação e arquivos.
Instalação de Ransomware: Criptografia de arquivos e solicitação de resgate.
Acesso Remoto: Criação de um backdoor para permitir o acesso remoto ao sistema infectado.
Propagação: Tentativa de infectar outros sistemas na rede.
Recomendações de Segurança
Este ataque destaca a importância de adotar práticas de segurança rigorosas ao lidar com projetos de código, especialmente aqueles provenientes de fontes desconhecidas. As seguintes recomendações podem ajudar a mitigar os riscos:
Nunca execute projetos desconhecidos imediatamente: Analise o código antes de executá-lo.
Use ferramentas de análise estática: Utilize ferramentas como grep para identificar padrões suspeitos no código.
Verifique as dependências do projeto: Examine o arquivo package.json em busca de dependências suspeitas, como módulos core do Node.js instalados diretamente do npm.
Use npm ci ou npm install --ignore-scripts: Desabilite a execução de scripts de ciclo de vida do npm para evitar a execução de código malicioso durante a instalação.
Execute projetos em ambientes isolados: Utilize máquinas virtuais ou contêineres para executar projetos de fontes desconhecidas.
Marque projetos não confiáveis em sua IDE: Utilize os recursos de segurança da sua IDE para evitar a execução acidental de código malicioso.
Monitore o tráfego de rede: Monitore o tráfego de rede para detectar comunicações suspeitas com servidores C2.
Verifique a reputação do GitHub: Avalie cuidadosamente a conta do GitHub do qual você está baixando o código, procurando por atividades suspeitas, como projetos duplicados ou falta de interação social.
Conclusão
O ataque descrito neste artigo é um lembrete da importância da vigilância e da adoção de práticas de segurança robustas no desenvolvimento de software. Ao entender as táticas empregadas pelos invasores e seguir as recomendações de segurança, os desenvolvedores podem proteger seus sistemas e dados contra ameaças maliciosas.
🛡️⚡
Pare de pesquisar. Comece a hackear.
O MundiX é seu copiloto de pentest com IA: comandos exatos, análise de outputs e próximo passo na kill chain — em segundos.
Sem cartão para começar · Planos a partir de R$49/mês
Backdoor em vez de um Testo
Recentemente, um desenvolvedor se deparou com uma situação alarmante ao tentar concluir um teste técnico para uma vaga de emprego. O que parecia ser um projeto simples de front-end revelou-se um ataque sofisticado, com um backdoor escondido no arquivo tailwind.config.js. Este artigo detalha a análise do código malicioso, as táticas de ofuscação empregadas e as lições aprendidas para a comunidade de desenvolvedores.
O Convite e a Descoberta
O desenvolvedor recebeu um convite no LinkedIn de um indivíduo que se apresentou como gerente de projeto. Após enviar o currículo e passar por uma breve entrevista, foi solicitado que realizasse um teste técnico. O link fornecido para o repositório GitHub (https://github.com/Stash-Home/Home-assignment-u, que já foi removido) chamou a atenção por seu tamanho incomum (mais de 5MB) para um teste. A ausência de forks, algo comum em repositórios de testes, também levantou suspeitas.
Ao analisar o código, o desenvolvedor descobriu uma longa string JavaScript ofuscada no final do arquivo tailwind.config.js. A string, aparentemente inofensiva, continha um código malicioso que, ao ser executado, realizava diversas ações prejudiciais. O código utilizava módulos como fs, os, request, path, node:process e child_process para se comunicar com servidores C2 (Command and Control), coletar informações do sistema e baixar um payload adicional.
Engenharia Reversa e Ofuscação
A ofuscação do código foi realizada em várias camadas para dificultar a análise. O código utilizava um array de strings em base64, que eram decodificadas por meio de funções complexas. A função a0a1(), por exemplo, recuperava strings do array e as decodificava, enquanto outras funções, como n(), removiam caracteres desnecessários e decodificavam o restante em base64. Além disso, algumas strings eram representadas como arrays de números e submetidas a operações XOR com uma chave.
Após a desofuscação, o código revelou sua verdadeira natureza. Ele se conectava a servidores C2 em 78.142.218.26:1244 e 66.235.168.17:1244, enviava um "fingerprint" mínimo da máquina e baixava um segundo payload em ~/.vscode/f.js. O código também criava um arquivo ~/.vscode/package.json, executava npm install e, finalmente, executava o payload em segundo plano usando node/nohup.
Funcionamento do Backdoor
O código malicioso, em resumo, funcionava da seguinte forma:
Comunicação Inicial: O código entrava em contato com um servidor C2 para obter instruções e o endereço do servidor para download do payload.
Coleta de Informações: O código coletava informações básicas do sistema, como hostname, sistema operacional e nome de usuário (no macOS).
Download do Payload: O código baixava um segundo estágio de malware (f.js) e o salvava em um diretório oculto (~/.vscode).
Instalação de Dependências: O código criava um projeto npm local e instalava as dependências necessárias para o payload.
Execução em Segundo Plano: O payload era executado em segundo plano, permitindo que o malware continuasse a operar mesmo após o término do processo de teste.
Análise do Payload
O payload principal, contido em f.js, é o componente mais perigoso do ataque. Ele é responsável por realizar as ações maliciosas específicas, que podem incluir:
Roubo de Dados: Coleta de informações sensíveis, como credenciais, chaves de API, dados de navegação e arquivos.
Instalação de Ransomware: Criptografia de arquivos e solicitação de resgate.
Acesso Remoto: Criação de um backdoor para permitir o acesso remoto ao sistema infectado.
Propagação: Tentativa de infectar outros sistemas na rede.
Recomendações de Segurança
Este ataque destaca a importância de adotar práticas de segurança rigorosas ao lidar com projetos de código, especialmente aqueles provenientes de fontes desconhecidas. As seguintes recomendações podem ajudar a mitigar os riscos:
Nunca execute projetos desconhecidos imediatamente: Analise o código antes de executá-lo.
Use ferramentas de análise estática: Utilize ferramentas como grep para identificar padrões suspeitos no código.
Verifique as dependências do projeto: Examine o arquivo package.json em busca de dependências suspeitas, como módulos core do Node.js instalados diretamente do npm.
Use npm ci ou npm install --ignore-scripts: Desabilite a execução de scripts de ciclo de vida do npm para evitar a execução de código malicioso durante a instalação.
Execute projetos em ambientes isolados: Utilize máquinas virtuais ou contêineres para executar projetos de fontes desconhecidas.
Marque projetos não confiáveis em sua IDE: Utilize os recursos de segurança da sua IDE para evitar a execução acidental de código malicioso.
Monitore o tráfego de rede: Monitore o tráfego de rede para detectar comunicações suspeitas com servidores C2.
Verifique a reputação do GitHub: Avalie cuidadosamente a conta do GitHub do qual você está baixando o código, procurando por atividades suspeitas, como projetos duplicados ou falta de interação social.
Conclusão
O ataque descrito neste artigo é um lembrete da importância da vigilância e da adoção de práticas de segurança robustas no desenvolvimento de software. Ao entender as táticas empregadas pelos invasores e seguir as recomendações de segurança, os desenvolvedores podem proteger seus sistemas e dados contra ameaças maliciosas.
📤 Compartilhar & Baixar
🧰 Ferramentas recomendadas
Divulgação: alguns links são patrocinados. Podemos receber comissão se você comprar — sem custo extra para você. Só indicamos o que faz sentido para a comunidade.