WEBサイトがウィルス(マルウェア)に感染したときの対処【無関係なサイトを別タブで開くjavascriptを埋め込まれた】

WordPressサイトを開くと自動的に新規タブで無関係なサイトを開くようになった

恥ずかしながら、先月はじめに当サイトを開くと別タブでロシアだか東欧だかのイミフのサイトが開かれてしまい、さらに自動的にwp-updatesという管理者権限の新規ユーザーを作成するという現象が発生するようになり、これはマルウェア(悪意のあるソフトウェアmalware=maliciousとsoftwareの造語)にやられた、と直感しました。

6月上旬のレバラン休み中の土曜の朝という、最もアクセスが少ない時期に発生したのは不幸中の幸いであり、急遽メンテナンスモードにして土日の2日間でなんとか解決に至りましたが、やり方はなかなか巧妙です。

まずリダイレクト(自動的に別のサイトに転送)するのではなく別タブでしれっと無関係なサイトを開きやがるので、ウィルス感染に気づくのに時間がかかること。自分はたまたまブログ書いていたので気づきましたが、自分のサイトをマメに開いて動作確認していないと見過ごしてしまうかもしれません。

この別タブで開かれるサイトは毎回変わるのですが、おおよそ物販やアフィリエイト系のサイトのようで、想像するにこのマルウェアの目的はPV(ページビュー)を呼び込むことで、Googleアドセンスやアフィリエイト収入を獲得することだと考えられます。あー胸糞悪い。

一応自分もシステム業界の人間なので、現象からしてwindowオブジェクトのopenメソッドまたはlocationメソッドで無関係なサイトを開くjavascriptがどこかに埋め込まれたのではないかとまでは想像できたのですが、不思議なことにDBをSQLのSelect文でスキャンしても、テーマファイルやプラグインファイルをGREP検索(ファイル内のテキスト検索)してもそれらしい構文はヒットしませんでした。

これはいよいよjavascript自体が暗号化もしくは難読化されている可能性大で、そうなるとマニュアルでウィルスが埋め込まれていそうな箇所を1個ずつチェックしていくしかないなあと長期戦も覚悟し、最悪Wordpressを再インストールして400以上ある投稿と固定ページを1個ずつ再登録することになります。

また想定される最悪の事象は、バックドア(不正に侵入するための入り口)を仕込まれて遠隔操作されたり、内部からDBやファイルを破壊されることなので、マルウェアスキャンツールとして有名なプラグイン「Wordfence Security」で、疑わしきゴミファイル、プラグイン等を一掃しました。




ウィルス感染の可能性がある場所を特定する作業

WordPressで構築したサイトならウィルスコードが埋め込まれる可能性のある場所はおおよそ以下のとおりになります。

  1. WordPress本体のファイル
  2. テーマファイル本体
  3. テーマ設定
  4. プラグイン本体
  5. プラグイン設定
  6. データベース(投稿・固定ページ)

問題の特定作業のために、まず最初にマルウェアスキャンで使ったWordfence Securityプラグインや、ブルートフォース攻撃(可能な組合せを全て試す力任せの総当たり攻撃)やリスト攻撃(どこかで入手したID・パスワードのリストを用いて、正規ルートから不正アクセス)対策用の、ログインページ変更機能やログインロック機能を使っているSiteGuard WP Plugin以外の、すべてのプラグインをアンインストールし、プラグインが自動生成するテーブルもDBからDROP(削除)しました。

心情的にいかにもそれっぽいwp-updatesという管理者権限のユーザーを新規追加されることが非常に気持ちが悪く、まず最初にWordpress本体の全ファイルを最新のzipファイルから置き換えましたが、依然として無意味サイトを別タブで開きます。ということでWordpress本体のファイルはシロです。

フッター領域のコピーライト部分に埋め込まれていたコード

次に現在のテーマファイルを、昔使っていた有料テーマファイルに変更してみると、なんということでしょう、件(くだん)の事象が発生しないではありませんか。はい、意外にもあっさりと問題が絞りこまれました。

ということでマルウェアはテーマファイルかテーマの設定に埋め込まれていることが判りましたが、テーマファイル自体に最近の更新日付に変わっているファイルはなかったため、これはもうテーマの設定情報のどこかにマルウェアが居ると確信し、一個ずつチェックしていくと案の定ありました。こんなの埋め込まれていました。気持ちが悪いよ、本当に。。。

フッター領域の会社名にscriptタグが設定されているので、サイト上のすべてのページで事象が発生するわけで、しかもコード変換して難読化されているので検索してもひっかからないという質の悪いいたずらです。

セキュリティの強化方法

WordPressはMicrosoft Windowsとのように、ブログを立ち上げる際に使われる標準CMS(Content Management System=コンテンツ管理システム)であり、全WEBサイトの30%を占め、ブログなどのCMSの中で60%を占めるため、マルウェアの種類も圧倒的に多いです。

そのためにも上記のようなWordfence SecurityやSiteGuard WP Pluginなどのプラグインの導入は必須であり、それに加えて管理ページにベーシック認証をかけたり、WAF(Web Application Firewall)によりスクリプトの実行等に制限をかけたほうがいいと思います。

それでもマルウェアの侵入は100%防げるわけではなく、セキュリティを強化することで日々の運用上の手間がかかったりするので、デザインにそれほどこだわらない企業サイトやブログの運営を目的としたサイト構築であれば、ライブドアブログやはてなブログなどのブログサービスを使うほうが、コンテンツ作成に集中できると思います。