38
松本 悦宜 @ ym405nm (加筆修正版)

WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

Embed Size (px)

Citation preview

Page 1: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

松本 悦宜 @ ym405nm

(加筆修正版)

Page 2: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

• 自己紹介

• WordPressのセキュリティ事象

• 抑えておきたい攻撃パターン

• 吹き飛ばすには ~運用者編~

• 吹き飛ばすには ~開発者編~

• 吹き飛ばすには ~初心者編~

• 最後に

Page 3: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016
Page 4: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

WordPressは脆弱性が多い ← わかる

WordPressは危ない ← ええ・・・

WordPress使うな ← !?!?

Page 5: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

その後の某社

WP

危ない

脆弱性

レンタル

サーバごと

やられる

あああ

↑提案してきた人

Page 6: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

• 増え続けるユーザ数

管理できないサイトが増え続けていた

• WordPressに起因するセキュリティ事件が多発

WordPressを狙った攻撃が増加した

• プラグイン / テーマの脆弱性が多数発見

深刻な脆弱性をもつ製品が多く使用されていた

別のCMSが安全という人もおりました(´・ω:;.:…

Page 7: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

• WordPress本体のセキュリティアップデート

発見されたセキュリティ問題を迅速に修正

自動アップデートで配信

• セキュリティを強化するプラグインが登場

• セキュリティ関連の情報が増加

有志のユーザやホスティング会社などによる解説サイト

Page 8: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

他のCMSでも問題は数多く出てるんです・・・

大事なのはセキュリティに対し、みんなで取り組む

ことですよね!

J-WAVE、コマンドインジェクション攻撃による不正アクセス、個人情報64万件が流出した恐れhttp://internet.watch.impress.co.jp/docs/news/754885.html

Page 9: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016
Page 10: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

•WordPressに対する攻撃を2年間かけて追跡

•攻撃の傾向を調べてみました

Page 11: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

• IDパスワードに対する攻撃

• プラグインとテーマに対する攻撃

• サーバに対する攻撃

Page 12: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

• 攻撃検出の頻度を集計結果

• パスワードは短期間に大量のツールによる攻撃が来

ていた

Page 13: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

検出したパスワード攻撃の上位 20 件

11 . 1234567

12 . 123456789

13 . 123123

14 . adminpass

15 . pass

16 . abc123

17 . トップレベル付きドメイン名(小文字)18 . test

19 . Info12345678

20 . admin1

1 . admin2 . administrator3 . admin1234 . password5 . 1234566 . ドメイン名(小文字)7 . 1238 . 123459 . 1234567810 . 1234

Page 14: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

• 攻撃検出の頻度を集計結果

• 攻撃が継続的に行われている

Page 15: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

ソースIPをGeoIPにて国を検索した結果

※踏み台となっている可能性もある

ロシア

スウェーデン

ウクライナ

カナダ

Page 16: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

wp-mobile-detector

motopress-content-editor

formcraft

revslider

Page 17: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

• 各ファイルのパーミッションの設定が不適切

但しこの場合攻撃ケースは稀

• サーバの認証が不備にあっている

SSH接続、各種アカウント

• FTPはできるだけ使わないように

クライアントの脆弱性、FTPの仕様上の弱さ

Page 18: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016
Page 19: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

自動アップデート機能をなるべく使用する

「WordPress」「テーマ」「プラグイン」は最新のものを使

用する

それぞれ更新のタイミングがバラバラなので、ダッシュボー

ドの通知を要チェック

使っているものは最新版に保つ

Page 20: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

自分のアカウントのパスワードは強固なものにする(推測不

能、英数字混在8文字以上)

(できれば)ログインフォームへのアクセス制限、二要素認

証の導入など

サーバへのアクセスや、コントロールパネルへのアクセスも

同様

アカウントの管理をしっかりする

Page 21: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

メンテナンス頻度が高いものを選ぶ

脆弱性は無いのにこしたことはないが最初から0のものは

ない → 見つかった脆弱性に対し迅速に対応されているかが

重要

明らかに不要なものは削除しておく

無効にしている状態のままでは攻撃を受ける可能性がある

テーマ / プラグインの選定をする

Page 22: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016
Page 23: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

ユーザがアップロードしたファ

イルを使用する場合は要注意

アップロード機能をプラグイン

やテーマ内で実装するのではな

く、WordPressのギャラリーを

使用する

アップロード機能に注意

画像

攻撃用

WordPress

テーマ/プラグイン

Page 24: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

plugins/wp-sample/download.php?file=sample.png

ダウンロード機能に注意

ダウンロード機能があるプラグイン

ここにファイル名を指定してる場合

Page 25: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

GET /wp-content/plugins/_____/downloadpdffile.php?fileName=../../../../../../../../../../etc/passwd HTTP/1.1Host: [server].infoKeep-Alive: 300Connection: keep-aliveUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36 OPR/36.0.2130.32

サーバの任意のファイルが取得可能

同様の手法で wp-config.php もダウンロードされる

実際の攻撃事例

Page 26: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

• 対策

ファイルを配列などで間接的に指定する

または、ディレクトリを表す記号(例:「/」、

「../」、「..¥」)が来た場合はエラーを返す

Page 27: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

脆弱性に注意

XSS : スクリプトを埋め込まれる脆弱性

出力値にWordPressのエスケープ関数を使用する

Page 28: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

脆弱性に注意

SQLインジェクション : DBに不正な操作を行われる脆弱性

できるだけ文字列連結でクエリを構成するのを避ける

$wpdb->query( $wpdb->prepare( "INSERT INTO $wpdb->postmeta

( post_id, meta_key, meta_value )VALUES ( %d, %s, %s )",

10, $metakey, $metavalue

) ); Codex関数リファレンス/wpdb Classhttps://wpdocs.osdn.jp/関数リファレンス/wpdb_Class

対策コード

Page 29: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

脆弱性に注意

CSRF : 不正なページ遷移により、なりすましをさせられる

脆弱性

nonce を使用しページ遷移を検証する

※ プラグインのconfig画面など

生成 : wp_create_nonce( $action );

検証 : wp_verify_nonce( $nonce, $action );

Page 30: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

<?php$nonce = wp_create_nonce( 'my-nonce' );?><a href='myplugin.php?do_something=some_action&_wpnonce=<?phpecho $nonce; ?>'>Do some action</a>

<?php// このコードは行き先ページに書く。// nonce を検証する必要がある。$nonce = $_REQUEST['_wpnonce'];if ( ! wp_verify_nonce( $nonce, 'my-nonce' ) ) {

// nonce が無効な場合。die( 'Security check' );

} else {// nonce が有効な場合。// 目的のアクションを実行。

}?>

