サーバー

ロリポップ大規模クラッキング事件を考える

2013年8月29日は、朝Twitterを見るとロリポップサーバーがクラッキングされ大騒ぎの状態でした。利用はしていませんが、推移を見守りつつ釘付けの一日でした。

本日は30日で、まだ侵入ルートやクラッキングの手口は明らかではありません。が、状況を見つつ2つの点で感じたことや考察を記録しておきます。なお、本記事の公開は状況が落ち着いてからします。

被害の大きさ

キャプチャ画像はロリポップの『当社サービス「ロリポップ!レンタルサーバー」ユーザーサイトへの第三者による大規模攻撃について」に掲載された内容の一部です。

lolipop_jp_info_news_4149_01

8,438件がサイト数なのか契約者数なのかハッキリしませんが、クラッキングされたサイトの顕著な状態は、サイトのタイトルにクラッカー名と思われる「Hacked by Krad Xin」と付け加えられている点と、サイトにより文字コードがUTF-7にされ、ブラウザで表示できないところが沢山ありました。

なお、本記事ではサイトが改竄されたので「クラッキング」という言葉を使います。

初動のやり取り

利用者からの報告に社長がいきなり「風説の流布になりますよ。事実を確認してからツィートしてください。そのような事実はありません。」て、もっとも永江さんの報告だからこのような対応になったのだと思いますが、確認もせず火消しに走ったわけです。

ここからクラッキングが判明して対応を始めるまでのツィートは、多くの人が参照可能なところで発言する内容とは思えないため、自分としては残念に感じました。

ですが、緊張感が高まりました。

ロリポップ側の姿勢

大変疑問に感じました。何しろ自分には責任ありません、感が前面に出ています。

[現在までに判明している被害状況]
WordPressのプラグインやテーマの脆弱性を利用し、不正なファイルがアップロードされました。 またそのファイルを利用し、wp-config.phpの設定情報が抜き出されることにより、データベースの書き換えが行われ、WordPressサイトが改ざんされました。

これ読んだ人は間違いなくクラッキングの原因は「WordPressのプラグインやテーマ」だと思うでしょう。

ですが8000以上もがクラッキングされたのですから、サーバー機能にレンタルサーバーとしては脆弱な部分がある、と推察されるし、中の人も分かっているためこのような書き方になったのではないかと思います。

というのも、WordPressのデータベースアクセスに関する情報が「wp-config.php」ファイルにあるわけですが、対策で「ファイルパーミッションを400に変更」としています。

クラッキングの拡大はなぜ

WordPressに限らずログイン名とパスワードで管理画面を操作するのは、ほとんどのサービス、Amazonも、PayPalも、銀行も、皆が利用する方法です。

ログイン名やパスワードが知られ不正ログインされれば、当然被害を受ける可能性は100%なわけですが、他のユーザーまで及ぶものでしょうか?

この点においてレンタルサーバーに脆弱性があるのでは、と思い及ぶ訳です。ロリポップがこの点を明らかにするかどうか、静かに見守りたいと思います。

なお発表の事実から予想すると、不正にアップロードされたプログラムにより共用サーバー上のディスク内を容易にアクセスでき、wp-config.sysが参照されサーバーのログイン情報が抜き取られたように思います。

次にデータベースにアクセスされ、WordPressの登録データ(サイト名やキャラクタセット)が書き換えられたのでしょう。

ここで疑問に思うのは、ある1人のユーザーサイトから他のユーザーのデータベースをアクセスできるかどうか?です。

できるのであれば、正にウィークポイントです。

そうでなければ8000件以上のユーザーサイトにログインするには、ユーザー管理情報が分からない限りは無理かと思います。ですので、他の人が言及しているようにデータベースがグローバルアクセスできる状態だったのではないでしょうか。

このような事実があれば重大事なので、真相が明らかにされるかどうかは疑問な訳です。

<追記 130831>
MySQLのユーザーアクセスの設定は、ユーザー名とホスト指定しかないため同じホストに収容されている場合は、1人のユーザーサイトから他のユーザーのデータベースもアクセス可能なことに気が付きました。
</追記 130831>

PHPに関してですが、PHPがモジュールモードで動作している場合、セーフモードにより自分以外のユーザーソースへのアクセスに制限が加えられるわけですが、ロリポップではセーフモードをOFFにできるような記事が検索で上がってきました。これは危険ではないでしょうか?

