
WP-VCDは、WordPressサイトに感染するマルウェアの中でも特に厄介な種類です。 主にnulled(海賊版)テーマやプラグインを通じて感染し、 サーバー上の全てのWordPressサイトに自動的に拡散する特徴があります。 駆除しても数分で再感染するため、「何度削除しても復活する」という相談が非常に多いマルウェアです。
WP-VCDは自己複製機能を持ち、1つのファイルを削除しても他のファイルから再生成されます。 この記事で解説する手順を全て実施しないと、駆除は成功しません。
WP-VCDは2017年頃から確認されているWordPress専用のマルウェアで、 その名前は感染時に生成されるファイルwp-includes/wp-vcd.phpに由来します。 このマルウェアの最大の特徴は、nulled(海賊版・クラック版)テーマやプラグインを 感染経路として利用する点です。
「無料でプレミアムテーマを使いたい」という動機で海賊版テーマをインストールすると、 テーマファイルに仕込まれたWP-VCDが起動し、サイト全体に感染が広がります。 さらに、同じサーバー上の他のWordPressサイトにも自動的に感染を拡大するため、 共有サーバーでは1サイトの感染が全サイトの感染につながります。
nulledテーマをインストールすると、テーマのfunctions.phpの 先頭に不正なコードが含まれています。 このコードは、テーマを有効化した瞬間に実行され、感染プロセスが開始されます。
// functions.phpの先頭に挿入される典型的なコード
<?php
if (isset($_REQUEST['action']) && isset($_REQUEST['password'])
&& ($_REQUEST['password'] == 'xxxxxxxxxxxxxxxx')) {
// バックドアコード
}
// 以下、正規のテーマコードが続く初期感染コードが実行されると、以下のファイルが自動的に生成・改ざんされます。
WP-VCDが厄介なのは、ファイルを1つ削除しても他のファイルから再生成される点です。 例えばwp-vcd.phpを削除しても、 テーマのclass.theme-modules.phpが 次のページアクセス時に再生成します。 逆にclass.theme-modules.phpを削除しても、post.phpの改ざんコードが再生成します。 この相互復元の仕組みにより、全てのファイルを同時に処理しないと駆除できません。
# wp-vcd.phpの存在確認
find /path/to/wordpress -name "wp-vcd.php" -type f
# class.theme-modules.phpの存在確認
find /path/to/wordpress -name "class.theme-modules.php" -type f
# class.plugin-modules.phpの存在確認
find /path/to/wordpress -name "class.plugin-modules.php" -type f
# functions.phpの先頭に不審なコードがないか確認
head -20 /path/to/wordpress/wp-content/themes/*/functions.php
# wp-includes/post.phpの改ざん確認
# 正規のpost.phpと比較(WordPress公式からダウンロードしたものと差分を取る)
diff /path/to/wordpress/wp-includes/post.php /path/to/clean-wordpress/wp-includes/post.php-- wp_optionsテーブルにWP-VCD関連のエントリがないか確認
SELECT option_name, option_value
FROM wp_options
WHERE option_name LIKE '%wp_vcd%'
OR option_name LIKE '%wp-vcd%';
-- 不正なcronジョブの確認
SELECT option_value
FROM wp_options
WHERE option_name = 'cron';
-- 結果にwp-vcd関連のスケジュールがないか確認上記のファイルが1つでも見つかった場合、WP-VCDに感染しています。 次のセクションの駆除手順を全て実施してください。 部分的な対処では再感染します。
以下の手順は必ず順番通りに、できるだけ短時間で実施してください。 途中でサイトにアクセスがあると、削除したファイルが再生成される可能性があります。 可能であれば、作業中はサイトをメンテナンスモードにしてください。
作業中のアクセスによる再感染を防ぐため、.htaccessでアクセス制限をかけるか、メンテナンスモードプラグインを使用します。自分のIPアドレスのみアクセスを許可してください。
インストールされている全てのテーマ(有効・無効問わず)のfunctions.phpを開き、先頭に挿入された不正コードを削除します。正規のテーマコードの開始位置を見極めて、それより前の不正コードを全て削除してください。
# 全テーマからclass.theme-modules.phpを削除
find /path/to/wordpress/wp-content/themes/ -name "class.theme-modules.php" -delete
# 全プラグインからclass.plugin-modules.phpを削除
find /path/to/wordpress/wp-content/plugins/ -name "class.plugin-modules.php" -delete# wp-vcd.phpを削除
rm /path/to/wordpress/wp-includes/wp-vcd.php
# post.phpを公式のクリーンファイルで置き換え
# WordPress公式サイトから同バージョンをダウンロードし、
# wp-includes/post.phpを上書きコピー
cp /path/to/clean-wordpress/wp-includes/post.php /path/to/wordpress/wp-includes/post.php-- WP-VCD関連のオプションを削除
DELETE FROM wp_options WHERE option_name LIKE '%wp_vcd%';
DELETE FROM wp_options WHERE option_name LIKE '%wp-vcd%';
-- 不正なcronジョブを確認・削除
-- cronオプションの値を確認し、不正なスケジュールがあれば
-- phpMyAdminで手動編集するか、WP-Cronプラグインで削除海賊版テーマ・プラグインをFTPまたはファイルマネージャーで完全に削除します。WordPress管理画面からの削除ではファイルが残る場合があるため、必ずFTPレベルで削除してください。正規版のテーマに置き換えるか、別のテーマを使用してください。
nulled(海賊版)テーマやプラグインを使用しない。これがWP-VCD感染の唯一の原因です。 「nulled WordPress themes」「free premium themes」などで検索して見つかるサイトからダウンロードしたテーマには、 高い確率でWP-VCDまたは類似のマルウェアが仕込まれています。 プレミアムテーマを使いたい場合は、必ず公式サイトまたはWordPress.orgからダウンロードしてください。
WordPress.org、ThemeForest、テーマ開発者の公式サイトなど、信頼できるソースからのみダウンロードしてください。
有効化していないテーマもWP-VCDの感染対象です。デフォルトテーマ1つを残して、使っていないテーマは全て削除してください。
Wordfenceのファイル整合性チェック機能を有効にし、コアファイルやテーマファイルの変更を検知できるようにしてください。
感染前の状態に戻せるよう、定期的なバックアップを取得してください。バックアップはサーバー外(クラウドストレージ等)に保存してください。
WP-VCDマルウェアは、海賊版テーマの使用という明確な原因があり、 その感染メカニズムも解明されています。 しかし、自己複製機能により駆除が非常に困難で、 全てのファイルを同時に処理しないと再感染してしまいます。
駆除の手順自体は明確ですが、ファイルの特定と削除には技術的な知識が必要です。 特にpost.phpの修復は、 正規ファイルとの差分を正確に把握する必要があり、誤操作するとサイトが動作しなくなります。
自分での駆除に不安がある場合は、WordPress専門のセキュリティ業者に相談してください。 WP-VCDは感染パターンが明確なため、専門業者であれば短時間で完全駆除が可能です。
リバースハックはWordPress専門のセキュリティチームです。 マルウェア駆除から再発防止まで、ワンストップでサポートします。 まずはお気軽にご相談ください。
※ 相談は無料です。お見積もりだけでもお気軽にどうぞ。
この記事をシェア