Codex関数リファレンス/wp create noncehttps://wpdocs.osdn.jp関数リファレンス/wp_create_nonce

対策コード

Page 31: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016
Page 32: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

「よくわからんけど怖いことだけわかった」

「全部やるのは面倒くさいよね・・・」

最低限やったほうがいいことだけ

今から教えます!

Page 33: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

悪い例 : adminpass

良い例 : aDm1n4ss

パスワードを見直す

8文字以上、英数混合、推測されにくいもの

パスワードジェネレータで生成するのもOK

意外と日本語のローマ字表記も有効?

Page 34: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

テーマ・プラグインの選定

1年以内に更新されているもの

ユーザ数が多いもの

安全性の観点では無料・有料は関係ない

Page 35: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

ログインするたびに通知はみておく

特に見ておく必要があるのはこのあたり

Page 36: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

レンタルサーバを利用する

自分で管理する場合…

iptables ? PHPのアップデート? OpenSSL ?

WordPress.com

WordPress専用サーバなど

Page 37: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

WordPressは適切に開発・運用すれば、

安全にしやすいソフトウェアです!

今日紹介したもの

・開発者の対策

・運用者の対策

・初心者の対策

Page 38: WordPressセキュリティの心配事を吹き飛ばせ! WordCamp Kansai 2016

WordCamp Kansai 2016

WordPressの安全のおともに(登録無料)

https://wp-portal.net

国内のWordPressに対する攻撃情報が掲載されている

ご自身のWordPressサイトのセキュリティチェックができる