セーフモードは 5.3 で非推奨、5.4で削除されたので、サーバー側で対応しない限りモジュールモードで動作するPHPは危険です。

もし利用しているサーバーでPHPをCGIモードで動作させることができるのであれば、直ぐに移行するべきです。

なおレンタルサーバーによりPHPのバージョンが5.3に上げられない場合、お引越しをする方がセキュリティ上は幸せになれます。

脆弱性を孕んだサーバーは、狙われれば確実に餌食になります。

Webアプリケーションを安全に利用するために

共用レンタルサーバーを利用する上で注意しなければならないのは、第1に今回のようにレンタルサーバー自身に脆弱性が存在するかどうかです。経験上で申し上げると緩いレンタルサーバーは見たことがあります。

しかし一般的には提供会社を信頼するしかありませんので、専門家のアドバイスを聞いて判断するしかないと思います。

ではWebアプリケーション(プログラム)を安全に利用するためにはどうするべきでしょうか?それは何と言っても、不正ログインされないようにログイン名やパスワードはしっかりと管理しておくことでしょう。

また、保存されるデータが何かも重要になります。

クレジット情報など重要なデータを扱わない限りはサイトが書き換えられる程度なので、バックアップさえしっかり取っていればそれほど心配はいらないと思います。

なお、書き換えられる程度、と言っても、ウィルスソフトを仕込まれたり悪意あるサイトへリンクを張られたりする可能性があるので、楽観的ではいられません。WordPressのようなCMSは、サイトの表示内容を変更したり、プログラムをアップロードできるので注意が必要です。

以前クラックされたサイトでは、参照されるタイミング(このときは時間でしたが)によってJavaScriptのプログラムが組み込まれたり、組み込まれずに普通に表示したりと、手の込んだ処理がなされ、クラッキングに気付き難いようになっていました。

一方、信用情報やあるいは平文のパスワードがある場合は、セキュリティに関して一切の甘さは許されません。そのようなサイトは、共用レンタルサーバーでの利用はあり得ないと思います。

ロリポップユーザーはどうしたらいいか?

大変な被害を被られご心中お察しいたします。

いろいろと書いてみましたが、ステークホルダーのことを考え削除しました。

(2013-08-30)

WordPressのプラグインやテーマの脆弱性とは(2013-08-31)

レンタルサーバーの脆弱性について多くの人が気付いていたように、ロリポップはレンタルサーバーに脆弱性があったことを認めました。

lolipop_jp_info_news_4149_02

しかしその侵入経路を「WordPressのプラグインやテーマの脆弱性を利用」と特定していますが、その根拠が曖昧です。

もしその事実がハッキリしているならば、どのプラグインの、あるいはどのテーマのどういったウィークポイントを付いてWordPressのユーザー名とパスワードを抜き出したのか、説明する必要があるかと思います。

この点について今後説明があるかどうか待ちますが、経緯を見ていると最初に社長の「WordPressには脆弱性がある」の発言から始まって、今は言い回しが変化して「プラグインやテーマの脆弱性」と表現しているところを見ると、言葉が引っ込められなくなっているからではないでしょうか?

実は、WordPressサイトを狙ったブルートフォースアタックが行われていることが頻繁にTwitter にも流れており、不正ログインされた原因はこれではないかと推察しているからです。

WordPressの利用は危険?(2013-09-02)

今回は、WordPressの利便性が悪用されたのを実感しました。

どのサイトもログイン名やパスワードが漏れれば被害を受ける可能性は大きいわけですが、CMS機能があるWordPressは自サイトにダメージを受けるだけでなく、そのサイトをアクセスする利用者にも影響を及ぼすことが簡単にできます。ましてや共用サーバーに脆弱な部分があればその被害は甚大であることを目の当たりにしました。

WordPressの利用が危険かどうかに関して、不正ログインされた場合の影響が非常に大きいので、不正ログインされ易ければ「危険」と言わざる負えないでしょう。

危険を回避するためには、不正ログインされ難い機能を追加していく必要があると思います。専門家でないユーザーが簡単に利用できるWordPressは、今のままでは利用者次第であまりにも大きい穴が空いてしまいます。

そこで、ログイン操作が面倒になりますが2段階認証やキャプチャ画像の利用、ログイン失敗回数の制限などを利用したログインは有効かと思います。

今後の機能追加を期待したいと思います。