foreverいつかどこかの、誰かの未来のために。410何かがおかしいこんにちは、星影です。朝起きて自分のブログを見たら、何やらおかしなことになっていました。2013年9月20日スクショは録り忘れましたが、ヘッダーや本文の上部分に謎の空白が空いていたのです。それぞれ500pxくらいの空白。見では、他におかしな所は見られません。えーと、何だこれ???(この時点でちょっとイヤな予感はしてた)PHPファイルに見知らぬコードが埋め込まれていたん〜、こんなところいじったっけか...?と思い、CSSを確認。コードにおかしい部分は無さそう。一応前日のファイルと比べたが、特に異常なし。ヘッダーや本文ページのPHPファイルに何か問題が...?あれあれ?じゃあPHPの方かな?重苦しい空気のなか、恐る恐るファイルを確認していく。▂▅▇█▓▒░(‘ω’)░▒▓█▇▅▂うわあああああああああああ見知らぬのコードを解析あまりの絶望感に魔女化しそうになりましたが、冷静になってコードをよく見てみることに。埋め込まれていたコード超抜粋。́・_・`)デコードしてみるこのまま引き下がるのは性に合わないので戦う。デコードには以下のサイトを利用。Tool埋め込まれていたコードを貼り付けてデコード。埋め込まれていたコードを貼り付けて「Decode」をクリック出ました。下のテキストエリアにデコード結果が出るはい、PHPのコードですね。Textの自動整形にかけてみましたが、あまり綺麗になりませんでした。何が書かれているか軽く眺めた感じですが...リファラー(リンク元)がGoogleやbing、Yahoo!などの検索エンジンかどうか見てる上記の検索エンジンから該当のWordPressブログにアクセスした場合、とあるURLに飛ばす何やらスクリプトが実行されてる(ふえぇ...大体こんな感じ。スペイン語のフォーラムで似たようなコード発見ジャンプ先のURLについて調べてみると、ほぼ同じと見られるハッキングコード埋め込みついて言及されたスペイン語フォーラムを発見。2ここに貼り付けられているコード、先ほどデコードしたコードとほぼ一緒でした。スペイン語なんてまったくわかりませんが「これサーバーの脆弱性だろ?弁償してもらえるかな」に対し「うっせーよ、どうせプラグイン古いまま使ってたとかだろ?つべこべ言わずにバージョンアップしとけや」的なことを言われてるのかしらん?事実確認ここで事実確認をしてみましょう。なんかブログおかしいPHPのファイル書き換えられてる怪しいスクリプト実行されてるはい、確実に攻撃されていますね。いえば少し前から、Chromeで自ブログにアクセス(記事更新とか)すると、突然アクセスが遮断されるという症状が出ていました。いま思えば、この時点で攻撃の可能性を疑うべきでした。「このブログには悪意のあるスクリプトが埋め込まれてるっぽいからアクセス遮断するねー(^O^)/」そういうことでしたか、Google先生。対策さて、何らかの攻撃を受けたことがわかりました。このまま放置しておくわけにはいかないので、さっそく対策をしましょう。「eval(base64_decode(」でググるとすぐにヒット。方法に脆弱性があり、外部のファイルを持ってきて実行してしまう模様。Include)攻撃というのかな?先ほどのコードを見た感じですが、やはり「外部から任意のPHPスクリプトを実行させることができる状態にされた」というのが、今回の攻撃だったと推察します。大規模サイバー攻撃?少し話がそれますが本件について調べている途中、こんな記事を見つけました。Japanこれが直接関係するかはわかりませんが、少なくとも企業サイトや自ブログについて、攻撃の痕跡がないか確認しておいた方が良いと思います。第一の対策として、まずは第三者により埋め込まれたPHPコードを削除します。コードの削除についてはこちらを参照。Ltdスクリプトを使って、対象のコードを一気に削除してしまおうということらしいです。スクリプトを使わずともコードは削除できるので、そこは状況次第ということで。僕はエラーコードを見て、ひとつひとつ潰しながら確認していきました。テーマやプラグインファイルを中心に、大体30ファイルに対して先ほどのコードが埋め込まれていましたね(#^ω^)ググって情報眺めてたら、6000強のファイルに埋め込まれていたという方もいました...とにかく埋め込まれたコードを即刻削除すること。次に、外部スクリプトの実行を防止します。埋め込まれたコードは削除したわけですが、対策をしなければまた同じように悪意のあるコードを埋め込まれる可能性があります。先ほどコード削除について書かれていたサイトに、防止策も載っています。以下の設定を追加します。gzinflate”ここで追加した3つの設定は、それぞれ以下のような意味を持っています。自分の環境への影響度を考慮し、適切な設定を行いましょう。allow_url_fopen外部のファイルにアクセスする事を許可するかどうかの設定です。allow_url_include外部のサーバーのPHPスクリプトを読んで実行するかどうかの設定です。disable_functions特定の関数をセキュリティの観点から無効にすることができます。WordPress、プラグインのアップデートそして最後の対策です。WordPressやプラグインを最新の状態にします。いや、本当に当たり前過ぎて何言ってんだコイツって感じですが、割りとこれができてない人多いんじゃないかなと。いうわけで、WordPressのバージョンが最新ではなかったためアップデート。各種プラグインも最新版にアップデート。コードが埋め込まれていたプラグインに関しては、一度削除してから再インストールしました。えぇ、こんなの当たり前のことですよね。ホントに笑えないです。まとめひとまずこれで、現状考えられる対策はとれたのではないかと思っております。今回は侵入経路が特定できたわけではないので、これだけで完全な防御ができたとは言えません。プラグインなどで何重にも防御策は講じていますが油断はできません。WordPressの場合、利用ユーザー数も多いことから、プラグインやテーマの脆弱性を突いた攻撃が日々行われています。バックアップやセキュリティ対策などについては、常日頃から気を配るようにしておきましょう。幸いにも今回は、早期発見&早期解決ができたことにより、ブログの停止時間も3〜4時間ほどで済みました。WordPressやPHPのセキュリティ知識が身に付けば、もっと早い対応が可能であるとも感じました。今回の攻撃を教訓に、セキュリティ面に関してもう少し勉強が必要だなぁと思いました。僕の経験が少しでも誰かのためになればということで。最後に今回の対策については、初めての経験だったこともあり、もしかしたら対応に誤りがある場合があるかもしれません。明らかに間違った対策をしているようであれば、コメント欄にて遠慮なくご指摘ください。WordPressを使い始めて1年ほどになりますが、まだまだ知らないことが多いです。自分でも日々勉強を積み重ねてはいますが、先人の皆さまのご協力も得て、もっと精進していきたいと思っております。本文中には書きませんでしたが、下記の記事も参考にさせていただきました。ありがとうございます。全文検索、スマホゲーム、チャットbot、IoTとかやってる雑多なエンジニア。ガジェット、アニメ、ゲーム、そしてインターネットが大好きなオタク。だいたいTwitterに居ます。7のメッセージ送信に失敗する件WordPressWordPressのインストール&ネームサーバー設定後に「無効なURLです。コメントをキャンセルメールアドレスが公開されることはありません。全文検索、スマホゲーム、チャットbot、IoTとかやってる雑多なエンジニア。ガジェオタでアニオタでゲーオタ。レビューズ公認レビュアー。アンバサダーやってます。blogProfileContact。