wordpress セキュリティを考える会、sqlインジェクション、csrf
DESCRIPTION
WordPress セキュリティを考える会 第二回 at コワーキングスペース茅場町 Co-Edo (東京都中央区新川1-3-4 PAビル5F) SQLインジェクション、CSRFには、WordPress 側で対策できるようにヘルパーが用意されている。 しかし、ヘルパーを使用していないプラグインもある。また、WordPress 公式ディレクトリにあるプラグインは、セキュリティ面でのチェックはほとんどなく、ヘルパーを使用していないプラグインでも公式ディレクトリに登録されている。 もし、プラグインを使うのであれば、プラグインを使う人が、自身の責任において、取捨選択する。 プラグインに関する相談は http://www.rescuework.jp/service.htmlTRANSCRIPT
WordPress セキュリティを考える会 第二回
水野史土レスキューワーク株式会社http://www.rescuework.jp/
自己紹介
WordPress 日本語化チーム
フォーラムの常連回答者
Novius OS のコントリビュータ
プラグイン
公式プラグインは安全か?
安全でないプラグインの例
プラグインとは
WordPress に機能を追加したり、
機能を変更したりできる
公開されているプラグインを改変可能
(カスタマイズ方法はプラグイン毎に異なる)cf. テーマは子テーマという仕組みがある
有料のものも無料のものもあるが、
公式ディレクトリのプラグインは無料
公式ディレクトリのプラグイン
WordPress の公式ディレクトリの要件
http://wordpress.org/plugins/about/● 画像等も含めて GPL 互換
● 法律違反でない
● Subversion ● (デフォルトでは)宣伝リンクを表示しない
など
公式プラグインのセキュリティ
セキュリティチェックはほとんど無い
WordPress には、セキュリティ用に
ヘルパーが用意されているが、
それらを使用していなくても、
登録できてしまう
SQL インジェクション
データベースへの操作を行うとき、
入力データ等を適切に処理しないと、
意図しない動作になってしまう
被害
不正なデータ読み出し/書き込み
HTMLでは
<b> => 太字にする命令
b => テキスト「b」
混同すると、意図しない表示になる
SQLでは
delete => 削除する命令
‘delete’ => テキスト「delete」 混同すると、意図しない操作をする
WP の標準の作法1 esc_sql
$name = esc_sql( $name );$wpdb->get_var( "SELECT something FROM table WHERE foo = '$name'" );
WP の標準の作法2 wpdb::prepare
$wpdb->prepare("
SELECT sum(meta_value)FROM $wpdb->postmetaWHERE meta_key = %s
",$meta_key)
標準の作法に従っていないプラグイン
従っていないプラグインの例
● WordPress HTTPS 3.3.6● Yet Another Related Posts Plugin 4.0.7
従っていなくても、
公式ディレクトリに登録できる
クロスサイトリクエストフォージェリ
管理者にリンクを踏ませて、
意図しない処理をさせる攻撃
略称: CSRF
被害
不正な投稿、パスワード変更、ユーザー作成等
トークンを発行し、チェックする
WP の標準の作法 Settings API
管理画面のフォーム作成ヘルパー
CSRF対策用のトークンを自動生成
wp-includes/plugin.php setting_fields
標準の作法に従っていないプラグイン
従っていないプラグインの例
● Sharebar 1.2.5● Broken Link Checker 1.8.3
標準でない場合
プラグイン作者が独自に実装する必要がある
きちんと実装していれば OK だが …
WordPress が用意している物を使わずに、
独自実装する意義はあるのか?
=> 古くからあるプラグインは仕方ないかも
プラグインを使う
という選択の
注意点
プラグインと責任の所在
「プラグインを導入する人が責任を持つ
自分でチェックして安心できる物を使う
自分がわかなければ、分かる人にお願いする」
by WordCamp Tokyo 2013 の三好さん
http://www.youtube.com/watch?v=Ez4J7PVyRwc34:10ぐらいから