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

セキュリティ

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Cybozu Cybozu PRO
July 13, 2023

 セキュリティ

Avatar for Cybozu

Cybozu PRO

July 13, 2023
Tweet

More Decks by Cybozu

Other Decks in Technology

Transcript

  1. ⽬次 ▌ PSIRTの紹介 ▌ 情報セキュリティの基礎 n CIA、情報資産・脆弱性・脅威 n CVE、CWE、CVSS ▌

    Webの脆弱性を知る n SQLインジェクション n XSS n CSRF ▌ ブラウザが提供するセキュリティ機能 ▌ まとめとおまけ
  2. PSIRTとは ▌PSIRT = Product Security Incident Response Team ▌製品のセキュリティ品質向上やインシデント対応・⽀援などを⾏うチーム ▌チームの理想:

    n エンドユーザに安全にサイボウズ製品を使えると⾔ってもらう n 開発チームにセキュリティ品質に⾃信を持って製品をリリースできると ⾔ってもらう ▌サイボウズのPSIRTは対外的にはCy-PSIRTとして活動している
  3. CSIRT(セキュリティ室)との違い ▌サイボウズにはCSIRTもある n CSIRT:Computer Security Incident Response Team n サイボウズのCSIRTは「セキュリティ室」と呼ばれています。

    ▌セキュリティ室は会社の情報セキュリティ n 「端末を紛失した︕」「不審なメールが届いた︕」など n ISMSやISMAPの対応もしている ▌セキュリティ室とPSIRTは連携して動くことも
  4. 共通脆弱性識別⼦ CVE ▌CVE(Common Vulnerabilities and Exposures) n ⾮営利団体のMITREが中⼼となって採番している、 個々の脆弱性を識別する番号 n

    例 n CVE-2014-6271:ShellShock(bash) n CVE-2022-22965:Spring4shell(Spring Framework) ▌参考情報 n https://www.ipa.go.jp/security/vuln/CVE.html
  5. 脆弱性の評価 CVSS ▌CVSS(Common Vulnerability Scoring System) n 脆弱性の深刻度を数値化するための汎⽤的な仕組み n CVSSがあれば、世の中にある様々な脆弱性の深刻度を同じものさしで⽐較

    できる n v2、v3、v3.1が存在している n v2とv3は評価項⽬や評価⽅法が異なる n v4の検討も始まっている n 参考情報: FIRST https://www.first.org/cvss/
  6. 脆弱性の評価 CVSSv3 ▌CVSSでは基本値、環境値、現状値の3種類の基準で脆弱性を評価 ▌基本値は、CIAに以下の5項⽬を加え、計8項⽬で脆弱性を評価 n 攻撃経路(AV):ネットワーク or 隣接 or ローカル

    or 物理 n 攻撃の複雑さ(AC):低 or ⾼ n 攻撃に必要な権限(PR):なし or 低 or ⾼ n 被害者の操作の有無(UI):不要 or 要 n 影響の範囲(S):変更なし or 変更あり ▌基本値は0.0-10.0の値+それぞれの評価項⽬で表現される n 例︓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
  7. DOM-Based XSS について ▌DOM-Based XSSを構成する「ソース」と「シンク」 n ソース︓攻撃者によってスクリプトを埋め込まれる可能性のある箇所 n location.href, location.search,

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

    // ソース document.getElementById(“sample”).innerHTML = txt; // シンク </script> 以下のようなURLにアクセスするとXSSが発⽣する http://xxx/test.html#<img src=“xxx” onerror=“alert('1ʼ)”/>
  9. DOM-Based XSSに特化した対策 ▌Trusted Types n CSPで「trusted types」を指定することでシンクに代⼊できる値の型をTrusted Types型に制限することができる。 n Trusted

    Types型以外がシンクを経由して代⼊されそうになるとエラーになる。 n 注意 n 対応しているブラウザが少ない n https://caniuse.com/?search=trustedtype n Trusted Typesでの定義するエスケープ処理が適切でないとDOM-based XSSは防げない n 参考情報︓ https://chromium.googlesource.com/chromium/src/+/master/ docs/trusted_types_on_webui.md
  10. CSRF例(対策前) パスワード変更 ページへ遷移を クリック /password-reset 新しい パスワードを⼊ ⼒ /password-update pass=abc

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

    ワードの変更ができない × パスワード変更 ページへ遷移を クリック /password-reset 新しい パスワードを⼊ ⼒
  12. CSRFの原因と対策 原因 • CSRF対策チケットが発⾏・検証されていない • または X-Requested-With ヘッダが付与・検証されていない。[補⾜1] • CSRF対策チケットの強度が弱い

    対策 • ⼗分強度のあるCSRF対策チケットの付与、検証を⾏う • またはX-Requested-Withヘッダの付与・検証を⾏う • 実績のあるフレームワークを使う • CookieにSameSiteの設定をする(⼀部のCSRF攻撃以外には有効)
  13. [補⾜] SameSiteについて ▌リクエスト元に応じてクッキーをセットするかを指定できるCookieの属性値です。 ▌None、Lax、Strictの3つが存在する。 n None: 全てのリクエストにCookieが付与される。 n Lax: ⼀部を除いて発⾏元と宛先が同⼀サイト以外のリクエストにはCookieが付与されない。

    n 同⼀サイト以外でもトップレベルナビゲーション(フォームやリンクでの遷移など)による GETリクエストではCookieが付与されます。 n Strict: 発⾏元と宛先が同⼀サイト以外のリクエストでは全てCookieが付与されない。 ▌⼀部のブラウザではSameSite属性を指定しなかった場合、Laxが指定されます。
  14. ブラウザが提供するセキュリティ機構について ▌Same-Origin Policy (SOP) n (スキーム, ホスト名, ポート番号)の組が異なる場合、DOMの参照や通信 の⼀部を禁⽌する。 [補⾜2]

    n (スキーム, ホスト名, ポート番号)の組のことをOriginと呼ぶ。 n Originが同⼀の時、Same-Origin、 異なる時Cross-Originと呼ぶ。 ▌Content Security Policy(CSP) n サーバーサイドWebアプリケーションが課した制約に違反する挙動をWebブ ラウザが検出する n 指定されたjavascript以外読み込まないなど。 n 詳細:https://developer.mozilla.org/ja/docs/Web/HTTP/CSP
  15. セキュリティ機能 ▌ブラウザのセキュリティ機能として、以下を指定することができます n X-Content-Type-Options n 指定したMIMEタイプに従う n X-Frame-Options n iframeの中に表⽰していいかを⽰す

    n クリックジャッキング対策 n Content-Disposition: attachment; n 内容が添付ファイルかインラインのデータとして扱うかを制御する n Strict-Transport-Security n HTTPSを強制する
  16. Cookieの扱い ▌Cookieの発⾏時に属性を指定することで扱いを制限できる。[補⾜3] n Expires:絶対的な有効期限を指定 n Max-Age:相対的な有効期限を指定 n Domain:利⽤可能なホストを指定 n Path:利⽤可能なパスを指定

    n Secure:HTTPSを利⽤しているときにのみ送信される n HttpOnly:jsなどからの呼び出し禁⽌ n SameSite:リクエスト元に応じてクッキーをセットするかを指定 n もっと詳しく知りたい︓ https://developer.mozilla.org/ja/docs/Web/HTTP/Cookies
  17. 脆弱性の評価 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 ⾼