ワードプレスのupgrade.phpとinstall.phpがワードプレスのバージョンを漏洩する問題とその対処方法について解説いたします。
ワードプレスのバージョン漏洩問題
ワードプレスのはその本体のバージョンをサイトの方々に埋め込み、バージョンを漏洩させますが、ワードプレスに脆弱性が発見された場合このバージョン情報をもとにハッキングをされてしまう可能性があるため、セキュリティー上はワードプレスのバージョンが外部からはわからないようにした方が安全です。
ワードプレスは、メタジェネレータというヘッダー情報、スタイルやスクリプトに?var=というクエリでバージョン情報を付与、またupgrade.phpとinstall.phpでのバージョン情報の漏洩をします。
メタジェネレータのヘッダー情報、スタイルやスクリプトに?var=というクエリでのバージョン情報を付与は下記のコードをテーマのFunctions.phpに記載すると防ぐことができます。
/*verのクエリを消す*/ add_filter( 'style_loader_src', 'security_remove_wp_ver_css_js', 10, 2); add_filter( 'script_loader_src', 'security_remove_wp_ver_css_js', 10, 2); function security_remove_wp_ver_css_js( $src ) { if ( strpos( $src, 'ver=' . get_bloginfo( 'version' ) ) ) $src = remove_query_arg( 'ver', $src ); return $src; } /*メタジェネレータをヘッダーに出力しない*/ remove_action( 'wp_head', 'wp_generator' ); remove_action( 'opml_head', 'the_generator' );
upgrade.phpとinstall.phpでのバージョン情報の漏洩
また昨今では、WPSCAN等のワードプレスの脆弱性を調べる(逆に言えばハッキングの下調べも可能な)ツールを使うと、upgrade.phpとinstall.php の2ファイルでもワードプレスのバージョンを自動で調査します。
例えば下記のようなURLにアクセスいただくとそのソースコードから、ワードプレスのバージョンが漏洩しているのが分かります。
https://ワードプレスのURL/アドミンフォルダ/install.php https://ワードプレスのURL/アドミンフォルダ/upgrade.php
このファイルはそれぞれワードプレスのフックの処理外から呼び出される為、テーマのfunctions.phpに対策のコードを記載しても防げないことからかなり厄介です。
※この問題は2024年10月末から11月初旬にリリース予定の【無料】ワードプレス:マルウェアスキャン&セキュリティープラグイン [マルウェア・ウィルス検出と駆除] の次期バージョンで簡単に回避できる機能を追加予定です。よろしければご利用ください。
upgrade.phpとinstall.phpでのバージョン情報の漏洩をHTACCESSから防ぐ
upgrade.phpとinstall.phpでのバージョン情報の漏洩はワードプレスのプログラミングコードからは防げないため、HTACESSファイルにアクセス拒否の設定を書き込んで防御します。
※HTACESSファイルはワードプレスのインストールディレクトリにある、サーバーの設定ファイルです
install.phpはワードプレスのインストール後は使用されないため、アクセスを禁止します。(HTACCESSファイルの上部に追記)
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)wp-admin/install\.php$ - [R=404,L,NC] </IfModule>
upgrade.php はワードプレスを例えばFTPで手動で上書きでアップデートした場合に、このファイルにログイン時に自動で移動してデータベースをアップデートする為に使用されることがあります。この為、単純にアクセスを防いでしまうと、ログインができなくなってしまう可能性があります。
この為、非ログイン時のみにアクセスを防ぐようにします。(HTACCESSファイルの上部に追記)
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} ^.*wp-admin/upgrade\.php$ [NC] RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC] RewriteRule ^(.*)wp-admin/upgrade\.php$ - [R=404,L,NC] </IfModule>
※%{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC] の行でログイン固有のクッキーがない場合にのみアクセスを防ぐという意味になります。
WordPress ワードプレスサイトのマルウェア駆除・セキュリティー対策のご依頼ご相談はWPドクターまでお気軽にお送りください