複数のWordPressサイトを運用するサーバーで、defunctが動作していない場合に起動する処理と、実際に稼働していたdefunctプロセスを確認しました。1時間ごとのcronや.profileからBase64化されたコマンドを実行する構成があり、不正プロセスと関連設定の削除・修正、29サイトのWordPress環境に対する脆弱性対応や更新を実施しました。
対応概要
| 項目 | 内容 |
|---|---|
| 対応サイト数 | 29サイト |
| 対応時期 | 2025年5月22日~5月27日 |
| 不正プロセス | defunctを実行するプロセスを確認 |
| 定期実行 | 1時間ごとにBase64化されたコマンドを復号・実行する設定 |
| 実行時の名称 | [mm_percpu_wq]、[rcu_preempt] |
| 不正ファイル | .profile |
| WordPress | 主に6.8.1、1サイトで5.8.2から6.8.1へ更新 |
| 確認された脆弱性 | Custom Post Type Date Archives、Contact Form 7 |
| 不正インデックス | 29サイトすべて「なし」 |
調査で確認された内容
サーバー全体の調査では、defunctというプロセスの有無を確認し、動作していない場合に実行ファイルを起動する処理が確認されました。
この処理はcronに登録されており、0 * * * *の設定で1時間ごとに実行される構成でした。コマンド本体はBase64でエンコードされ、base64 -d | bashによって復号・実行されるようになっていました。
さらにホームディレクトリの.profileにも同系統の実行処理が追加されていました。WordPress側では29サイトの本体・プラグイン・テーマを確認し、脆弱性への対応と必要なバージョン更新を実施しました。
確認された不正プロセス
今回の案件で特徴的だったのは、単に不審なファイルが配置されていただけではなく、defunctを継続的に起動するための実行設定と、実際に稼働しているプロセスが確認された点です。
defunctの有無を確認して起動する処理
cronに登録されていたBase64文字列を復号すると、最初にdefunctプロセスが存在するかを確認し、存在しない場合に実行ファイルを起動する構成になっていました。
処理の中心となっていた内容は次のとおりです。
| 処理 | 確認された内容 |
|---|---|
| 実行間隔 | 0 * * * *により1時間ごとに実行 |
| プロセス確認 | pkill -0を使用してdefunctの動作状況を確認 |
| コマンド実行 | Base64文字列をbase64 -dで復号しbashで実行 |
| 実行ファイル | WordPressテーマディレクトリ内のdefunctを指定 |
| 参照ファイル | 同ディレクトリのdefunct.datを指定 |
| 実行時の名称 | exec -aで[mm_percpu_wq]を指定 |
pkill -0による確認と||を組み合わせており、defunctが確認できない場合に後続の起動処理が実行される構成でした。
また、実行時にはexec -aによって[mm_percpu_wq]という名称が指定されていました。
.profileにも別の起動処理を確認
ホームディレクトリの.profileにも、同様にBase64化されたコマンドを復号して実行する記述が追加されていました。
こちらもdefunctの有無を確認したうえで、動作していない場合にホームディレクトリ配下の.config/htop/defunctを起動する構成です。
| 項目 | 確認された内容 |
|---|---|
| 設定ファイル | .profile |
| 実行ファイル | .config/htop/defunct |
| 参照ファイル | .config/htop/defunct.dat |
| プロセス確認 | defunctが動作しているか確認 |
| 実行時の名称 | exec -aで[rcu_preempt]を指定 |
cron側の[mm_percpu_wq]とは異なり、.profile側では[rcu_preempt]という名称が指定されていました。
稼働中のdefunctプロセスも確認
プロセス情報の調査では、2つのPIDについて、/proc/[PID]/exeの参照先がWordPressテーマ配下のdefunctになっている状態が確認されました。
参照先は次の形式です。
/wp-content/themes/twentytwentytwo/inc/patterns/defunct
いずれも確認時には(deleted)と表示されていました。これは実行ファイルが削除された後も、該当プロセスが動作していた状態を示しています。
今回の対応では、これらの不正プロセスと関連する実行設定を削除しました。
サイトごとの調査・対応内容
サイト1
WordPress本体は6.8.1で変更せず、SWELLテーマを更新しました。
サイト2
WordPress本体は6.8.1で変更せず、脆弱性が確認されたCustom Post Type Date Archives 2.7.1を削除しました。
サイト3
WordPress本体6.8.1とプラグインの状態を確認しました。本体のバージョン変更は実施していません。
サイト4
WordPress本体は6.8.1で変更せず、Lightning G3 Pro UnitとVK Blocks Proを更新しました。
サイト5
WordPress本体6.8.1とプラグインの状態を確認しました。本体のバージョン変更は実施していません。
サイト6
WordPress本体は6.8.1で、バージョン変更は実施していません。
サイト7
WordPress本体は6.8.1で、バージョン変更は実施していません。
サイト8
WordPress本体は6.8.1で変更せず、VK All in One Expansion UnitとYoast SEOを更新しました。
サイト9
WordPress本体6.8.1とプラグインの状態を確認しました。
サイト10
WordPress本体は6.8.1で、バージョン変更は実施していません。
サイト11
VK All in One Expansion UnitとYoast SEOを更新しました。WordPress本体は6.8.1から変更していません。
サイト12
Contact Form 7 5.5.6を6.0.6へ更新するなど、複数のプラグインを更新しました。
サイト13
WordPress本体を5.8.2から6.8.1へ更新しました。あわせてElementor、Custom Post Type UI、Yoast SEOなども更新しています。
サイト14
Contact Form 7 5.6.3を6.0.6へ更新したほか、Advanced Custom Fields、Elementor、Autoptimizeなど多数のプラグインを更新しました。
サイト15
VK All in One Expansion Unitのバージョン変更、Yoast SEOとLightningテーマの更新を実施しました。
サイト16
不正プロセスに関連するdefunctの参照先がWordPressテーマ配下で確認された環境です。WordPress側ではプラグインとLightningテーマの更新も実施しました。
サイト17
WordPress本体は6.8.1で変更せず、SWELLテーマを更新しました。
サイト18
WordPress本体は6.8.1で変更せず、SWELLテーマを更新しました。
サイト19
WordPress本体は6.8.1で変更せず、Lightningテーマを更新しました。
サイト20
WordPress本体は6.8.1で変更せず、SWELLテーマを更新しました。
サイト21
WordPress本体6.8.1とプラグインの状態を確認しました。
サイト22
WordPress本体6.8.1とプラグインの状態を確認しました。
サイト23
WordPress本体6.8.1とプラグインの状態を確認しました。
サイト24
WordPress本体は6.8.1で変更せず、Yoast SEOとSWELLテーマを更新しました。
サイト25
WordPress本体は6.8.1で、バージョン変更は実施していません。
サイト26
WordPress本体6.8.1とプラグインの状態を確認しました。
サイト27
WordPress本体は6.8.1で変更せず、Lightningテーマを14.20.3から15.29.7へ更新しました。
サイト28
WordPress本体は6.8.1で変更せず、SWELLテーマを更新しました。
サイト29
WordPress本体6.8.1とプラグインの状態を確認しました。
確認された不正ファイル
| ファイル | 確認された内容 |
|---|---|
.profile | Base64化されたコマンドを復号し、defunctの確認・起動を行う処理が追加されていた |
.profileに追加されていた不正な実行処理について、削除・修正を実施しました。
なお、不正プロセスの調査ではdefunctおよびdefunct.datを参照する処理も確認されています。
確認された脆弱性
| プラグイン | 調査時バージョン | 確認された内容 |
|---|---|---|
| Custom Post Type Date Archives | 2.7.1 | JVNDB-2025-002269。2.7.1以前が対象 |
| Contact Form 7 | 5.5.6、5.6.3 | CVE-2023-6449。5.8.3以前が対象 |
Custom Post Type Date Archives 2.7.1が使用されていたサイトでは、対象プラグインを削除しました。
Contact Form 7については、対象となる5.5.6および5.6.3が確認され、6.0.6への更新を実施しています。
実施したマルウェア駆除・復旧作業
defunctとして動作していた不正プロセスの削除defunctを1時間ごとに確認・起動するcron設定の削除.profileに追加された不正な実行処理の削除・修正- Base64化された不正な実行設定の確認
- 脆弱性が確認されたプラグインの削除・更新
- WordPress本体・プラグイン・テーマの確認と更新
- 未使用・不要プラグインの整理・削除
- 29サイトの不正インデックス登録状況の確認
WordPress・プラグイン・テーマの確認・更新内容
WordPress本体は、サイト13で5.8.2から6.8.1へ更新しました。その他のサイトでは6.8.1を確認し、本体のバージョン変更は実施していません。
主な更新・変更内容は以下のとおりです。
| 対象 | 作業前 | 作業後 |
|---|---|---|
| サイト1:SWELL | 2.6.5 | 2.15.0 |
| サイト2:Custom Post Type Date Archives | 2.7.1 | 削除 |
| サイト4:Lightning G3 Pro Unit | 0.22.1 | 0.29.4 |
| サイト4:VK Blocks Pro | 1.38.0.1 | 1.104.0.0 |
| サイト8:VK All in One Expansion Unit | 9.108.1.0 | 9.108.2.2 |
| サイト8:Yoast SEO | 25.1 | 25.2 |
| サイト11:VK All in One Expansion Unit | 9.108.2.0 | 9.108.2.2 |
| サイト11:Yoast SEO | 25.1 | 25.2 |
| サイト12:Contact Form 7 | 5.5.6 | 6.0.6 |
| サイト12:Custom Post Type UI | 1.11.2 | 1.17.3 |
| サイト13:WordPress本体 | 5.8.2 | 6.8.1 |
| サイト13:Custom Post Type Permalinks | 3.4.4 | 3.5.3 |
| サイト13:Custom Post Type UI | 1.9.2 | 1.17.3 |
| サイト13:Elementor | 3.6.0 | 3.29.0 |
| サイト13:Yoast SEO | 16.7 | 25.2 |
| サイト14:Advanced Custom Fields | 5.12.3 | 6.4.2 |
| サイト14:Akismet Anti-Spam | 4.2.2 | 5.4 |
| サイト14:All In One WP Security | 4.4.11 | 5.4.0 |
| サイト14:All-in-One WP Migration | 7.64 | 7.94 |
| サイト14:Autoptimize | 3.0.3 | 3.1.13 |
| サイト14:BBQ Firewall | 20220517 | 20250324 |
| サイト14:Code Snippets | 3.2.0 | 3.6.8 |
| サイト14:Contact Form 7 | 5.6.3 | 6.0.6 |
| サイト14:Custom Post Type UI | 1.12.1 | 1.17.3 |
| サイト14:Custom Post Type Widgets | 1.5.1 | 1.5.2 |
| サイト14:Elementor | 3.7.4 | 3.29.0 |
| サイト14:Flexible Table Block | 2.7.3 | 3.5.0 |
| サイト14:ImageMagick エンジン | 1.7.2 | 1.7.13 |
| サイト14:Intuitive Custom Post Order | 3.1.3 | 3.1.5.1 |
| サイト14:Page Links To | 3.3.6 | 3.3.7 |
| サイト14:Smash Balloon Instagram Feed | 6.0.6 | 6.9.1 |
| サイト14:TS Webfonts for SAKURA RS | 3.1.0 | 3.1.4 |
| サイト14:VK Filter Search Pro | 1.10.14 | 2.15.1.0 |
| サイト14:WP Multibyte Patch | 2.9 | 2.9.2 |
| サイト14:WP Statistics | 13.2.6 | 14.13.4 |
| サイト14:WPForms Lite | 1.7.6 | 1.9.5.2 |
| サイト14:Xserver Migrator | 1.6.1 | 1.6.6 |
| サイト14:Yoast SEO | 19.6.1 | 25.1 |
| サイト14:zipaddr-jp | 1.33 | 1.38 |
| サイト15:VK All in One Expansion Unit | 9.108.2.2 | 9.108.2.0 |
| サイト15:Yoast SEO | 25.1 | 25.2 |
| サイト15:Lightning | 15.29.6 | 15.29.7 |
| サイト16:VK All in One Expansion Unit | 9.108.2.0 | 9.108.2.2 |
| サイト16:Lightning | 15.29.6 | 15.29.7 |
| サイト17:SWELL | 2.6.5 | 2.15.0 |
| サイト18:SWELL | 2.6.5 | 2.15.0 |
| サイト19:Lightning | 15.29.6 | 15.29.7 |
| サイト20:SWELL | 2.6.5 | 2.15.0 |
| サイト24:Yoast SEO | 25.1 | 25.2 |
| サイト24:SWELL | 2.6.5 | 2.15.0 |
| サイト27:Lightning | 14.20.3 | 15.29.7 |
| サイト28:SWELL | 2.6.5 | 2.15.0 |
不正インデックスへの対応
29サイトについて不正インデックスの登録状況を確認しました。
対象サイトでは不正インデックスの登録は確認されず、不正インデックスの削除作業は発生していません。
対応結果
defunctとして稼働していた不正プロセスと、その起動に使用されていたcron・.profileの実行設定を削除・修正しました。あわせて、WordPress環境で確認された脆弱性への対応と必要なバージョン更新を実施しています。
今回の事例では、WordPressディレクトリのファイル確認だけでなく、稼働中のプロセス、cron、ホームディレクトリの設定ファイルまで調査対象としました。
この事例で特徴的だった点
今回確認された処理では、defunctが動作しているかを確認し、確認できない場合に再度起動する構成が組まれていました。さらに、cron側では[mm_percpu_wq]、.profile側では[rcu_preempt]という名称をexec -aで指定して実行する処理が確認されています。
また、実際のプロセス情報からWordPressテーマ配下のdefunctを参照するプロセスも確認されており、不正な実行設定だけでなく、稼働中のプロセスまで確認・削除した案件です。
再発防止について
WordPress本体・プラグイン・テーマを継続的に更新するとともに、マルウェア感染が確認された場合はWordPressディレクトリだけでなく、cronや.profileなどのサーバー設定、稼働中のプロセスについても確認することが重要です。
定期的なバックアップ、マルウェア検査、既知の脆弱性への対応を継続することで、異常発生時の調査・復旧を行いやすい状態を維持できます。
WordPressのマルウェア感染でお困りの方へ
救急WEBでは、WordPressのマルウェア駆除、サイト改ざんの調査・復旧、不正ファイルや不正プロセスの削除、cronや設定ファイルに追加された不審な実行処理の調査、脆弱性対応、不正リダイレクト・不正インデックスへの対応を行っています。
複数のWordPressサイトを同一サーバーで運用している環境についても、各サイトだけでなくサーバー側の設定やプロセスを含めて確認し、必要な復旧・セキュリティ対応を実施します。
