Lolipopで、WordPressが大規模攻撃を受けてしまった

この記事は3年以上前に投稿された古いものです。

2013年8月29日のことでしょうかね。WordPressに第三者から大規模攻撃。改ざんされる事件がありました。このサイトも忍び込まれたようです。

■発生した事象

ロリポップ!のサーバー上にインストールされた WordPress を利用して作成された一部のユーザーサイトにおいて改ざんの被害が発生いたしました。改ざんの被害にあったサイトでは、下記のいずれかの事象が確認されております。

・ 今回の攻撃によるサイト改ざん内容の特徴
サイトタイトルに「Hacked by Krad Xin」が含まれている
サイトのキャッチコピーが「BD GREY HAT HACKERS」になっている
サイトが文字化けしている

・同様の改ざんを確認している対象件数
8,438件

※サービスに登録されている個人情報にアクセスされた形跡はなく情報の流出はございません。

■原因
・改ざんの原因
簡単インストールを利用して設置された WordPress においてインストールが完了していない WordPress が狙われ、WordPress の管理者権限を第三者に取得されたことで、サーバー上にサーバー構成上の不備を悪用するスクリプトが設置されました。また、wp-config.php のパーミッションが 644 だったことを利用して、設置されたスクリプトによりデータベースの接続情報の取得がおこなわれ、データベース上のデータの書き換えが可能な状態となっておりました。

・改ざんが拡大した原因
サーバー側のディレクトリパーミッションが不適切だったことと、FollowSymLinks の設定を有効にできる状態であったため、同一サーバー上のユーザー領域を辿り、他のユーザー様の wp-config.php の内容を参照し、データベースの更新を実行することで改ざんの被害が拡大しました。

そして対策が以下のように取られました。

■実施した対策
【8月28日~29日実施】
・原因調査および対策の検討

【8月29日実施】
・データベースの接続情報が外部から取得されないようにするための対策
wp-config.php のパーミッションを変更いたしました。

・未インストールの WordPress の管理者権限を第三者に取得されないための対策
install.php のパーミッションを変更いたしました。

【8月30日~9月1日実施】
・不正に取得されたデータベースのアカウントを利用して書き換えなどをおこなわれないようにするための対策
対象ユーザー様のデータベースパスワードを変更しました。
同時に、ご不便が生じないよう、ユーザー様がご利用の CMS の設定ファイル内に記述されているデータベースパスワードも合わせて変更いたしました。

・同サーバー内のユーザー領域のディレクトリを辿れなくするための対策
サーバー側のディレクトリパーミッション設定を適切に変更しました。
サーバー側の設定変更により FollowSymLinks の機能を停止しました。

・さらなる被害の増加を防ぐための対策
簡単インストールの一時停止をおこないました。

【8月29日~9月5日実施】
全サーバーのウィルススキャンの実行とマルウェアが確認されたユーザー様の WAF を有効にしました。

本件につきまして、経緯に関する説明に加え、一連のお知らせの掲載内容で誤解を招く表現がございましたため訂正とお詫びがございます。

■今回の原因となった簡単インストール機能で未インストール状態のWordPressとサーバーのパーミッションの設定に関しまして

・簡単インストールで未インストールの状態が発生した経緯
WordPress など、人気のCMSのインストールに関してご相談をいただく機会が多く、出来る限りユーザー様による設定の手間を減らし、サイト編集などに専念していただける環境を提供できるように簡単インストールの機能を導入いたしました。簡単インストールは、データベースの情報設定やファイルのアップロードなど、本来手動で行うインストール作業をサーバー側で自動的におこなう機能です。今回、当社による簡単インストールの仕様により、システムファイルのインストールだけが完了し、ログイン情報登録などのセットアップがおこなわれていない状態の WordPress が設置されていました。

・サーバー側のパーミッションの設定についての経緯
2009年にロリポップ!では、サーバーのスペックアップ、及び機能改善のためサーバー構成の大幅なリニューアルを実施しましたが、その際にユーザー様の「フルパス」の仕様を変更致しました。  但しリニューアル後も設定変更なくお使いいただけるよう、サーバー内にシンボリックリンクファイルを設置し旧仕様のフルパスも利用可能な状態としていましたが、その際の上位ディレクトリのパーミッション設定に不備があり、FollowSymLinksの機能を使用することで同一サーバー内の他のユーザー様の領域にアクセスできてしまう状態になっていました。このため、ユーザー様の領域内のファイルの権限設定、及び.htaccessの記載内容によっては、サーバー内の他のユーザー様のファイルが閲覧できてしまうという状態が発生しておりました。

■一連のお知らせに関する訂正とお詫び
・WordPress に瑕疵があるような告知になっていた点につきまして
今回の原因につきましては、上記の通り簡単インストールの仕様とサーバー側の設定不備が改ざんの主な要因となっております。

・当初、今回の大量改ざんの原因を「ブルートフォースアタック」や「WordPressのテーマやプラグインの脆弱性」だと推測していた点につきまして
以前より、サーバー上に設置された不特定多数の wp-login.php に対し海外から大量のアクセスが発生していることを検知いたしておりました。また、テーマに含まれているファイルなどの脆弱性を悪用されるケースも実際に確認されております。今回の大量改ざんを確認した時点におきましても、同時間帯に海外からの大量アクセスが発生していることを検知しておりました。そのため、対処方法の判明している上記2点の改ざん要因に対する初期対応として、短時間に大量アクセスを引き起こすブルートフォースアタックとWordPressの脆弱性に原因がある可能性と対処方法を掲載いたしました。しかし、引続き調査をおこなった結果、攻撃の要因が未インストール状態のWordPress とサーバーのパーミッションの設定不備にあることが判明いたしました。

要するにどんな対策か、簡単に説明すると

パーミッションを変更したんですね。

  • config.phpのパーミションを、644 → 400
  • install.phpのパーミションを、644 → 000

この変更で、BackWPUpのpluginで、バックアップのジョブを実行するとWarningが出てくるようになりました。その対策として以下の回答をもらいました。

他のバックアップが完了している場合、エラーが表示されていても
動作には問題ないかと存じますが、表示をさせないようにパーミッション
を「604」等に変更いただくことは可能かと存じます。
ただし、該当ファイルのパーミッションの影響で悪用されることが
ないとはご案内することができませんので、差支えなければ、
いったん該当ファイルをダウンロードしてPCにバックアップいただき、
その上で該当ファイルを削除、プラグインの操作についてお試し
いただきますようお願いします。

この支持に従って、install.phpを自分のPCに保存して、サーバー側のinstall.phpを削除しました。
これでOK。
一応、WordPressやそのPluginのせいではなかったようです。Lolipopさん大変でしたね!!

moripapaブログの関連投稿です