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

MBSD Cybersecurity Challenges 2022 最終審査会 IPFact...

MBSD Cybersecurity Challenges 2022 最終審査会 IPFactory 発表スライド

2022年12月15日に行われた「MBSD Cybersecurity Challenges 2022」 最終審査会にて、チーム IPFactory が発表したスライドです。

ふたばと

December 15, 2022
Tweet

More Decks by ふたばと

Other Decks in Programming

Transcript

  1. 再診断指摘事項一覧 6 No 初回診断 再診断結果 指摘事項 2 高 低 蓄積型クロスサイト・スクリプティング

    4 高 高 クロスサイト・リクエスト・フォージェリ 5 中 中 サーバサイド・リクエスト・フォージェリ 8 低 低 強制ブラウズ 9 低 低 パスワードポリシーに関する設定不備 10 低 低 オープンリダイレクト ※ No は初回診断報告書に準拠 ※ リスクレベル 情報 は省略
  2. 再診断指摘事項一覧 • No. 4 クロスサイト・リクエスト・フォージェリの脆弱性をピックアップ • No. 2, 5, 8,

    9, 10 については、概略のみを紹介 • 詳細は再診断報告書にて 7 No 再診断結果 指摘事項 2 低 蓄積型クロスサイト・スクリプティング 4 高 クロスサイト・リクエスト・フォージェリ 5 中 サーバサイド・リクエスト・フォージェリ 8 低 強制ブラウズ 9 低 パスワードポリシーに関する設定不備 10 低 オープンリダイレクト
  3. • data スキームにより空の Origin になり、情報の盗取等は不可 • iframe に sandbox 属性がないためリダイレクト程度の処理は可能

    [ CWE-79 ] 蓄積型クロスサイト・スクリプティング 9 No 画面名 リスクレベル 21, 35, 53 プロファイル > ペンマーク > 更新 解消 42 教材管理 > プラスマーク > 更新 低 リスクレベル 攻撃難易度 高 → 低 易 → 易
  4. [ CWE-352 ] クロスサイト・リクエスト・フォージェリ 11 • 未修整・不十分な修正 • Cookie の

    SameSite 属性により攻撃条件が特殊になるため詳細は後ほど解説 No 画面名 リスクレベル 21, 35, 53 プロファイル > ペンマーク > 更新 高 66 ユーザ管理 > プラスマーク > 追加する#2 解消 67 ユーザ管理 > ペンマーク > 更新する 高 リスクレベル 攻撃難易度 高 → 高 普 → 難
  5. [ CWE-98 ] サーバサイド・リクエスト・フォージェリ 13 • 未修整・不十分な修正 • チャットに直接 file:///etc/passwd

    を入力しても LFI はできなくなったが、 リダイレクトを利用してローカルファイルの読み込みが可能 • http://localhost/ で LAN 内コンテンツを読み込める点は修正されていない No 画面名 リスクレベル 16, 17, 30, 31, 47,48 チャット > 送信 チャット > 編集 > 送信 中 リスクレベル 攻撃難易度 中 → 中 易 → 普
  6. [ CWE-521 ] パスワードポリシーに関する設定不備 17 • 不十分な対策 • パスワードの変更を強制しない限り 利用者の多くはパスワードを変更しないことが予想される

    • 変更時にも文字種などの制限がないため脆弱なパスワードが設定可能 • パスワードポリシーを強制することを推奨 No 画面名 リスクレベル 21, 35, 53 プロファイル > ペンマーク > 更新 低 リスクレベル 攻撃難易度 低 → 低 易 → 易
  7. [ CWE-601 ] オープンリダイレクト 19 • 不十分な修正 • redirect の先頭が

    // であるときに無効化するように書かれているが、 Tab文字である %09 を挿入し /%09/example.com にすることで回避可能 • JavaScript 内に allowpath という無害なパスのリストが確認できる • allowpath を利用した許可リスト方式に使用する事を推奨 No 画面名 リスクレベル 2 TOP#2 低 リスクレベル 攻撃難易度 低 → 低 普 → 普
  8. 以下の 3 か所を リスクレベル 高・攻撃難易度 普 の CSRF 脆弱性として報告 23

    初回診断時の報告 ※ #2 とは、そのページを開いた時に自動送信される 2 つ目のリクエストを指します。 画面名 対象権限 ユーザ管理 > プラスマーク > 追加する#2 admin ユーザ管理 > ペンマーク > 更新する admin プロファイル > ペンマーク > 更新 student parent teacher 詳しくは脆弱性診断結果報告書をご参照ください。
  9. 再診断結果: CSRF の修正は不十分 指摘した 3 箇所のうち、正しく修正できていたのは 1 箇所のみ SameSite=Strict が明確に指定されたことにより攻撃難易度は

    やや難化 より限定された攻撃シナリオにはなるが、依然として脆弱性は残ったままである 24 画面名 対象権限 再診断評価 ユーザ管理 > プラスマーク > 追加する#2 admin OK ユーザ管理 > ペンマーク > 更新する admin NG プロファイル > ペンマーク > 更新 student parent teacher NG
  10. CSRF の対策に今回行われた修正 25 機能 (画面名) 対象権限 3 番 修正評価 23

    番 修正評価 再診断評価 期限編集機能 (ユーザ管理 > プラスマーク > 追加する#2) admin 〇 〇 OK ユーザ情報編集機能 (ユーザ管理 > ペンマーク > 更新する) admin × (不十分) 〇 NG プロフィール情報更新機能 (プロファイル > ペンマーク > 更新) student parent teacher × (非対応) 〇 NG (悪用可能) 3. 管理者権限のユーザ情報編集機能と期限編集機能で、
 CSRFトークンが検証されていなかった 23. セッションcookieにHttpOnly属性とSameSite属性が付与されていなかった
 fixed.html
  11. [RFC 6265bis] SameSite 属性を Strict にする効果 今回の修正によって Cookie の SameSite

    属性 に Strict が設定された 26 If the "SameSite" attribute's value is "Strict", the cookie will only be sent along with "same-site" requests RFC 6265bis-11(draft) ※ RFC 6265bis は Draft ですが、Chrome, Edge, Firefox, Safari などの主要ブラウザには実装済みのセキュリティ機構です。 SameSite cookies - HTTP | MDN より RFC 6265bis によれば、Same-Site の リクエストのみに Cookie が付与される
  12. Samesite 属性を Strict にする効果 27 罠サイト http://attacker.example セッションID発行 通常ログイン ログインした状態で

    罠サイトを閲覧 利用者 MBSD塾 http://mbsd.juku セキュアにすな リクエストに Cookie が付与されない
  13. SameSite 属性に制限されないリクエスト SameSite 属性は Cross-Site のリクエストに Cookie を付与するかを決めるもの → 当然ながら、Same-Site

    からの リクエストに制限は無い “SameSite 属性に制限されない変更リクエストを被害者から送らせる方法” があれば、攻撃シナリオが組み立てられそう → Same-Site から POST リクエストを強制する手段は無いが・・・ 30
  14. プロフィール情報更新のリクエストは POST の制限がない 「プロフィール情報更新」は GET リクエストでも更新可能である “SameSite 属性に制限されない GET リクエストを被害者から送らせる方法”

    案 • サイト内からのリダイレクト → ログインページのリダイレクト機能を応用して攻撃は可能 ただし、罠のログイン URL を共有する必要がある • URLの直打ち → 被害者自身に URL を直打ちしてもらうシナリオは非現実的… 31
  15. SameSite 属性によって CSRF 対策がされているように見えるが、 以下の 2 点を踏まえたうえで、攻撃が可能であることを示す • CSRF トークンの検証が未実装

    • 本来は POST で実装するべき機能だが、GET でも正常動作してしまう デモ 35 機能 (画面名) 対象権限 3 番 修正評価 23 番 修正評価 再診断評価 プロフィール情報更新機能 (プロファイル > ペンマーク > 更新) student parent teacher × (非対応) 〇 NG (悪用可能)
  16. 36

  17. • Cookie の SameSite 属性を Strict にするだけでは攻撃を防ぐことができない • CSRF トークンの検証を正しく実装すれば脆弱性を根本的に無くすことができる

    根本的な対策が必要 37 機能 (画面名) 対象権限 3 番 CSRFトークンの検証 診断評価 期限編集機能 (ユーザ管理 > プラスマーク > 追加する#2) admin 対応 OK ユーザ情報編集機能 (ユーザ管理 > ペンマーク > 更新する) admin 対応 OK プロフィール情報更新機能 (プロファイル > ペンマーク > 更新) student parent teacher 対応 OK
  18. 参考資料 • RFC 6265bis: Cookies: HTTP State Management Mechanism •

    SameSite cookies - HTTP | MDN • RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content 41