というか、いつの間にこのサイトが改竄されていたという話。
事の発端は、2026/8/7。
久しぶりにAIについて不満をたれる記事を書こうと思ったら、サイトが開けない。
ブラウザで開こうとすると、ESETさんが介入して、
JS/Agent.RMT trojan detected
と仰って開けない。
いやいや、ご冗談をファインマンさん、と思ってスマホで開いてみると、下の画像
WordPressの記事が書き換えられるレベルではなく、サイト全体が改竄されている。
2012年から運用しているが、初めて攻撃を受けた。
久しぶりに安心できる我が実家に帰ったら、家族がいなくなって強盗に居座られたような気分だ。
で、半日ほどかけて、事態の把握・原因究明・対策を行った。
その顛末をここに記しておく。
まず、被害が広がらないように緊急処置。
全てDocker containerで運用しているので、コンテナを停止するだけ。
これは楽ちん。
以前あれこれして、楽な環境を構築した甲斐があった。
緊急停止させた後に、原因究明に入る。
SSHのレベルで侵入されたら試合終了だが、さすがにそれはない様子。
コンテナ外は違和感なし。
だが、サイト全体が改竄されていると言うことは、WordPressのコントロールが奪取されているということだ。
極めて危険で、きちんと原因究明・対策をしないと、再起動することはできない。
で、セキュリティに関しては素人のおっさんなので、どこから手を付けていいか分からない。
ChatGPTに聞きながら、原因究明を進める。
まず、最近更新されたファイルを確認する。
ここ1か月は全くサイトをいじっていないが、怪しいphpやプラグインが出るわ出るわ。
ただ、これは攻撃を受けた(任意のphp/プラグインをアップロードされている)というだけで、原因究明にはつながらない。
攻撃の起点として考えられるのは、
1. アカウント管理からの不正ログイン
2. プラグイン脆弱性
3. 本体脆弱性
このサイトはザルだから、1番が可能性が高い。
で、分かるような分からないようなChatGPTと相談しながら、精査を進める。
究明の糸口になったのは、アカウント情報。
MariaDBに接続してアカウントリストを表示すると、
| 3 | wpsvc_71aa102784f2 | wpsvc_71aa102784f2@wordpress-svc.internal | 2026-07-19 04:16:39 |
| 4 | wpsvc_30e13cefe354 | wpsvc_30e13cefe354@wordpress-svc.internal | 2026-07-19 05:52:17 |
| 5 | bob_bda95b13aba2 | bob_bda95b13aba2@bobresearchlabs.com | 2026-07-19 20:45:09 |
と、知らないアカウントが(7/19に!)作成されている。
日本時間かUTCかは知らないが、かなりのスピード感だ。
そして、これはwp2shellのIoC(Indicator of Compromise / 侵害の痕跡)らしい。
wp2shellを調べると、以下のサイトが見つかり、同じような症状であることを確認した。
https://note.com/t_yabuhara/n/n27946b9b6523
CVE-2026-60137、CVE-2026-63030:wp2shell
結論としては、WordPress本体の脆弱性によるものであり、ユーザー側の問題ではなかった、と。
一般的なWordPressサイトには自動更新がかかるが、当サイトはコンテナ環境(bitnami/WordPress)なので、自動更新がかからなかった、と・・・
復旧
一番確実な対応は全初期化だが、幸いバックアップがある。
WordPressのコンテンツとMariaDBを、1日に1回 NASに送るようになっている。
NASはNASで、1週間に1回スナップショットを取る設定だ。
7/6のスナップショットをRestoreすれば、まっさらな状態に戻すことができる。
まずコンテナイメージをすべて最新に更新。
次に、sshhとMariaDBのみ動かして、NASから7/6のデータをコンテナに送信。
その後、
・DBパス、WordPressユーザー名の変更・パスワード変更。
・Salts 再生成
諸々対策を行って、WordPressを再起動、復旧した。
反省
- 月間アクセス数0のサイトだから大丈夫だろうという慢心があった。
- 十数年前に作成したadminアカウントがそのまま残っていた。
- WordPressプラグイン/bitnamiイメージは時々更新していたが、せいぜい数か月に一度。
学んだこと
- ユーザー側で対策をしていても、WordPress本体が抜かれたらどうしようもない。
- 更新(特に自動更新)は非常に大切だが、コンテナ環境だと難しい。
- アプリケーションファイアウォール導入かな。
- 後は、定番の2段階認証かな。
- やっぱりバックアップ/スナップショットは非常に大切。
