お知らせ

WordPressへの全世界的な攻撃について

wordpress-logo-notext-rgb

WordPressへの世界的な攻撃が続いています。

この攻撃は、WordPressサイトを見つけ次第、wp-login.phpへアクセスし、ユーザー名admin等でパスワード総当たり(ブルートフォース)攻撃を行うものです。

攻撃の実例

スクリーンショット 2013-04-17 14.43.43

これは筆者がいろいろテストするために使っている個人所有のVPSのapacheのログですが、二日間で、wp-login.phpへの総当たり攻撃が3000回以上行われています。

幸いにしてadminユーザーは削除してあったため、総当たり攻撃が成功した形跡はありませんでしたが、念のため攻撃が始まってから数日分の、Tripwireレポートを精査して、DocumentRoot以下のファイルに、心当たりのない変更が加えられていないかを確認しました。

Tripwireはファイルシステム内の変更を記録して、変更や削除があると、レポートとして表示してくれるものです。

これをインストールしておいて、今回は安心を得ることができました。

基本的にSSHの公開鍵認証でしか外部からアクセスできない設定にしてありますので、想定外の変更を加えられる心配は非常に少ないですが、WordPress部分をこのような方法で改ざんされてしまうと、公開している部分でもあり、ここからサーバー資源を悪用されてしまいます。

adminでのログインが成功してしまえば、WordPressのコアファイルを操作して、WordPressを攻撃者の思い通りに改変してしまうことが可能です。

スクリーンショット 2013-04-17 14.44.46

これがApacheのログから割り出した、攻撃アクセスのうちほんの一部です。

見たこともないようなドメインが並んでいますが、ブラジル、スペイン、チェコ、ロシアと世界中のサーバーから攻撃されています。

これはボットネットという、遠隔操作できるマルウェアを仕込まれた、常時起動のサーバーなどです。

ボットネットは、公開サーバーのセキュリティ脆弱性を利用して攻撃され、乗っ取られてしまったサーバーなどの集まりです。

古いバージョンのHTTPサーバーやその他のサーバーなどをそのままで公開し続けると、その脆弱性を利用して、ボットネットに組み込まれてしまう可能性が高いです。

ボットネットはこのような大規模さ、IPアドレスの不特定多数さを利用して、迷惑メールの送信や、WebサイトへのDoS(サービス拒否)攻撃などに利用されています。

このボットネットをコントロールする攻撃者が一か所から命令を出すと、配下にあるボットネットに属するコンピュータが、他のサイトに攻撃を行います。

世界中からアクセスがあるので、特定の国からのアクセスを防げばよいというものではありません。

今回の攻撃はWordPressを乗っ取って、さらにこのボットネットを拡大することが目的であると考えられています。

攻撃に対する対策

まず最初に行うべきは、adminという名の管理者アカウントとは違う管理者アカウントを一つ以上作成し、adminは削除してください。

adminはあまりにも多く利用されているので、今後も標的になってしまうと考えるべきです。

少なくとも管理権限を持つユーザーのパスワードは11文字以上で、数字、記号や大文字、小文字を含む文字列を選ぶべきです。

侵入を許してしまったかどうかを判断するのは、かなり難しいです。

こう書いてしまうと不安をあおることになってしまいかねませんが、ユーザー名adminパスワードadmin123などであれば、攻撃が成功してしまっている可能性も考慮すべきです。

目に見えるようなわかりやすい変更があれば、それでわかりますが、コアファイルに何かを仕込まれてしまっただけであれば、ほとんど気が付くことはできないと思います。

WordPressのプラグインExploit Scannerを使うというのも一つの方法かもしれません。

このプラグインをWordPress日本語版に対応させるパッチが下記で公開されています。

http://ja.forums.wordpress.org/topic/2743

WordPress Exploit Scannerはコアファイルのハッシュ値が、標準のものと違うかを検査する、という単純な仕組みなっています。

ハッシュ値はファイル全体から一文字でも変更すれば、大幅に変わってしまうものですので、ここの不整合があれば見つけてくれる仕組みです。

侵入を受けたことがが明確であれば、記事やコンテンツを退避させ、一度停止させたうえで、WordPressを再構築するのが最も確実な方法になるでしょう。

二段階の認証になったとしても、現状をしのぐためであれば、一時的にwp-login.phpに認証をかけてしまうというのも一つの手です。

例として挙げれば

.htaccessに
[text]
<Files wp-login.php>

AuthName “hogehoge”

AuthType Basic

AuthUserFile /var/www/.htpasswd

Require Valid-user

</Files>
[/text]
というように記述することで、wp-login.phpへのアクセスを行う際にベーシック認証を求められます。

このベーシック認証も総当たり攻撃に対して完全な防護策ではありませんが、現状のボットネットによる攻撃であれば、アクセス先に認証がかかっている際に、その認証に対して総当たり攻撃を行う、というところまではおそらく組み込まれていないであろうという想定です。

複数人でWordPressを利用している場合は、なかなか周知が難しいですが、現在のボットネットの攻撃を防ぐにはある程度有効かもしれません。

これで当座の攻撃をしのぎ、これら攻撃に対する根本的な解決策が確立するのを待つとよいのではないかと考えています。