Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

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

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

Cybozu

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 ⾼