Tokyo WordPress Meetup主催の「WordPress を守ろう!セキュリティの最新トレンドと対応事例」にWebデザイナーと一緒に参加してきました。
Tokyo WordPress Meetupのイベントへの参加は、去年の旧WordBench 東京「Webサイト制作プロジェクトマネジメント入門」以来久しぶり。
厄年のせいか、去年から今年にかけてリダイレクトスパムやDoS攻撃の対応に追われたこともあり、今回のテーマは非常に楽しみにしていました。
WordPress 管理者がおさえておきたい Web アプリケーションセキュリティ
最初のセッションは表題の通り、WordPress ユーザー・管理者・開発者がおさえておきたいWebアプリケーションセキュリティのトレンドの解説を、OWASP Japan(オワスプ ジャパン)の松本悦宜氏がスピーカーをされていました。
僕はまず、OWASP(オワスプ)の存在を知りませんでした。
OWASPは、Open Web Spplication Security Projectの略で、Webセキュリティを取り巻く問題を解決するために各国の専門家が集結した国際的なコミュニティで、日本にも10の拠点があります。WordPressを愛するWordPress Meetupのようですね。
のちに、そのOWASPが発表している脆弱性と対処法に関するドキュメントなどを含め、WordPressにおけるリスクの確認と対策方法が紹介されました。
サイト改ざんなど、セキュリティリスクが多く報道されていますが、中でもWeb制作やWeb運用に携わっている人たちの間では、WordPressはセキュリティが弱いと思われがちですが、これは単にWordPressがCMSの中で圧倒的にシェア率が高いだけの話で、当然なにか脆弱性が発見されればそれに比例してしまい、他のCMSに比べれて名前が上がりやすいということで、決してWordPressが突出してセキュリティが弱いということではない冒頭のお話に納得しました。
リスクを確認するための3つのドキュメント
WordPressを安全に使うためにはどうすればいいのか。なにごとにもリスクヘッジができて越したことがないように、Webアプリケーションのセキュリティにおける最新の情報やトレンドを確認できる信頼性あるドキュメントが3つ紹介されました。
【1】OWASP TOP 10
前述のOWASPが発表している、最も注意すべき脆弱性と対処法が10件まとめられており、内容は3年おきに見直され更新。日本語版もあります。
OWASP TOP 10 – 1017(PDFドキュメント)
【2】WordPressセキュリティ白書
WordPress.orgで公開されている、まさにWordPressに特化したセキュリティ対策がまとめられています。日本語版もあります。
WordPressセキュリティ白書
【3】OWASP WordPress Security Implementation Guideline
OWASPのサイト内で提供されているWordOressに関連した情報のドキュメント。WordPressの様々な設定がまとめられているけど、現状は英語版のみです。
OWASP WordPress Security Implementation Guideline
3つのWordPressセキュリティ対策
【1】WordPressのログインを守る
ログイン画面のセキュリティ設計として、
- wp-login.phpのアクセス制限
- 2要素認証、アカウントロック
- パスワードポリシーの確認
上記3つが考えられますが、運営者への負担の許容など、ユーザーがどう使うかも考慮もしながら設定しなければならないとのこと。
しかしながら、3番目のパスワードポリシーは重要とのことです。映画(スターウォーズやスタートレック)のキャラクターやポケモンなどの名称を使用したパスワードは特にあぶないそうです。
僕の場合、クライアントの案件でもwp-login.phpのアクセス制限とパスワードポリシーだけは実施しております。
【2】脆弱性情報を確認する
WordPressの管理画面の更新情報に注目し、下記3つは最新のヴァージョンに保つ。
注意すべきは、使用してないプラグインは削除する。停止では不十分だそうです。また、今回お話には出てきませんでしたが、使用していないテーマのバージョンアップや削除もしておいた方がいいという話を聞いたことがあり、例えば、WordPressをインストールするとデフォルトでバンドルされているテーマなどは不要の場合は僕は削除しています。
【3】WordPressの関数を使う
正しくWordPressの関数をしようしないと、SQLインジェクションやXSS(クロスサイトスクリプティング)といったデータベースへの漏洩や書き換えなどの攻撃にさらされる危険があるとのこと。
以前、固定ページでPHPをかけるようにするためのプラグインExec-PHPにてeval関数が使用されていて非推奨になった記憶がありますが、そういったことでしょうか。
とにかく、攻撃者が裏口を作り、PHPをアップし遠隔操作などを行うバックドアの話は恐ろしかったです。
セキュリティ診断ツール2点
最後に、推奨のセキュリティツールを紹介しておりました。
OWAAP ZAP
OWAAPが提供している診断ツールで、動的スキャンで擬似攻撃による検証ができるそうです。OWAAP ZAPの記事などのキータに一番まとまってるそうです。
検証といっても、結局は自分でサイトを攻撃していることになるので、自社で計画的に使用するなら問題ないですが、第三者のサイトに無断で使用するのは許可や計画が必要。
OWASP ZAP Hands-on In Osaka (2015-02-10)
WPScan
WordPressのセキュリティマニアの方々が集まる会社が提供している脆弱性スキャンツール。任意のパスワードリストからの総当たり攻撃もできるそうです。
WordPressの本体、プラグイン、テーマのバージョンが影響を受ける脆弱性を検証、また、不要なファイルが公開されてないか(readme.htmlなど)も確認できるそうです。
しかし、コマンドラインが必要なので、完全にエンジニアさん向けと思いました。
WPSCanによるWordPressの脆弱性スキャン
セッション1のまとめ
wp-login.phpのアクセス制限、パスワードの強化、本体・テーマ・プラグインの更新情報の注意と対処。これらは普段から行っていたことなので安心しました。
特に松本悦宜氏のお話の中では、OWASPの存在をはじめ、信頼性あるドキュメントや診断ツールを紹介していただいて、とてもためになりました。
また、今後「WordPressって大丈夫なの?」とクライアントに聞かれても、自信を持って説明できるようになれてよかったと思います。
今回の登壇で使用された松本悦宜氏のスライド
「WordPress セキュリティインシデントの対応事例」
セッション2は、主にサーバーサイドのプログラマーである神垣聡氏の豊富な経験の中から、実際に起きたインシデントとその対応事例について。
リダイレクトスパム編
あるURLを踏んだら、勝手にスパムサイトへ強制リダイレクトされるリダイレクトスパム。
リダイレクトスパムに関しては僕もやられた経験があり、その時のことを記事にしたことがあります。
WordPress マルウェアの確認と駆除作業(リダイレクトスパム)
リダイレクトスパムはリダイレクト用のプログラムがHTMLやPHPに埋め込まれてしまい、それが作用して強制的にリダイレクトされてしまう仕組みです。
WordPressの場合、主にplugin/index.phpが書き換わっている場合が多いらしいのですが、上記で紹介した以前の記事の時は、header.phpと、footer.phpが改ざんされていました。
しかも、コアファイル群の中にwp-login.phpに模した、w-login.phpというPHPファイルも仕込まれていたり。。
plugin/index.phpが書き換わっている場合、plugin/index.phpにファイルのアップロードを行うスクリプトが書かれ、他のファイルを呼び込むバックドアとなっているとにこと。
WorsFenceとSucuriScannerというプラグインで確認したそうです。
根本的な原因として、推測らしいのですが、メッセンジャーツールにてアカウント乗っ取りが多発時期だったらしく、フィッシングスパムメッセージを踏んで被害が拡大した可能性があるそうです。
スパム投稿記事編
この事例は知らなかったのですが、投稿一覧画面を確認してみると、記憶にない記事が大量に投稿されており、その記事にはスパム広告が貼られているそうです。
原因の推測として、パスワードが脆弱だったほかに驚いたことが、初期アカウントを調べるのは容易だということです。
「user id 1 wordpress」というキーワードでググってヒットした下記の記事でも詳しく書いてありますが、最初作ったアカウント「author=1」のログインユーザー名はダダ漏れということになります。
WordPressのログインユーザー名は丸見え!?
対処として、該当記事の削除、パスワードの一新、ロギングを行ったそうです。
サーバ屋さんから怒られた編
レンタルサーバー側がハッキングされているのを検知し、「ファイルが改ざんされてるので、おたくのサイトを停止します」という通達がきたお話です。
被害
- サーチコンソールも検知しているので被害サイトとして認定されSEOランクダウン
- 事例はECサイトであったため、即座に売上に直結し売上がダウン
「サーバ屋さんから怒られた編」というタイトルから、若干ほのぼのした話かと想定していましたが、このような被害状況に陥ったら生きた心地がしないかも知れません。
対処として、WordPressを移設しプラグインを入れ直したそうですが、この対処もなかなかの作業です。被害の進行と対処に掛かる機会費用は計り知れないので、松本悦宜氏が紹介されていたドキュメントなどを日頃からチェックするべきかなと思いました。
セッション2のまとめ
そのほかにも、古い事例の改ざん系として、header.phpに読み難いコードが埋め込まれていた「メール踏み台編」、サイトやサーバーにつながらない「DDoS攻撃 DNS攻撃編」といったインシデントと対応策も紹介されていて本当に豊富な事例はためになりました。
最後に、ディレクターにとって興味深い話として、思わぬ事態が起きてしまったときに当然Web制作事業者はクライアントに説明責任があり、ダウンタイムや復旧費用、また、毎月/年の保守やバックアップの金銭的根拠を明確に示さなければならないなど、今後心がける部分も勉強になりました。
今回の登壇で使用された神垣聡氏のスライド
セッション3「まとめ」
最後のセッションは、今回のTokyo WordPress Meetup 10月のモデレーター、ちくちゅう氏。
ちくちゅう氏は冒頭で、クライアントから「セキュリティ 対策はどうなっていますか?」と聞かれたときにどう答えるべきか?といったノウハウを紹介。
今後は、「暗号化はHTTPSのみ、SFTPのみ」「WAF」「インシデント発生時のルール化」「外部メモリ禁止」といったセキュリティ 項目リストを明文化して作っておくべきと思いました。
また、ちくちゅう氏、セッション1の松本悦宜氏、セッション2の神垣聡氏を交えて質疑応答となりました。
以下、メモれた限りです。
セキュリティ維持向上に普段利用しているおすすめのプラグインは?
「WP SiteGuard」と「Crazy Bone」。
監査ログをメールで通知してくれるプラグインもある。
との答え。
また、2年以上メンテ、アップグレードされていないプラグインは危ないとのこと。
user_id(初期アカウント)からアカウント名が簡単に取れるということでしたが防ぐ方法はあるか?
初期アカウント防げない。
とにかくパスワードを強化とのこと。
脆弱診断を実行できるツールはありますか?
Walti.ioがめっちゃ便利です。定期実行でログもずっと保管
JVNというサイトでWordPressの情報が出ると注意!
あと、JSACの注意喚起も注意!
本体をアップグレードしたら、プラグインの動作チェックはしてますか?
正直あまりしていないが、コピーサイトを作って調べるときはあります。
ほか、全てをメモれませんでしたが、とても有意義な質疑応答でした。
今回の登壇で使用されたちくちゅう氏のスライド
「WordPressを守ろう!セキュリティの最新トレンドと対応事例」まとめ
今回のイベントに参加して下記の認識と知見を得ました。
- OWASP(オワスプ)の存在
- WordPressが突出してセキュリティが弱いということではないこと
- バックドアの恐ろしさと仕組み
- 初期アカウントを調べるのは容易だということ
- クライアントへの説明責任
- ダウンタイムの復旧費用
- 毎月/年の保守やバックアップの金銭的根拠の明示
- セキュリティ項目リストを明文化
- 様々な脆弱診断を実行できるツール
久しぶりのWordBench!じゃなかった、WordPress Meetupの参加でしたが今回も楽しませていただきました。
キャンセル待ちも出ていたみたいで人気のテーマだったのも納得するくらい、とても身になる良いイベントでした。
スライドの公開が早かった(その日のうち)のも嬉しかったです。
また、面白そうなテーマがあったら行きたい。
この記事も読まれています。
WordPress マルウェアの確認と駆除作業(リダイレクトスパム)
さくらレンタルサーバーで特定のIPアドレスからのアクセスをブロックする方法