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

セキュリティ 開運研修2022 / security 2022

セキュリティ 開運研修2022 / security 2022

Avatar for Cybozu

Cybozu PRO

June 21, 2022
Tweet

More Decks by Cybozu

Other Decks in Technology

Transcript

  1. 脆弱性の評価 CVSS CVSSv3(Common Vulnerability Scoring System v3.0)とは 脆弱性の深刻度を数値化するための世界中で使われるシステム 基本値、環境値、現状値の3種類が存在する 基本値は、CIAに以下の5項⽬を加え、計8項⽬で脆弱性を評価

    攻撃経路(AV):ネットワーク or 隣接 or ローカル or 物理 攻撃の複雑さ(AC):低 or ⾼ 攻撃に必要な権限(PR):なし or 低 or ⾼ 被害者の操作の有無(UI):不要 or 要 影響の範囲(S):変更なし or 変更あり 基本値は0.0-10.0の値+それぞれの評価項⽬で表現される 例︓4.3(CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N) 参考情報 https://www.ipa.go.jp/security/vuln/CVSSv3.html
  2. SELECT * FROM tbl_user WHERE id =ʻ{$_GET[ʻidʼ]}ʼ ʼ OR 1=1

    -- id =ʻʼ OR 1=1 --ʼ SQLインジェクション例 SQL ⽂の構造を破壊され WHERE 句で指定される条件が常に「真」に なり、情報が漏えいします。 診断時には AND(ʻ and 1=0) を使うことが推奨です。
  3. DOM-Based XSS についての補⾜ DOM-Based XSSを構成する「ソース」と「シンク」 ソース︓攻撃者によってスクリプトを埋め込まれる可能性のある箇所 location.href, location.search, window.name など

    シンク︓ソースに含まれる⽂字列を⽤いることで実際にXSSの原因となる箇所 document.write, element.innerHTML, $.html(), eval など
  4. DOM-Based XSS の例 <div id=“sample”></div> <script> const txt = decodeURIComponent(location.hash.substring(1));

    // ソース document.getElementById(“sample”).innerHTML = txt; // シンク </script>
  5. DOM-Based XSSに特化した対策 Trusted Types CSPで「trusted types」を指定することでシンクに代⼊できる値の型をTrusted Types型に制限することができる。 Trusted Types型以外がシンクを経由して代⼊されそうになるとエラーになる。 注意

    対応しているブラウザがまだ少ない https://caniuse.com/?search=trustedtype Trusted Typesでの定義するエスケープ処理が適切でないとDOM-based XSSは防げない 詳細︓ https://chromium.googlesource.com/chromium/src/+/master/d ocs/trusted_types_on_webui.md
  6. CSRF例(対策前) パスワード変更 ページへ遷移を クリック /password-reset 新しい パスワード を⼊⼒ /password-update pass=abc

    罠リンク /password-update pass=hacked_password →攻撃者が⽤意したパスワードに更新さ れる クリック
  7. CSRF例(対策後) csrf_token=6aS8... /password-update pass=abc csrf_token=6aS8... 罠リンク クリック /password_update pass=hacked_password →攻撃者はcsrf_tokenがわからないので

    パスワードの変更ができない × パスワード変更 ページへ遷移を クリック /password-reset 新しい パスワード を⼊⼒
  8. ブラウザが提供するセキュリティ機構 Same-Origin Policy (SOP) (スキーム, ホスト名, ポート番号)の組が異なる場合、DOMの参照や通信の⼀ 部を禁⽌する。 [補⾜3] (スキーム,

    ホスト名, ポート番号)の組のことをOriginと呼ぶ。 Originが同⼀の時、Same-Origin、 異なる時Cross-Originと呼ぶ。 Content Security Policy(CSP) サーバーサイドWebアプリケーションが課した制約に違反する挙動をWebブラウザ が検出する 指定されたjavascript以外読み込まないなど。 詳細:https://developer.mozilla.org/ja/docs/Web/HTTP/CSP
  9. 補⾜② [補⾜3] 多くのセキュリティ機構はOriginをベースに設定されていますが、Cookieが提案された当初はOriginの考えが定着しておら ず、現在となってはCookieはやや特殊なセキュリティ境界を持っています。SameSite属性はOriginに近い考えを適⽤でき ますが、若⼲異なります。 詳細︓ https://tools.ietf.org/html/rfc6265 https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-07 https://web.dev/same-site-same-origin/ [補⾜4]

    ⼀部のブラウザではSameSite属性を指定しなかった場合、Laxが指定されていると⾒なすようになっています。 Samesite=Laxが指定されている場合、リンクをクリックすることで発⽣するようなGETリクエストではCookieが付与されま すが、それ以外のリクエストで、かつリクエストの発⾏元と宛先が同⼀のSiteでない場合はCookieが付与されなくなります。そ の結果、Cookieで保管されているセッションID等が付与されなくなり、リクエストが受け付けられないので、CSRFが成⽴しな くなります。 参考︓https://blog.tokumaru.org/2022/01/impact-conditions-for-no-CSRF-protection-sites.html
  10. 脆弱性の評価 CVSSv3 例 脆弱性︓攻撃者が⽤意した罠リンクをクリックすると意図せずパスワード が変更されるCSRF。 n攻撃経路(AV):ネットワーク or 隣接 or ローカル

    or 物理 n攻撃の複雑さ(AC):低 or ⾼ n攻撃に必要な権限(PR):なし or 低 or ⾼ n被害者が操作を必要か(UI):不要 or 要 n影響の範囲(S):変更なし or 変更あり n機密性の侵害(C):なし or 低 or ⾼ n完全性の侵害(I):なし or 低 or ⾼ n可⽤性の侵害(A):なし or 低 or ⾼