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

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

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. MBSD Cybersecurity Challenges
    2022 final

    View Slide

  2. はじめに
    ● この資料は再診断の結果をご報告するものです。
    ● 本日は各脆弱性の概略を説明したのち、
    脆弱性を 1 つピックアップして詳細に解説します。
    ● 再診断報告書_IPFactory.pdf を添付しております。
    時間の都合上説明しきれないものについては再診断報告書をご覧ください。
    2

    View Slide

  3. 5段階のリスクレベル
    3段階の攻撃難易度
    脆弱性の評価指標について
    3
    リスクレベル
    ☠緊急☠



    情報
    攻撃難易度



    View Slide

  4. 再診断実施結果概要

    View Slide

  5. 再診断結果サマリ
    依然としてリスクレベル 高 の脆弱性が存在
    個人情報の漏洩などが予想されます
    5
    D

    View Slide

  6. 再診断指摘事項一覧
    6
    No 初回診断 再診断結果 指摘事項
    2 高 低 蓄積型クロスサイト・スクリプティング
    4 高 高 クロスサイト・リクエスト・フォージェリ
    5 中 中 サーバサイド・リクエスト・フォージェリ
    8 低 低 強制ブラウズ
    9 低 低 パスワードポリシーに関する設定不備
    10 低 低 オープンリダイレクト
    ※ No は初回診断報告書に準拠
    ※ リスクレベル 情報 は省略

    View Slide

  7. 再診断指摘事項一覧
    ● No. 4 クロスサイト・リクエスト・フォージェリの脆弱性をピックアップ
    ● No. 2, 5, 8, 9, 10 については、概略のみを紹介
    ● 詳細は再診断報告書にて
    7
    No 再診断結果 指摘事項
    2 低 蓄積型クロスサイト・スクリプティング
    4 高 クロスサイト・リクエスト・フォージェリ
    5 中 サーバサイド・リクエスト・フォージェリ
    8 低 強制ブラウズ
    9 低 パスワードポリシーに関する設定不備
    10 低 オープンリダイレクト

    View Slide

  8. [ CWE-79 ]
    蓄積型クロスサイト・スクリプティング

    View Slide

  9. ● data スキームにより空の Origin になり、情報の盗取等は不可
    ● iframe に sandbox 属性がないためリダイレクト程度の処理は可能
    [ CWE-79 ] 蓄積型クロスサイト・スクリプティング
    9
    No 画面名 リスクレベル
    21, 35, 53 プロファイル > ペンマーク > 更新 解消
    42 教材管理 > プラスマーク > 更新 低
    リスクレベル 攻撃難易度
    高 → 低 易 → 易

    View Slide

  10. [ CWE-352 ]
    クロスサイト・リクエスト・フォージェリ

    View Slide

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

    View Slide

  12. [ CWE-98 ]
    サーバサイド・リクエスト・フォージェリ

    View Slide

  13. [ CWE-98 ] サーバサイド・リクエスト・フォージェリ
    13
    ● 未修整・不十分な修正
    ● チャットに直接 file:///etc/passwd を入力しても LFI はできなくなったが、
    リダイレクトを利用してローカルファイルの読み込みが可能
    ● http://localhost/ で LAN 内コンテンツを読み込める点は修正されていない
    No 画面名 リスクレベル
    16, 17, 30,
    31, 47,48
    チャット > 送信
    チャット > 編集 > 送信

    リスクレベル 攻撃難易度
    中 → 中 易 → 普

    View Slide

  14. [ CWE-425 ]
    強制ブラウズ

    View Slide

  15. [ CWE-425 ] 強制ブラウズ
    15
    ● 未修整
    ● 利用者に見られるべきではないと考えられる情報が書いてあるため、
    公開範囲を限定するための措置を行うことを推奨
    No 画面名 リスクレベル
    3 ヘルプ (管理者向け機能 ) 低
    リスクレベル 攻撃難易度
    低 → 低 易 → 易

    View Slide

  16. [ CWE-521 ]
    パスワードポリシーに関する設定不備

    View Slide

  17. [ CWE-521 ] パスワードポリシーに関する設定不備
    17
    ● 不十分な対策
    ● パスワードの変更を強制しない限り
    利用者の多くはパスワードを変更しないことが予想される
    ● 変更時にも文字種などの制限がないため脆弱なパスワードが設定可能
    ● パスワードポリシーを強制することを推奨
    No 画面名 リスクレベル
    21, 35, 53 プロファイル > ペンマーク > 更新 低
    リスクレベル 攻撃難易度
    低 → 低 易 → 易

    View Slide

  18. [ CWE-601 ]
    オープンリダイレクト

    View Slide

  19. [ CWE-601 ] オープンリダイレクト
    19
    ● 不十分な修正
    ● redirect の先頭が // であるときに無効化するように書かれているが、
    Tab文字である %09 を挿入し /%09/example.com にすることで回避可能
    ● JavaScript 内に allowpath という無害なパスのリストが確認できる
    ● allowpath を利用した許可リスト方式に使用する事を推奨
    No 画面名 リスクレベル
    2 TOP#2 低
    リスクレベル 攻撃難易度
    低 → 低 普 → 普

    View Slide

  20. [ CWE-352 ]
    クロスサイト・リクエスト・フォージェリ

    View Slide

  21. [ CWE-352 ] クロスサイト・リクエスト・フォージェリ
    21
    概要
    ログインした利用者の意図したリクエストであるかの確認ができていないと発生す
    る脆弱性
    想定される影響
    アカウントの不正利用やアカウント内情報の改ざんなど
    今回はパスワードが変更できるためリスク 高

    View Slide

  22. 攻撃の実例(初回診断時)
    22
    罠サイト
    http://attacker.example
    セッションID発行
    通常ログイン
    ログインした状態で
    罠サイトを閲覧
    意図しない
    リクエストの送信
    プロフィール情報
    変更処理
    利用者
    MBSD塾
    http://mbsd.juku

    View Slide

  23. 以下の 3 か所を リスクレベル 高・攻撃難易度 普 の CSRF 脆弱性として報告
    23
    初回診断時の報告
    ※ #2 とは、そのページを開いた時に自動送信される 2 つ目のリクエストを指します。
    画面名 対象権限
    ユーザ管理 > プラスマーク > 追加する#2 admin
    ユーザ管理 > ペンマーク > 更新する admin
    プロファイル > ペンマーク > 更新 student parent teacher
    詳しくは脆弱性診断結果報告書をご参照ください。

    View Slide

  24. 再診断結果: CSRF の修正は不十分
    指摘した 3 箇所のうち、正しく修正できていたのは 1 箇所のみ
    SameSite=Strict が明確に指定されたことにより攻撃難易度は やや難化
    より限定された攻撃シナリオにはなるが、依然として脆弱性は残ったままである
    24
    画面名 対象権限 再診断評価
    ユーザ管理 > プラスマーク > 追加する#2 admin OK
    ユーザ管理 > ペンマーク > 更新する admin NG
    プロファイル > ペンマーク > 更新 student parent teacher NG

    View Slide

  25. CSRF の対策に今回行われた修正
    25
    機能
    (画面名)
    対象権限
    3 番
    修正評価
    23 番
    修正評価
    再診断評価
    期限編集機能
    (ユーザ管理 > プラスマーク > 追加する#2)
    admin 〇 〇 OK
    ユーザ情報編集機能
    (ユーザ管理 > ペンマーク > 更新する)
    admin
    ×
    (不十分)
    〇 NG
    プロフィール情報更新機能
    (プロファイル > ペンマーク > 更新)
    student parent
    teacher
    ×
    (非対応)

    NG
    (悪用可能)
    3. 管理者権限のユーザ情報編集機能と期限編集機能で、

    CSRFトークンが検証されていなかった
    23. セッションcookieにHttpOnly属性とSameSite属性が付与されていなかった

    fixed.html

    View Slide

  26. [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 が付与される

    View Slide

  27. Samesite 属性を Strict にする効果
    27
    罠サイト
    http://attacker.example
    セッションID発行
    通常ログイン
    ログインした状態で
    罠サイトを閲覧
    利用者
    MBSD塾
    http://mbsd.juku
    セキュアにすな
    リクエストに Cookie
    が付与されない

    View Slide

  28. 確かに Cross-Site
    の攻撃ができない

    View Slide

  29. では Samesite 属性 に制限
    されないリクエストなら?

    View Slide

  30. SameSite 属性に制限されないリクエスト
    SameSite 属性は Cross-Site のリクエストに Cookie を付与するかを決めるもの
    → 当然ながら、Same-Site からの リクエストに制限は無い
    “SameSite 属性に制限されない変更リクエストを被害者から送らせる方法”
    があれば、攻撃シナリオが組み立てられそう
    → Same-Site から POST リクエストを強制する手段は無いが・・・
    30

    View Slide

  31. プロフィール情報更新のリクエストは POST の制限がない
    「プロフィール情報更新」は GET リクエストでも更新可能である
    “SameSite 属性に制限されない GET リクエストを被害者から送らせる方法” 案
    ● サイト内からのリダイレクト
    → ログインページのリダイレクト機能を応用して攻撃は可能
    ただし、罠のログイン URL を共有する必要がある
    ● URLの直打ち
    → 被害者自身に URL を直打ちしてもらうシナリオは非現実的…
    31

    View Slide

  32. MBSD塾で利用する
    共用PC

    View Slide

  33. MBSD塾は、通い形式の学習塾です(オンライン学習ではありません)。
    生徒さんには塾に来てもらい、塾内で本システムを活用して学習を進めて
    いただきます。
    複数人が交代で操作する共用 PC からサービスへアクセスすることが考えられる
    罠のブックマークを被害者がクリックしてしまう可能性があるなら
    “SameSite 属性に制限されない GET リクエストを被害者から送らせる方法”
    が現実的なシナリオになる
    MBSD塾で利用する共用PC
    33
    help/common.html

    View Slide

  34. ブックマークをトリガーにした攻撃シナリオ
    34
    塾内共用PC
    プロフィール情報を変更するパラメータ
    利用者
    ブックマークから
    アクセス
    プロフィール変更!!
    [email protected]!

    View Slide

  35. SameSite 属性によって CSRF 対策がされているように見えるが、
    以下の 2 点を踏まえたうえで、攻撃が可能であることを示す
    ● CSRF トークンの検証が未実装
    ● 本来は POST で実装するべき機能だが、GET でも正常動作してしまう
    デモ
    35
    機能
    (画面名)
    対象権限
    3 番
    修正評価
    23 番
    修正評価
    再診断評価
    プロフィール情報更新機能
    (プロファイル > ペンマーク > 更新)
    student parent
    teacher
    ×
    (非対応)

    NG
    (悪用可能)

    View Slide

  36. 36

    View Slide

  37. ● Cookie の SameSite 属性を Strict にするだけでは攻撃を防ぐことができない
    ● CSRF トークンの検証を正しく実装すれば脆弱性を根本的に無くすことができる
    根本的な対策が必要
    37
    機能
    (画面名)
    対象権限
    3 番
    CSRFトークンの検証
    診断評価
    期限編集機能
    (ユーザ管理 > プラスマーク > 追加する#2)
    admin 対応 OK
    ユーザ情報編集機能
    (ユーザ管理 > ペンマーク > 更新する)
    admin 対応 OK
    プロフィール情報更新機能
    (プロファイル > ペンマーク > 更新)
    student parent
    teacher
    対応 OK

    View Slide

  38. よりセキュアなサービスを提供するために
    CSRF に限らず脆弱性の対策には根本的な対策が必要になります。
    今回指摘した各脆弱性の詳細な解説は再診断報告書に記載してあります。
    再診断報告書を参考に修正していただければ再々診断の実施が可能です。
    是非ご検討ください。
    IPFactory は脆弱性診断から 1 年以上経過した Web サイトに定期診断を推奨しており
    ます。見積等の工程を省けることからお安くご提供することが可能です。
    今後ともよろしくお願いいたします。
    38

    View Slide

  39. Appendix
    39

    View Slide

  40. 使用したイラスト
    ● いらすとや
    ● Insert icons for Slides 👌 - Google Workspace Marketplace
    40

    View Slide

  41. 参考資料
    ● RFC 6265bis: Cookies: HTTP State Management Mechanism
    ● SameSite cookies - HTTP | MDN
    ● RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content
    41

    View Slide