19
WordPress セキュリティを考 える会 第二回 水野史土 レスキューワーク株式会社 http://www.rescuework.jp/

WordPress セキュリティを考える会、SQLインジェクション、CSRF

Embed Size (px)

DESCRIPTION

WordPress セキュリティを考える会 第二回 at コワーキングスペース茅場町 Co-Edo (東京都中央区新川1-3-4 PAビル5F) SQLインジェクション、CSRFには、WordPress 側で対策できるようにヘルパーが用意されている。 しかし、ヘルパーを使用していないプラグインもある。また、WordPress 公式ディレクトリにあるプラグインは、セキュリティ面でのチェックはほとんどなく、ヘルパーを使用していないプラグインでも公式ディレクトリに登録されている。 もし、プラグインを使うのであれば、プラグインを使う人が、自身の責任において、取捨選択する。 プラグインに関する相談は http://www.rescuework.jp/service.html

Citation preview

Page 1: WordPress セキュリティを考える会、SQLインジェクション、CSRF

WordPress セキュリティを考える会 第二回

水野史土レスキューワーク株式会社http://www.rescuework.jp/

Page 2: WordPress セキュリティを考える会、SQLインジェクション、CSRF

自己紹介

WordPress 日本語化チーム

フォーラムの常連回答者

Novius OS のコントリビュータ

Page 3: WordPress セキュリティを考える会、SQLインジェクション、CSRF

プラグイン

公式プラグインは安全か?

安全でないプラグインの例

Page 4: WordPress セキュリティを考える会、SQLインジェクション、CSRF

プラグインとは

WordPress に機能を追加したり、

機能を変更したりできる

公開されているプラグインを改変可能

(カスタマイズ方法はプラグイン毎に異なる)cf. テーマは子テーマという仕組みがある

有料のものも無料のものもあるが、

公式ディレクトリのプラグインは無料

Page 5: WordPress セキュリティを考える会、SQLインジェクション、CSRF

公式ディレクトリのプラグイン

WordPress の公式ディレクトリの要件

http://wordpress.org/plugins/about/● 画像等も含めて GPL 互換

● 法律違反でない

● Subversion ● (デフォルトでは)宣伝リンクを表示しない

など

Page 6: WordPress セキュリティを考える会、SQLインジェクション、CSRF

公式プラグインのセキュリティ

セキュリティチェックはほとんど無い

WordPress には、セキュリティ用に

ヘルパーが用意されているが、

それらを使用していなくても、

登録できてしまう

Page 7: WordPress セキュリティを考える会、SQLインジェクション、CSRF

SQL インジェクション

データベースへの操作を行うとき、

入力データ等を適切に処理しないと、

意図しない動作になってしまう

被害

不正なデータ読み出し/書き込み

Page 8: WordPress セキュリティを考える会、SQLインジェクション、CSRF

HTMLでは

<b> => 太字にする命令

b => テキスト「b」

混同すると、意図しない表示になる

Page 9: WordPress セキュリティを考える会、SQLインジェクション、CSRF

SQLでは

delete => 削除する命令

‘delete’ => テキスト「delete」 混同すると、意図しない操作をする

Page 10: WordPress セキュリティを考える会、SQLインジェクション、CSRF

WP の標準の作法1 esc_sql

$name = esc_sql( $name );$wpdb->get_var( "SELECT something FROM table WHERE foo = '$name'" );

Page 11: WordPress セキュリティを考える会、SQLインジェクション、CSRF

WP の標準の作法2 wpdb::prepare

$wpdb->prepare("

SELECT sum(meta_value)FROM $wpdb->postmetaWHERE meta_key = %s

",$meta_key)

Page 12: WordPress セキュリティを考える会、SQLインジェクション、CSRF

標準の作法に従っていないプラグイン

従っていないプラグインの例

● WordPress HTTPS 3.3.6● Yet Another Related Posts Plugin 4.0.7

従っていなくても、

公式ディレクトリに登録できる

Page 13: WordPress セキュリティを考える会、SQLインジェクション、CSRF

クロスサイトリクエストフォージェリ

管理者にリンクを踏ませて、

意図しない処理をさせる攻撃

略称: CSRF

被害

不正な投稿、パスワード変更、ユーザー作成等

Page 14: WordPress セキュリティを考える会、SQLインジェクション、CSRF

トークンを発行し、チェックする

Page 15: WordPress セキュリティを考える会、SQLインジェクション、CSRF

WP の標準の作法 Settings API

管理画面のフォーム作成ヘルパー

CSRF対策用のトークンを自動生成

wp-includes/plugin.php setting_fields

Page 16: WordPress セキュリティを考える会、SQLインジェクション、CSRF

標準の作法に従っていないプラグイン

従っていないプラグインの例

● Sharebar 1.2.5● Broken Link Checker 1.8.3

Page 17: WordPress セキュリティを考える会、SQLインジェクション、CSRF

標準でない場合

プラグイン作者が独自に実装する必要がある

きちんと実装していれば OK だが …

WordPress が用意している物を使わずに、

独自実装する意義はあるのか?

=> 古くからあるプラグインは仕方ないかも

Page 18: WordPress セキュリティを考える会、SQLインジェクション、CSRF

プラグインを使う

という選択の

注意点

Page 19: WordPress セキュリティを考える会、SQLインジェクション、CSRF

プラグインと責任の所在

「プラグインを導入する人が責任を持つ

自分でチェックして安心できる物を使う

自分がわかなければ、分かる人にお願いする」

by WordCamp Tokyo 2013 の三好さん

http://www.youtube.com/watch?v=Ez4J7PVyRwc34:10ぐらいから