Upgrade to Pro — share decks privately, control downloads, hide ads and more …

学生から見たOWASP Top10 A1:2017-インジェクション

学生から見たOWASP Top10 A1:2017-インジェクション

OWASP To10 A1

Koishikura

June 01, 2018
Tweet

More Decks by Koishikura

Other Decks in Technology

Transcript

  1. 自己紹介 • 小石倉 広樹(こいしくら ひろき) • Facebook: https://www. facebook.com/hiroki.koishikura •

    Twitter : @crazytoto795 • メール : [email protected] ➢ 名古屋工学院専門学校 情報総合学科 4年 ➢ OWASP Nagoya Board Member
  2. 3.学生が活用した OWASP Top10 A1:2017 STEP 1 OWASP Top10 A1:2017の分割 ①脆弱性の

    ポイント ②攻撃シナリオ の例 ④参考資料 ③防止方法
  3. 3.学生が活用した OWASP Top10 A1:2017 STEP 2 ①脆弱性発見のポイント:解読 また、組織は静的ソースコード解析ツール (SAST)と動的アプリケー ションテストツール

    (DAST)をCI/CDパイプラインに導入できます。こ れにより、新たに作られてしまったインジェクション欠陥を稼働環境に 展開する前に検出できます。 次のような状況では、アプリケーションはこの攻撃に対して脆弱です: • ユーザが提供したデータが、アプリケーションによって検証、フィ ルタリング、またはサニタイズされない。 • コンテキストに応じたエスケープが行われず、動的クエリまたはパ ラメータ化されていない呼出しがインタープリタに直接使用される。 • オブジェクト・リレーショナル・マッピング(ORM)の検索パラ メータ に悪意を持ったデータが使用され、重要なレコードを追加で 抽出し てしまう。 • 悪意を持ったデータを直接または連結して使う。例えば、動的クエ リ、コマンド、ストアド・プロシージャにおいて構文に悪意を持っ た データを組み合わせる形でSQLやコマンドが組み立てられる。 より一般的なインジェクションとしては、SQL、NoSQL、OSコマンド、 オブジェクト・リレーショナル・マッピング(ORM)、LDAP、および EL 式(Expression Language)またはOGNL式(Object Graph Navigation Library)のインジェクションがあります。コンセプトはすべ てのインタープリタで同じです。ソースコードをレビューすれば、イン ジェクションに対してアプリケーションが脆弱であるか最も効果的に検 出できます。そして、すべてのパラメータ、ヘッダー、URL、Cookie、 JSON、SOAP、およびXMLデータ入力の完全な自動テストも効果 的です。 A.脆弱なケース B.インジェクションの種類 C.テストツール
  4. 3.学生が活用した OWASP Top10 A1:2017 STEP 3 ①脆弱性発見のポイント:脆弱性の特定 A.脆弱なケース 次のような状況では、アプリケーションはこの攻撃に対して脆弱です: •

    ユーザが提供したデータが、アプリケーションによって検証、フィルタリング、 またはサニタイズされない。 • コンテキストに応じたエスケープが行われず、動的クエリまたはパラメータ化され ていない呼出しがインタープリタに直接使用される。 • オブジェクト・リレーショナル・マッピング(ORM)の検索パラメータに悪意を 持ったデータが使用され、重要なレコードを追加で抽出し てしまう。 • 悪意を持ったデータを直接または連結して使う。例えば、動的クエリ、コマンド、 ストアド・プロシージャにおいて構文に悪意を持ったデータを組み合わせる形で SQLやコマンドが組み立てられる。 ここら辺の用語の内容ができてないから攻撃で きちゃうんじゃね?
  5. 3.学生が活用した OWASP Top10 A1:2017 STEP 4 ②攻撃シナリオの例:SQLインジェクションの想定 “where uid =

    ‘or ‘1’ = ‘1’ -- ’ and pw = ‘ ’“ 大変なことになってしまうのでは?
  6. STEP 5 ③防止方法、④参考資料:SQLインジェクションの防止 3.学生が活用した OWASP Top10 A1:2017 【要約】 ①プリペアードステートメント(静的プレースホルダ )

    を使用する。 ②ストアドプロシージャを使用する。 ③エスケープする。 ④バリデーション(妥当性検査)を実施する。 ただし、あくまでも保険と考える。
  7. STEP 5 ③防止方法、④参考資料:SQLインジェクションの防止 3.学生が活用した OWASP Top10 A1:2017 Parameterized Query Examples

    SQL Injection is best prevented through the use of parameterized queries. The following chart demonstrates, with real-world code samples, how to build parameterized queries in most of the common web languages. The purpose of these code samples is to demonstrate to the web developer how to avoid SQL Injection when building database queries within a web application. パラメータ化されたクエリの例 SQLインジェクションは、 パラメータ化されたクエリを使用するこ とで最も効果的に防止されます 。 次の図は、実際のコードサンプ ルを使用して、一般的なWeb言語のほとんどでパラメータ化された クエリを構築する方法を示しています。 これらのコードサンプルの 目的は、Webアプリケーション内でデータベースクエリを構築する 際にSQLインジェクションを回避する方法をWeb開発者に実証する ことです。
  8. STEP 6 対策の実施 3.学生が活用した OWASP Top10 A1:2017 $sql = “select

    email from account_t where uid = :userid and pw = :password ”; $st->bindValue(“:userid”,$uid); $st->bindValue(“:password”,$pw); $st->execute();
  9. 4.SQLインジェクションのデモ OWASP BWA デモ • OWASP BWA(Broken Web Application)とは •

    “既知の脆弱性を持ったいろいろなアプリケーションを稼働させる仮想マ シンを提供します。” • ようするに、意図的に脆弱性を持たせたWebアプリケーションを複数導入 した状態のUbuntu(Linuxのディストリビューションの1つ)を仮想マシン イメージにしたものです。 • https://www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project