SlideShare a Scribd company logo
1 of 41
Download to read offline
安全なプラグインに必要なこと
~脆弱性届出状況に見る傾向と対策~
2017年9月16日@WordCamp Tokyo 2017
JPCERTコーディネーションセンター
情報流通対策グループ
堅木 雅宣 戸田 洋三
Copyright ©2017 JPCERT/CC All rights reserved.
本日の内容
はじめに
—JPCERT/CC の紹介
—脆弱性ハンドリングとは?
脆弱性届出状況から見えてきた
WordPressセキュリティの傾向
—プラグインのセキュリティに関して
開発者、サイト運営者に気をつけてもらいたいこと
1
Copyright ©2017 JPCERT/CC All rights reserved.
JPCERT/CCとは
一般社団法人 JPCERTコーディネーションセンター
Japan Computer Emergency Response Team Coordination Center
ジェーピーサート コーディネーションセンター
日本国内のインターネット利用者やセキュリティ管理担当者、ソフトウエア製品開発者等
(主に、情報セキュリティ担当者)がサービス対象
コンピュータセキュリティインシデントへの対応、国内外にセンサをおいたインターネッ
ト定点観測、ソフトウエアや情報システム・制御システム機器等の脆弱性への対応などを
通じ、セキュリティ向上を推進
インシデント対応をはじめとする、国際連携が必要なオペレーションや情報連携に関する、
我が国の窓口となるCSIRT(窓口CSIRT)
CSIRT: Computer Security Incident Response Team
※各国に同様の窓口となるCSIRTが存在する(米国のUS-CERT、CERT/CC、中国のCNCERT, 韓国のKrCERT/CC、等)
経済産業省からの委託事業として、サイバー攻撃等国際連携対応調整事業を実施
2
Copyright ©2017 JPCERT/CC All rights reserved.
JPCERT/CCの活動
重要インフラ、重要情報インフラ事業者等の特定組織向け情報発信早期警戒情報
海外のNational-CSIRTや企業内のセキュリティ対応組織の構築・運用支援CSIRT構築支援
脆弱性情報ハンドリング
➢ 未公開の脆弱性関連情報を製品開発者へ
提供し、対応依頼
➢ 関係機関と連携し、国際的に情報公開日
を調整
➢ セキュアなコーディング手法の普及
➢ 制御システムに関する脆弱性関連情報の
適切な流通
マルウエア(不正プログラム)等の攻撃手法の分析、解析アーティファクト分析
各種業務を円滑に行うための海外関係機関との連携国際連携
インシデントの予測と捕捉インシデント予防 発生したインシデントへの対応
制御システムに関するインシデントハンドリング、情報収集・分析発信制御システムセキュリティ
日本シーサート協議会、フィッシング対策協議会の事務局運営等国内外関係者との連携
➢ マルウエアの接続先等の攻撃関連サイ
ト等の閉鎖等による被害最小化
➢ 攻撃手法の分析支援による被害可能性
の確認、拡散抑止
➢ 再発防止に向けた関係各関の情報交換
及び情報共有
インシデントハンドリング
(インシデント対応調整支援)
情報収集・分析・発信
定点観測(TSUBAME)
➢ ネットワークトラフィック情報の収集分
析
➢ セキュリティ上の脅威情報の収集、分析、
必要とする組織への提供
3
Copyright ©2017 JPCERT/CC All rights reserved.
脆弱性情報ハンドリングとは?
脆弱性情報ハンドリング
—ソフトウェア/ハードウエアシステム等における脆弱性情報
の取扱い
—未公開の脆弱性情報を製品開発者に連絡し対応を依頼し、
海外の関係機関とも連携し、一般公表を調整
日本における脆弱性情報流通の取り組み
—経済産業省告示「ソフトウエア製品等の脆弱性関連情報に
関する取扱規程」
—情報セキュリティ早期警戒パートナーシップ
4
Copyright ©2017 JPCERT/CC All rights reserved.
脆弱性情報ハンドリングとは?
5
https://www.jpcert.or.jp/vh/index.html
脆弱性情報の届出
ベンダ・発見者との調整
一般公表
WordPress プラグイン “XXX”
のクロスサイトスクリプティン
グの脆弱性を発見した!
プラグイン
“XXX” の開発者
JVN公表
http://jvn.jp/
JVN
(Japan Vulnerability Notes)
Copyright ©2017 JPCERT/CC All rights reserved.
WordPress関連のJVN公表数の遷移
6
0
2
4
6
8
10
12
14
16
18
20
2011 2012 2013 2014 2015 2016 2017
wordpress plugin
プラグインの脆弱性が増加
Copyright ©2017 JPCERT/CC All rights reserved.
WordPress関連のJVN公表数の遷移
7
0
2
4
6
8
10
12
14
16
18
20
2011 2012 2013 2014 2015 2016 2017
wordpress plugin
NextGEN Gallery(1,000,000+ active installs)
に PHP ファイルインクルージョンの脆弱性
サーバ上で任意のコード実行の可能性
プラグインの脆弱性が増加
Copyright ©2017 JPCERT/CC All rights reserved.
WordPress関連のJVN公表数の遷移
8
700,000+
200,000+
400,000+
広く使われているプラグインも…
0
2
4
6
8
10
12
14
16
18
20
2011 2012 2013 2014 2015 2016 2017
wordpress plugin
プラグインの脆弱性が増加
Copyright ©2017 JPCERT/CC All rights reserved.
WordPress本体のセキュリティ対策は進んでいる
WordPressのREST APIに起因する脆弱性(2017年2月)
— 多数のウェブサイトが改ざんの被害に
— 参考情報
JPCERT/CC WordPress の脆弱性に関する注意喚起
https://www.jpcert.or.jp/at/2017/at170006.html
HackerOneにてバグバウンティプログラムの開始(2017年5月)
9
引用:
WordPress Now on HackerOne
https://wordpress.org/news/2017/05/wordpress-now-on-hackerone/
Copyright ©2017 JPCERT/CC All rights reserved.10
“A chain is only as strong as its weakest link”
プラグインが weakest link?
この写真 は CC BY-SA のライセンスを許諾されています
Copyright ©2017 JPCERT/CC All rights reserved.
プラグイン開発者の方へ…
11
Copyright ©2017 JPCERT/CC All rights reserved.
「Simple Custom CSS and JS」(1)
反射型 XSS
バージョン 3.4 で修正
https://wordpress.org/plugins/custom-css-js/
includes/admin-screens.php にて HTTP リクエストで渡された値をそ
のままページ出力に使っている
12
WordPress 用プラグイン Simple Custom CSS and JS におけるクロスサイ
トスクリプティングの脆弱性
https://jvn.jp/jp/JVN31459091/ 2017年7月24日公表
Copyright ©2017 JPCERT/CC All rights reserved.
「Simple Custom CSS and JS」(2)
13
L569: function custom_code_options_meta_box_callback( $post ) {
……..
L576: if ( isset( $_GET['language'] ) ) {
L577: $options['language'] = $_GET['language’];
L578: }
……..
L624: <input type="hidden" name="custom_code_language“
value="<?php echo $options['language']; ?>" />
includes/admin-screens.php (3.2)
Copyright ©2017 JPCERT/CC All rights reserved.
「Simple Custom CSS and JS」(3)
14
L569: function custom_code_options_meta_box_callback( $post ) {
……..
L575: if ( isset( $_GET['language'] ) ) {
L576: $options['language'] = $this->get_language();
L577: }
……..
L623: <input type="hidden" name="custom_code_language“
value="<?php echo $options['language']; ?>" />
includes/admin-screens.php (3.4)
Copyright ©2017 JPCERT/CC All rights reserved.
「Simple Custom CSS and JS」(4)
15
L1075: function get_language( $post_id = false ) {
……..
L1079: } else {
L1080: $language = isset( $_GET[‘language’] ) ?
esc_attr(strtolower($_GET[‘language’])) : ‘css’;
L1081: }
……..
includes/admin-screens.php (3.4)
Copyright ©2017 JPCERT/CC All rights reserved.
Securing Output
16
Plugin Handbook
よく読みましょう.
引用:
WORDPRESS.ORG Plugin Handbook
https://developer.wordpress.org/plugins/security
/securing-output/
Copyright ©2017 JPCERT/CC All rights reserved.
ツールで脆弱性探索してるヒトたちもいます
17
BestWebSoft 製のプラグ
イン50件で使われている
メニュー表示機能にクロ
スサイトスクリプティン
グの脆弱性
静的解析ツールを提供する
セキュリティベンダが同じ
脆弱性を独立に発見・公表
案件調整中にこんなこともありました…
JVN 複数の BestWebSoft 製 WordPress 用プラグインにおける
クロスサイトスクリプティングの脆弱性
https://jvn.jp/jp/JVN24834813/
引用:
SECLISTS.ORG
http://seclists.org/fulldisclosure/2017/Apr/67
Copyright ©2017 JPCERT/CC All rights reserved.18
プラグイン開発者も
もっと解析ツール活用し
ていいんじゃないの?
てなわけでちょっと検索してみると
例えばこんなのありましたよ。
Copyright ©2017 JPCERT/CC All rights reserved.
解析ツールの例
RIPS (http://rips-scanner.sourceforge.net/)
PHPSCAN (https://github.com/AsaiKen/phpscan)
— このツールからいくつも PHP 関連の届出につながっている
WPScan (https://wpscan.org)
php-code-scanner (https://github.com/hissy/php-code-scanner)
— WordBench 東京3月勉強会「危険なWordPressプラグインの作
り方」で紹介
……..
19
Copyright ©2017 JPCERT/CC All rights reserved.
まとめ: プラグイン開発者向け
脆弱性を作り込まないために
—Plugin Developer Handbook
https://developer.wordpress.org/plugins/
—既存の脆弱性事例を知っておこう
発見された脆弱性は速やかに修正しアナウンスする
—報告を受ける窓口を用意する
—ユーザに修正を伝える
20
Copyright ©2017 JPCERT/CC All rights reserved.
サイト運営者の方へ…
21
Copyright ©2017 JPCERT/CC All rights reserved.
プラグイン利用に関する運営者側の問題
1. 古いバージョンのプラグインの利用
2. 更新が止まっているプラグインの利用
22
Copyright ©2017 JPCERT/CC All rights reserved.
1. 古いバージョンのプラグイン利用
プラグイン開発者が脆弱性を修正しても、プラグイン利
用者が最新版に更新しない場合、既知の脆弱性が放置さ
れたままに…
23
引用: WordPress Plugins Screen
https://codex.wordpress.org/File:plugins.png
Copyright ©2017 JPCERT/CC All rights reserved.
1. 古いバージョンのプラグイン利用
24
WordPress 用プラグイン Simple Custom CSS and JS におけるクロスサイ
トスクリプティングの脆弱性
https://jvn.jp/jp/JVN31459091/ 2017年7月24日公表
XSSの脆弱性なし
2017年9月12日時点引用:Simple Custom CSS and JS — WordPress Plugins
https://wordpress.org/plugins/custom-css-js/advanced/
XSSの脆弱性あり
version 3.4で修正
Copyright ©2017 JPCERT/CC All rights reserved.
2. 更新が止まっているプラグインの利用
長期間更新が止まっているプラグインの中には、開発が
終了し、メンテナンスされていないプラグインがある
—脆弱性が存在した場合、修正されない...
25
Copyright ©2017 JPCERT/CC All rights reserved.
2. 更新が止まっているプラグインの利用
昨年度の脆弱性報告を受けたWordPress プラグインの
最終更新日を調べてみました
—半分程度は2年以上更新されていないプラグイン
26
引用:Simple Custom CSS and JS — WordPress Plugins
https://wordpress.org/plugins/custom-css-js/
ここの値を調べた
ページ例
Copyright ©2017 JPCERT/CC All rights reserved.
脆弱なプラグインを使わないためには?
利用しているプラグインを最新版にする
—脆弱性が修正されたバージョンのままにしない
開発がアクティブではないプラグインには注意!
27
Copyright ©2017 JPCERT/CC All rights reserved.
ブラックリストは役に立つ?
28
WordPress ホスティングサービスにおいて、何らかの問
題のあるプラグイン(やテーマ?)に関するブラックリス
トを作っている例がある
ブラックリストを作っている理由については、セキュリ
ティ上の理由だけではない(サービス側で提供している機能と
の衝突なども挙げられている: wpengine)
GoDaddy – Blacklisted plugins
https://www.godaddy.com/help/blacklisted-plugins-8964
WPengine – Disallowed plugins
https://wpengine.com/support/disallowed-plugins/
• ブラックリスト入りの条件は?
• メンテナンスコスト
Copyright ©2017 JPCERT/CC All rights reserved.
まとめ
WordPress サイト(コア + プラグイン)のセキュリティ
はプラグインのセキュリティが鍵
プラグイン開発者向けのベストプラクティス
— 脆弱性をつくりこまない
— 脆弱性通知を受ける窓口の設置
— ユーザへの脆弱性修正の通知
サイト運用者向けのベストプラクティス
— 利用しているプラグインを最新版にする
— 利用しているプラグインの定期的なレビュー
— コミュニティ内での共有
29
Copyright ©2017 JPCERT/CC All rights reserved.30
お問合せ、インシデント対応のご依頼は
JPCERTコーディネーションセンター
— Email:pr@jpcert.or.jp
— Tel:03-3518-4600
— https://www.jpcert.or.jp/
インシデント報告
— Email:info@jpcert.or.jp
— https://www.jpcert.or.jp/form/
脆弱性情報に関するご相談
— Email: vultures@jpcert.or.jp
Copyright ©2017 JPCERT/CC All rights reserved.31
ご静聴ありがとうございました
Copyright ©2017 JPCERT/CC All rights reserved.
参考情報
脆弱性事例その2
—WordPress 用プラグイン Multi Feed Reader に SQL イ
ンジェクション
解析ツール紹介
更新されないプラグインの脆弱性
32
Copyright ©2017 JPCERT/CC All rights reserved.
「Multi Feed Reader」(1)
ログイン可能なユーザによる SQL インジェクション
バージョン 2.2.4 で修正
https://wordpress.org/plugins/multi-feed-reader/
shortcode として入力された文字列をそのまま SQL 文の組み立てに
使っていた
33
WordPress 用プラグイン Multi Feed Reader に SQL インジェクション
https://jvn.jp/jp/JVN98617234/ 2017年6月6日
Copyright ©2017 JPCERT/CC All rights reserved.
「Multi Feed Reader」(2)
34
L143: public static function find_one_by_property( $property, $value ) {
……..
L150: $row = $wpdb->get_row(
L151: ‘SELECT * FROM ‘ . self::table_name() . ‘ WHERE ‘ .
$property . ‘ = ¥’’ . $value . ‘¥’ LIMIT 0,1
L152: );
lib/models/base.php (2.2.3)
Copyright ©2017 JPCERT/CC All rights reserved.
「Multi Feed Reader」(3)
35
L143: public static function find_one_by_property( $property, $value ) {
……..
L150: $row = $wpdb->get_row(
L151: ‘SELECT * FROM ‘ . self::table_name() . ‘ WHERE ‘ .
$property . ‘ = ¥’’ . esc_sql( $value ) . ‘¥’ LIMIT 0,1
L152: );
lib/models/base.php (2.2.4)
$wpdb->prepare() 使うと
もっといいよね。
Copyright ©2017 JPCERT/CC All rights reserved.
SQLを扱うなら絶対読んでおこう
36
引用:
WORDPRESS.ORG Codex Class Reference/wpdb
https://codex.wordpress.org/Class_Reference/wpdb
Copyright ©2017 JPCERT/CC All rights reserved.
コード解析ツール RIPS
RIPS (http://rips-scanner.sourceforge.net/)
—232の「危険な関数」を定義し、データフロー解析を実行
—Webサーバ上にツールを展開する必要があり、やや煩雑
37
Copyright ©2017 JPCERT/CC All rights reserved.
コード解析ツール PHPSCAN
phpscan (https://github.com/AsaiKen/phpscan)
—PHPのコードを疑似的に実行してデータフローを解析
—Java環境があれば手軽に解析できる
38
Copyright ©2017 JPCERT/CC All rights reserved.
プロファイリング&脆弱性検出ツール WPScan
WPScan (https://wpscan.org)
—多機能なブラックボックス・テストツール
ログインパスワードへのブルートフォースアタック
使用しているプラグイン・テーマに脆弱なバージョンが含まれ
ていないかチェック etc.
39
Copyright ©2017 JPCERT/CC All rights reserved.
更新されないプラグインの脆弱性
“22 Abandoned WordPress Plugins with
Vulnerabilities”
— 2年以上更新されていないプラグインは
17,383 個(※脆弱性があるプラグイン
ではありません)
— 18個の脆弱なプラグインを発見
1000以上のアクティブインストール数
のプラグインを含む
— 4個のプラグインは脆弱性を修正してい
たが、ユーザが気づけない形で修正
同じバージョンのまま修正されたなど
40
引用:
Wordfence 22 Abandoned WordPress Plugins with Vulnerabilities
https://www.wordfence.com/blog/2017/05/22-abandoned-
wordpress-plugins-vulnerabilities/

More Related Content

What's hot

デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
JPCERT Coordination Center
 
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼうCMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
Hiroshi Tokumaru
 
安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014
Hiroshi Tokumaru
 
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
Hiroshi Tokumaru
 

What's hot (20)

他人事ではないWebセキュリティ
他人事ではないWebセキュリティ他人事ではないWebセキュリティ
他人事ではないWebセキュリティ
 
Webアクセシビリティ 海外の最新動向 2018
Webアクセシビリティ 海外の最新動向 2018Webアクセシビリティ 海外の最新動向 2018
Webアクセシビリティ 海外の最新動向 2018
 
[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見
 
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
 
WordPressをこれから始める人のためのテーマ講座
WordPressをこれから始める人のためのテーマ講座WordPressをこれから始める人のためのテーマ講座
WordPressをこれから始める人のためのテーマ講座
 
次世代プラットフォームのセキュリティモデル考察(前編)
次世代プラットフォームのセキュリティモデル考察(前編)次世代プラットフォームのセキュリティモデル考察(前編)
次世代プラットフォームのセキュリティモデル考察(前編)
 
Owasp Project を使ってみた
Owasp Project を使ってみたOwasp Project を使ってみた
Owasp Project を使ってみた
 
OWASPの歩き方(How to walk_the_owasp)
OWASPの歩き方(How to walk_the_owasp)OWASPの歩き方(How to walk_the_owasp)
OWASPの歩き方(How to walk_the_owasp)
 
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
 
OWASP ASVS Project review 2.0 and 3.0
OWASP ASVS Project review 2.0 and 3.0OWASP ASVS Project review 2.0 and 3.0
OWASP ASVS Project review 2.0 and 3.0
 
クラウドセキュリティ基礎 #seccamp
クラウドセキュリティ基礎 #seccampクラウドセキュリティ基礎 #seccamp
クラウドセキュリティ基礎 #seccamp
 
PHPカンファレンス2014セキュリティ対談資料
PHPカンファレンス2014セキュリティ対談資料PHPカンファレンス2014セキュリティ対談資料
PHPカンファレンス2014セキュリティ対談資料
 
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼうCMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
 
これからのWebセキュリティ フロントエンド編 #seccamp
これからのWebセキュリティ フロントエンド編 #seccampこれからのWebセキュリティ フロントエンド編 #seccamp
これからのWebセキュリティ フロントエンド編 #seccamp
 
安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014
 
Web Componentsのアクセシビリティ
Web ComponentsのアクセシビリティWeb Componentsのアクセシビリティ
Web Componentsのアクセシビリティ
 
セキュアなソフトウェアアーキテクチャー
セキュアなソフトウェアアーキテクチャーセキュアなソフトウェアアーキテクチャー
セキュアなソフトウェアアーキテクチャー
 
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
 
Career - design, adaption and diversity - for EMC I&D event
Career - design, adaption and diversity - for EMC I&D eventCareer - design, adaption and diversity - for EMC I&D event
Career - design, adaption and diversity - for EMC I&D event
 
安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018安全なWebアプリケーションの作り方2018
安全なWebアプリケーションの作り方2018
 

Viewers also liked

Viewers also liked (10)

利用者数倍増! 観光協会サイト「ツアーガイドひかり」を引き継ぎ、活性化するまでの技術とプロセス
利用者数倍増! 観光協会サイト「ツアーガイドひかり」を引き継ぎ、活性化するまでの技術とプロセス利用者数倍増! 観光協会サイト「ツアーガイドひかり」を引き継ぎ、活性化するまでの技術とプロセス
利用者数倍増! 観光協会サイト「ツアーガイドひかり」を引き継ぎ、活性化するまでの技術とプロセス
 
ECサイトをWooCommerceで始めよう
ECサイトをWooCommerceで始めようECサイトをWooCommerceで始めよう
ECサイトをWooCommerceで始めよう
 
コンテンツ戦国時代をどう生き抜く?成果につながるコンテンツマーケティングの基本[SEO][オウンドメディア]
コンテンツ戦国時代をどう生き抜く?成果につながるコンテンツマーケティングの基本[SEO][オウンドメディア]コンテンツ戦国時代をどう生き抜く?成果につながるコンテンツマーケティングの基本[SEO][オウンドメディア]
コンテンツ戦国時代をどう生き抜く?成果につながるコンテンツマーケティングの基本[SEO][オウンドメディア]
 
WordCamp Tokyo 2017 へようこそ
WordCamp Tokyo 2017 へようこそWordCamp Tokyo 2017 へようこそ
WordCamp Tokyo 2017 へようこそ
 
20170916ブログを強力な武器としてビジネスにインストールすることで独立を成功させた話
20170916ブログを強力な武器としてビジネスにインストールすることで独立を成功させた話20170916ブログを強力な武器としてビジネスにインストールすることで独立を成功させた話
20170916ブログを強力な武器としてビジネスにインストールすることで独立を成功させた話
 
WordCamp Tokyo 2017 ランチセッション「WordPress を使い始めたら 感謝を伝えよう」
WordCamp Tokyo 2017 ランチセッション「WordPress を使い始めたら 感謝を伝えよう」WordCamp Tokyo 2017 ランチセッション「WordPress を使い始めたら 感謝を伝えよう」
WordCamp Tokyo 2017 ランチセッション「WordPress を使い始めたら 感謝を伝えよう」
 
なぜ人は怪しい壺を欲しくなってしまうのか WordCamp Tokyo 2017Ver
なぜ人は怪しい壺を欲しくなってしまうのか WordCamp Tokyo 2017Verなぜ人は怪しい壺を欲しくなってしまうのか WordCamp Tokyo 2017Ver
なぜ人は怪しい壺を欲しくなってしまうのか WordCamp Tokyo 2017Ver
 
大規模案件の苦悩から生まれた
柔軟なカスタムフィールド設計
大規模案件の苦悩から生まれた
柔軟なカスタムフィールド設計大規模案件の苦悩から生まれた
柔軟なカスタムフィールド設計
大規模案件の苦悩から生まれた
柔軟なカスタムフィールド設計
 
Think Before You Submit Themes on WordPress dot Org
Think Before You Submit Themes on WordPress dot OrgThink Before You Submit Themes on WordPress dot Org
Think Before You Submit Themes on WordPress dot Org
 
Create LED lightened Wapuu (LEDパネルで光るわぷーを)
Create LED lightened Wapuu (LEDパネルで光るわぷーを)Create LED lightened Wapuu (LEDパネルで光るわぷーを)
Create LED lightened Wapuu (LEDパネルで光るわぷーを)
 

Similar to 安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)

Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
JPCERT Coordination Center
 
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
CODE BLUE
 
Shusei tomonaga pac_sec_20171026_jp
Shusei tomonaga pac_sec_20171026_jpShusei tomonaga pac_sec_20171026_jp
Shusei tomonaga pac_sec_20171026_jp
PacSecJP
 
Blojsom におけるクロスサイトスクリプティングの脆弱性
Blojsom におけるクロスサイトスクリプティングの脆弱性Blojsom におけるクロスサイトスクリプティングの脆弱性
Blojsom におけるクロスサイトスクリプティングの脆弱性
JPCERT Coordination Center
 

Similar to 安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017) (20)

Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
 
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
 
サンプルで学ぶCassandraアプリケーションの作り方
サンプルで学ぶCassandraアプリケーションの作り方サンプルで学ぶCassandraアプリケーションの作り方
サンプルで学ぶCassandraアプリケーションの作り方
 
IT エンジニアのための 流し読み Microsoft 365 - 入門!Microsoft Defender for Endpoint クロスプラットフ...
IT エンジニアのための 流し読み Microsoft 365 - 入門!Microsoft Defender for Endpoint クロスプラットフ...IT エンジニアのための 流し読み Microsoft 365 - 入門!Microsoft Defender for Endpoint クロスプラットフ...
IT エンジニアのための 流し読み Microsoft 365 - 入門!Microsoft Defender for Endpoint クロスプラットフ...
 
次世代の企業ITインフラを支えるエンジニアとは
次世代の企業ITインフラを支えるエンジニアとは次世代の企業ITインフラを支えるエンジニアとは
次世代の企業ITインフラを支えるエンジニアとは
 
Rancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるRancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げる
 
Talk 1「データインテグレーションとは何か」
Talk 1「データインテグレーションとは何か」Talk 1「データインテグレーションとは何か」
Talk 1「データインテグレーションとは何か」
 
2017年のセキュリティ 傾向と対策講座
2017年のセキュリティ 傾向と対策講座2017年のセキュリティ 傾向と対策講座
2017年のセキュリティ 傾向と対策講座
 
stapy_028_talk1
stapy_028_talk1stapy_028_talk1
stapy_028_talk1
 
HTML5 Web アプリケーションのセキュリティ
HTML5 Web アプリケーションのセキュリティHTML5 Web アプリケーションのセキュリティ
HTML5 Web アプリケーションのセキュリティ
 
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
 
AppFormix勉強会資料
AppFormix勉強会資料AppFormix勉強会資料
AppFormix勉強会資料
 
Redmineの情報を自分好みに見える化した話
Redmineの情報を自分好みに見える化した話Redmineの情報を自分好みに見える化した話
Redmineの情報を自分好みに見える化した話
 
Shusei tomonaga pac_sec_20171026_jp
Shusei tomonaga pac_sec_20171026_jpShusei tomonaga pac_sec_20171026_jp
Shusei tomonaga pac_sec_20171026_jp
 
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料
 
データベースアプリケーション開発セミナー・最新のデータベースとアプリケーション開発の関係
データベースアプリケーション開発セミナー・最新のデータベースとアプリケーション開発の関係データベースアプリケーション開発セミナー・最新のデータベースとアプリケーション開発の関係
データベースアプリケーション開発セミナー・最新のデータベースとアプリケーション開発の関係
 
20160208 power cms_cloud_public
20160208 power cms_cloud_public20160208 power cms_cloud_public
20160208 power cms_cloud_public
 
Blojsom におけるクロスサイトスクリプティングの脆弱性
Blojsom におけるクロスサイトスクリプティングの脆弱性Blojsom におけるクロスサイトスクリプティングの脆弱性
Blojsom におけるクロスサイトスクリプティングの脆弱性
 
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 

More from JPCERT Coordination Center

Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
JPCERT Coordination Center
 
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
JPCERT Coordination Center
 
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
JPCERT Coordination Center
 
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JPCERT Coordination Center
 
MySQL Connector/J における SQL インジェクションの脆弱性
MySQL Connector/J における SQL インジェクションの脆弱性MySQL Connector/J における SQL インジェクションの脆弱性
MySQL Connector/J における SQL インジェクションの脆弱性
JPCERT Coordination Center
 
Apache Struts2 における任意の Java メソッド実行の脆弱性
Apache Struts2 における任意の Java メソッド実行の脆弱性Apache Struts2 における任意の Java メソッド実行の脆弱性
Apache Struts2 における任意の Java メソッド実行の脆弱性
JPCERT Coordination Center
 
Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性
Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性
Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性
JPCERT Coordination Center
 
Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第2回演習の解説Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第2回演習の解説
JPCERT Coordination Center
 
Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説
JPCERT Coordination Center
 
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義
JPCERT Coordination Center
 
Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習
JPCERT Coordination Center
 

More from JPCERT Coordination Center (20)

いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
 
脆弱性情報はこうしてやってくる
脆弱性情報はこうしてやってくる脆弱性情報はこうしてやってくる
脆弱性情報はこうしてやってくる
 
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
 
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
 
ソフトウェアセキュリティ保証成熟度モデル
ソフトウェアセキュリティ保証成熟度モデルソフトウェアセキュリティ保証成熟度モデル
ソフトウェアセキュリティ保証成熟度モデル
 
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
 
Android Secure Coding
Android Secure CodingAndroid Secure Coding
Android Secure Coding
 
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
 
Apache Axis2におけるXML署名検証不備
Apache Axis2におけるXML署名検証不備Apache Axis2におけるXML署名検証不備
Apache Axis2におけるXML署名検証不備
 
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
 
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
 
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
 
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
 
MySQL Connector/J における SQL インジェクションの脆弱性
MySQL Connector/J における SQL インジェクションの脆弱性MySQL Connector/J における SQL インジェクションの脆弱性
MySQL Connector/J における SQL インジェクションの脆弱性
 
Apache Struts2 における任意の Java メソッド実行の脆弱性
Apache Struts2 における任意の Java メソッド実行の脆弱性Apache Struts2 における任意の Java メソッド実行の脆弱性
Apache Struts2 における任意の Java メソッド実行の脆弱性
 
Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性
Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性
Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性
 
Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第2回演習の解説Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第2回演習の解説
 
Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説
 
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義
 
Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習
 

安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)

  • 2. Copyright ©2017 JPCERT/CC All rights reserved. 本日の内容 はじめに —JPCERT/CC の紹介 —脆弱性ハンドリングとは? 脆弱性届出状況から見えてきた WordPressセキュリティの傾向 —プラグインのセキュリティに関して 開発者、サイト運営者に気をつけてもらいたいこと 1
  • 3. Copyright ©2017 JPCERT/CC All rights reserved. JPCERT/CCとは 一般社団法人 JPCERTコーディネーションセンター Japan Computer Emergency Response Team Coordination Center ジェーピーサート コーディネーションセンター 日本国内のインターネット利用者やセキュリティ管理担当者、ソフトウエア製品開発者等 (主に、情報セキュリティ担当者)がサービス対象 コンピュータセキュリティインシデントへの対応、国内外にセンサをおいたインターネッ ト定点観測、ソフトウエアや情報システム・制御システム機器等の脆弱性への対応などを 通じ、セキュリティ向上を推進 インシデント対応をはじめとする、国際連携が必要なオペレーションや情報連携に関する、 我が国の窓口となるCSIRT(窓口CSIRT) CSIRT: Computer Security Incident Response Team ※各国に同様の窓口となるCSIRTが存在する(米国のUS-CERT、CERT/CC、中国のCNCERT, 韓国のKrCERT/CC、等) 経済産業省からの委託事業として、サイバー攻撃等国際連携対応調整事業を実施 2
  • 4. Copyright ©2017 JPCERT/CC All rights reserved. JPCERT/CCの活動 重要インフラ、重要情報インフラ事業者等の特定組織向け情報発信早期警戒情報 海外のNational-CSIRTや企業内のセキュリティ対応組織の構築・運用支援CSIRT構築支援 脆弱性情報ハンドリング ➢ 未公開の脆弱性関連情報を製品開発者へ 提供し、対応依頼 ➢ 関係機関と連携し、国際的に情報公開日 を調整 ➢ セキュアなコーディング手法の普及 ➢ 制御システムに関する脆弱性関連情報の 適切な流通 マルウエア(不正プログラム)等の攻撃手法の分析、解析アーティファクト分析 各種業務を円滑に行うための海外関係機関との連携国際連携 インシデントの予測と捕捉インシデント予防 発生したインシデントへの対応 制御システムに関するインシデントハンドリング、情報収集・分析発信制御システムセキュリティ 日本シーサート協議会、フィッシング対策協議会の事務局運営等国内外関係者との連携 ➢ マルウエアの接続先等の攻撃関連サイ ト等の閉鎖等による被害最小化 ➢ 攻撃手法の分析支援による被害可能性 の確認、拡散抑止 ➢ 再発防止に向けた関係各関の情報交換 及び情報共有 インシデントハンドリング (インシデント対応調整支援) 情報収集・分析・発信 定点観測(TSUBAME) ➢ ネットワークトラフィック情報の収集分 析 ➢ セキュリティ上の脅威情報の収集、分析、 必要とする組織への提供 3
  • 5. Copyright ©2017 JPCERT/CC All rights reserved. 脆弱性情報ハンドリングとは? 脆弱性情報ハンドリング —ソフトウェア/ハードウエアシステム等における脆弱性情報 の取扱い —未公開の脆弱性情報を製品開発者に連絡し対応を依頼し、 海外の関係機関とも連携し、一般公表を調整 日本における脆弱性情報流通の取り組み —経済産業省告示「ソフトウエア製品等の脆弱性関連情報に 関する取扱規程」 —情報セキュリティ早期警戒パートナーシップ 4
  • 6. Copyright ©2017 JPCERT/CC All rights reserved. 脆弱性情報ハンドリングとは? 5 https://www.jpcert.or.jp/vh/index.html 脆弱性情報の届出 ベンダ・発見者との調整 一般公表 WordPress プラグイン “XXX” のクロスサイトスクリプティン グの脆弱性を発見した! プラグイン “XXX” の開発者 JVN公表 http://jvn.jp/ JVN (Japan Vulnerability Notes)
  • 7. Copyright ©2017 JPCERT/CC All rights reserved. WordPress関連のJVN公表数の遷移 6 0 2 4 6 8 10 12 14 16 18 20 2011 2012 2013 2014 2015 2016 2017 wordpress plugin プラグインの脆弱性が増加
  • 8. Copyright ©2017 JPCERT/CC All rights reserved. WordPress関連のJVN公表数の遷移 7 0 2 4 6 8 10 12 14 16 18 20 2011 2012 2013 2014 2015 2016 2017 wordpress plugin NextGEN Gallery(1,000,000+ active installs) に PHP ファイルインクルージョンの脆弱性 サーバ上で任意のコード実行の可能性 プラグインの脆弱性が増加
  • 9. Copyright ©2017 JPCERT/CC All rights reserved. WordPress関連のJVN公表数の遷移 8 700,000+ 200,000+ 400,000+ 広く使われているプラグインも… 0 2 4 6 8 10 12 14 16 18 20 2011 2012 2013 2014 2015 2016 2017 wordpress plugin プラグインの脆弱性が増加
  • 10. Copyright ©2017 JPCERT/CC All rights reserved. WordPress本体のセキュリティ対策は進んでいる WordPressのREST APIに起因する脆弱性(2017年2月) — 多数のウェブサイトが改ざんの被害に — 参考情報 JPCERT/CC WordPress の脆弱性に関する注意喚起 https://www.jpcert.or.jp/at/2017/at170006.html HackerOneにてバグバウンティプログラムの開始(2017年5月) 9 引用: WordPress Now on HackerOne https://wordpress.org/news/2017/05/wordpress-now-on-hackerone/
  • 11. Copyright ©2017 JPCERT/CC All rights reserved.10 “A chain is only as strong as its weakest link” プラグインが weakest link? この写真 は CC BY-SA のライセンスを許諾されています
  • 12. Copyright ©2017 JPCERT/CC All rights reserved. プラグイン開発者の方へ… 11
  • 13. Copyright ©2017 JPCERT/CC All rights reserved. 「Simple Custom CSS and JS」(1) 反射型 XSS バージョン 3.4 で修正 https://wordpress.org/plugins/custom-css-js/ includes/admin-screens.php にて HTTP リクエストで渡された値をそ のままページ出力に使っている 12 WordPress 用プラグイン Simple Custom CSS and JS におけるクロスサイ トスクリプティングの脆弱性 https://jvn.jp/jp/JVN31459091/ 2017年7月24日公表
  • 14. Copyright ©2017 JPCERT/CC All rights reserved. 「Simple Custom CSS and JS」(2) 13 L569: function custom_code_options_meta_box_callback( $post ) { …….. L576: if ( isset( $_GET['language'] ) ) { L577: $options['language'] = $_GET['language’]; L578: } …….. L624: <input type="hidden" name="custom_code_language“ value="<?php echo $options['language']; ?>" /> includes/admin-screens.php (3.2)
  • 15. Copyright ©2017 JPCERT/CC All rights reserved. 「Simple Custom CSS and JS」(3) 14 L569: function custom_code_options_meta_box_callback( $post ) { …….. L575: if ( isset( $_GET['language'] ) ) { L576: $options['language'] = $this->get_language(); L577: } …….. L623: <input type="hidden" name="custom_code_language“ value="<?php echo $options['language']; ?>" /> includes/admin-screens.php (3.4)
  • 16. Copyright ©2017 JPCERT/CC All rights reserved. 「Simple Custom CSS and JS」(4) 15 L1075: function get_language( $post_id = false ) { …….. L1079: } else { L1080: $language = isset( $_GET[‘language’] ) ? esc_attr(strtolower($_GET[‘language’])) : ‘css’; L1081: } …….. includes/admin-screens.php (3.4)
  • 17. Copyright ©2017 JPCERT/CC All rights reserved. Securing Output 16 Plugin Handbook よく読みましょう. 引用: WORDPRESS.ORG Plugin Handbook https://developer.wordpress.org/plugins/security /securing-output/
  • 18. Copyright ©2017 JPCERT/CC All rights reserved. ツールで脆弱性探索してるヒトたちもいます 17 BestWebSoft 製のプラグ イン50件で使われている メニュー表示機能にクロ スサイトスクリプティン グの脆弱性 静的解析ツールを提供する セキュリティベンダが同じ 脆弱性を独立に発見・公表 案件調整中にこんなこともありました… JVN 複数の BestWebSoft 製 WordPress 用プラグインにおける クロスサイトスクリプティングの脆弱性 https://jvn.jp/jp/JVN24834813/ 引用: SECLISTS.ORG http://seclists.org/fulldisclosure/2017/Apr/67
  • 19. Copyright ©2017 JPCERT/CC All rights reserved.18 プラグイン開発者も もっと解析ツール活用し ていいんじゃないの? てなわけでちょっと検索してみると 例えばこんなのありましたよ。
  • 20. Copyright ©2017 JPCERT/CC All rights reserved. 解析ツールの例 RIPS (http://rips-scanner.sourceforge.net/) PHPSCAN (https://github.com/AsaiKen/phpscan) — このツールからいくつも PHP 関連の届出につながっている WPScan (https://wpscan.org) php-code-scanner (https://github.com/hissy/php-code-scanner) — WordBench 東京3月勉強会「危険なWordPressプラグインの作 り方」で紹介 …….. 19
  • 21. Copyright ©2017 JPCERT/CC All rights reserved. まとめ: プラグイン開発者向け 脆弱性を作り込まないために —Plugin Developer Handbook https://developer.wordpress.org/plugins/ —既存の脆弱性事例を知っておこう 発見された脆弱性は速やかに修正しアナウンスする —報告を受ける窓口を用意する —ユーザに修正を伝える 20
  • 22. Copyright ©2017 JPCERT/CC All rights reserved. サイト運営者の方へ… 21
  • 23. Copyright ©2017 JPCERT/CC All rights reserved. プラグイン利用に関する運営者側の問題 1. 古いバージョンのプラグインの利用 2. 更新が止まっているプラグインの利用 22
  • 24. Copyright ©2017 JPCERT/CC All rights reserved. 1. 古いバージョンのプラグイン利用 プラグイン開発者が脆弱性を修正しても、プラグイン利 用者が最新版に更新しない場合、既知の脆弱性が放置さ れたままに… 23 引用: WordPress Plugins Screen https://codex.wordpress.org/File:plugins.png
  • 25. Copyright ©2017 JPCERT/CC All rights reserved. 1. 古いバージョンのプラグイン利用 24 WordPress 用プラグイン Simple Custom CSS and JS におけるクロスサイ トスクリプティングの脆弱性 https://jvn.jp/jp/JVN31459091/ 2017年7月24日公表 XSSの脆弱性なし 2017年9月12日時点引用:Simple Custom CSS and JS — WordPress Plugins https://wordpress.org/plugins/custom-css-js/advanced/ XSSの脆弱性あり version 3.4で修正
  • 26. Copyright ©2017 JPCERT/CC All rights reserved. 2. 更新が止まっているプラグインの利用 長期間更新が止まっているプラグインの中には、開発が 終了し、メンテナンスされていないプラグインがある —脆弱性が存在した場合、修正されない... 25
  • 27. Copyright ©2017 JPCERT/CC All rights reserved. 2. 更新が止まっているプラグインの利用 昨年度の脆弱性報告を受けたWordPress プラグインの 最終更新日を調べてみました —半分程度は2年以上更新されていないプラグイン 26 引用:Simple Custom CSS and JS — WordPress Plugins https://wordpress.org/plugins/custom-css-js/ ここの値を調べた ページ例
  • 28. Copyright ©2017 JPCERT/CC All rights reserved. 脆弱なプラグインを使わないためには? 利用しているプラグインを最新版にする —脆弱性が修正されたバージョンのままにしない 開発がアクティブではないプラグインには注意! 27
  • 29. Copyright ©2017 JPCERT/CC All rights reserved. ブラックリストは役に立つ? 28 WordPress ホスティングサービスにおいて、何らかの問 題のあるプラグイン(やテーマ?)に関するブラックリス トを作っている例がある ブラックリストを作っている理由については、セキュリ ティ上の理由だけではない(サービス側で提供している機能と の衝突なども挙げられている: wpengine) GoDaddy – Blacklisted plugins https://www.godaddy.com/help/blacklisted-plugins-8964 WPengine – Disallowed plugins https://wpengine.com/support/disallowed-plugins/ • ブラックリスト入りの条件は? • メンテナンスコスト
  • 30. Copyright ©2017 JPCERT/CC All rights reserved. まとめ WordPress サイト(コア + プラグイン)のセキュリティ はプラグインのセキュリティが鍵 プラグイン開発者向けのベストプラクティス — 脆弱性をつくりこまない — 脆弱性通知を受ける窓口の設置 — ユーザへの脆弱性修正の通知 サイト運用者向けのベストプラクティス — 利用しているプラグインを最新版にする — 利用しているプラグインの定期的なレビュー — コミュニティ内での共有 29
  • 31. Copyright ©2017 JPCERT/CC All rights reserved.30 お問合せ、インシデント対応のご依頼は JPCERTコーディネーションセンター — Email:pr@jpcert.or.jp — Tel:03-3518-4600 — https://www.jpcert.or.jp/ インシデント報告 — Email:info@jpcert.or.jp — https://www.jpcert.or.jp/form/ 脆弱性情報に関するご相談 — Email: vultures@jpcert.or.jp
  • 32. Copyright ©2017 JPCERT/CC All rights reserved.31 ご静聴ありがとうございました
  • 33. Copyright ©2017 JPCERT/CC All rights reserved. 参考情報 脆弱性事例その2 —WordPress 用プラグイン Multi Feed Reader に SQL イ ンジェクション 解析ツール紹介 更新されないプラグインの脆弱性 32
  • 34. Copyright ©2017 JPCERT/CC All rights reserved. 「Multi Feed Reader」(1) ログイン可能なユーザによる SQL インジェクション バージョン 2.2.4 で修正 https://wordpress.org/plugins/multi-feed-reader/ shortcode として入力された文字列をそのまま SQL 文の組み立てに 使っていた 33 WordPress 用プラグイン Multi Feed Reader に SQL インジェクション https://jvn.jp/jp/JVN98617234/ 2017年6月6日
  • 35. Copyright ©2017 JPCERT/CC All rights reserved. 「Multi Feed Reader」(2) 34 L143: public static function find_one_by_property( $property, $value ) { …….. L150: $row = $wpdb->get_row( L151: ‘SELECT * FROM ‘ . self::table_name() . ‘ WHERE ‘ . $property . ‘ = ¥’’ . $value . ‘¥’ LIMIT 0,1 L152: ); lib/models/base.php (2.2.3)
  • 36. Copyright ©2017 JPCERT/CC All rights reserved. 「Multi Feed Reader」(3) 35 L143: public static function find_one_by_property( $property, $value ) { …….. L150: $row = $wpdb->get_row( L151: ‘SELECT * FROM ‘ . self::table_name() . ‘ WHERE ‘ . $property . ‘ = ¥’’ . esc_sql( $value ) . ‘¥’ LIMIT 0,1 L152: ); lib/models/base.php (2.2.4) $wpdb->prepare() 使うと もっといいよね。
  • 37. Copyright ©2017 JPCERT/CC All rights reserved. SQLを扱うなら絶対読んでおこう 36 引用: WORDPRESS.ORG Codex Class Reference/wpdb https://codex.wordpress.org/Class_Reference/wpdb
  • 38. Copyright ©2017 JPCERT/CC All rights reserved. コード解析ツール RIPS RIPS (http://rips-scanner.sourceforge.net/) —232の「危険な関数」を定義し、データフロー解析を実行 —Webサーバ上にツールを展開する必要があり、やや煩雑 37
  • 39. Copyright ©2017 JPCERT/CC All rights reserved. コード解析ツール PHPSCAN phpscan (https://github.com/AsaiKen/phpscan) —PHPのコードを疑似的に実行してデータフローを解析 —Java環境があれば手軽に解析できる 38
  • 40. Copyright ©2017 JPCERT/CC All rights reserved. プロファイリング&脆弱性検出ツール WPScan WPScan (https://wpscan.org) —多機能なブラックボックス・テストツール ログインパスワードへのブルートフォースアタック 使用しているプラグイン・テーマに脆弱なバージョンが含まれ ていないかチェック etc. 39
  • 41. Copyright ©2017 JPCERT/CC All rights reserved. 更新されないプラグインの脆弱性 “22 Abandoned WordPress Plugins with Vulnerabilities” — 2年以上更新されていないプラグインは 17,383 個(※脆弱性があるプラグイン ではありません) — 18個の脆弱なプラグインを発見 1000以上のアクティブインストール数 のプラグインを含む — 4個のプラグインは脆弱性を修正してい たが、ユーザが気づけない形で修正 同じバージョンのまま修正されたなど 40 引用: Wordfence 22 Abandoned WordPress Plugins with Vulnerabilities https://www.wordfence.com/blog/2017/05/22-abandoned- wordpress-plugins-vulnerabilities/