Skip to content

Instantly share code, notes, and snippets.

@imaya
Last active August 29, 2015 13:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save imaya/8702610 to your computer and use it in GitHub Desktop.
Save imaya/8702610 to your computer and use it in GitHub Desktop.
html5study#44

HTML5 とか勉強会

HTML5 security

  • 概要
    • 攻撃者にとっても便利
    • 攻撃の幅もひろがる
    • HTML5 で脆弱性になってしまうケース
    • 検証や周知が追い付いていない
  • 調査報告書の紹介
    • HTML5 を利用した Web アプリケーションのセキュリティ問題に関する調査報告書
    • jpcert の公開資料から探してダウンロード
    • 報告書の引用方法など
  • 内容の紹介
    • XMLHttpRequest
      • 従来はオリジンのみと通信が可能
      • HTML5 で CORS 対応
        • (Req)Origin -> (Res)Access-Control-Allow-Origin
      • 問題となるケース
        • 左にメニュー 右にhashをURLとして扱い、xhr内容を表示する場合
        • #//evil.com/ のような入力で悪意あるサイトを表示させてしまう
      • 対策
        • 接続先をホワイトリストにする
        • ドメインを区別するのは他の脆弱性があると危険
          • オープンリダイレクタなどがあると迂回される
        • クッキーを使うことでアクセス制御
    • HTML5 新要素
      • video
        • onerror に js 埋め込み
      • button formaction
        • formaction に js 埋め込み
        • autofocus と onfocus の組み合わせ
      • type=email, pattern なら安心?
        • サーバ側でのチェックをサボってはいけない
      • iframe sandbox 安心?
        • iframe sandbox をはずした攻撃ページが作られる
    • セキュリティ関連機能
      • Content-security-Policy
        • 読み込み可能なリソースのオリジンを制限することができる
        • ディレクティブなどで制限するタイプを指定することができる
        • report-uri で違反レポート(json)の送信先がわかる
        • キャッシュで読み込まれた場合も効果は持続するのか?
          • 確認してない

本当は怖いクライアントサイドキャッシュポイズニング

  • キャッシュポイズニング
    • 継続的に監視・攻撃を行う
    • 最近はブラウザ上でキャッシュポイズニングも話題に
  • 話題
    • モバイル端末の普及
      • オフラインになることが多い
      • 一瞬のすきができやすい
      • 貸し借りの際のアカウント切り替えが容易でない
  • ブラウザAPIの進化
  • アプリケーションキャッシュって危険なの?
    • Application Cache に関するセキュリティ報告書がいくつかある
  • キャッシュポイズニング
    • 信頼出来ないネットワークで不正なコードをキャッシュさせられる
      • そもそもやばいが、持続するのが脅威となる
    • 瞬間的な攻撃ではなく継続的な監視ができる
  • 使わない方がいいの?
    • そんなことない
  • appcache自体をキャッシュ対象にいれれば継続可能
  • コンテンツ提供側からみて危険が増えたわけではない
  • ブラウザ
    • Firefox は確認ダイアログがでる
  • 公衆無線LANの増加
  • 実際MITMってできるの?
    • キャリアの提供する AP になりすます、細工するなど
    • 設置店舗が悪意を持っているか
    • 同じパスワードの別APを建てる
  • モバイルサイトはすべてhttpsにするべき?

Bypass SOP in a time of HTML5

  • SOP 破り: Same Origin Policy
  • OWASP やるよチケット買ってね
  • RFC6454: The Web Origin Concept
  • スキーム+ホスト+ポート
  • Origin が異なるリソースは制約を課しましょう
  • img crossorigin 属性
    • anonymous
    • use-credentials
  • XMLHttpRequest
    • 意図せずクロスオリジン→XSS
      • クロスオリジンできない時代は問題なかったコードが問題になる
    • 意図せずクロスオリジン→データ漏洩
      • telnet で接続される可能性
      • Originヘッダは認証には使えない
      • 認証をする場合はCookieを使う
    • Ajaxデータを使ったXHR
      • IEだとjsonを返すだけのものに.htmlとかつけると優先されてスクリプト実装される
      • X-Content-Type-Option を付ける
    • Ajaxデータ内の機密情報漏洩
      • language="vbscript" とすることで JSON を実行させ、秘密情報がエラーにながれる
      • onerror でハンドリングして攻撃者に情報を送る
      • X-Content-Type-Option を付ける
  • セキュリティ関連のHTTPヘッダ
    • X-XSS-Protection
      • XSS 保護機能の制御
    • X-Content-Type-Options
      • Content-Type を厳格に扱う
    • X-Frame-Options
      • クリックジャッキング防止
      • iframe, frame などの埋め込みを禁止
    • Content-Security-Policy
      • 指定されたソースからしか画像やJSを読み込めなくする
      • 使いこなすのはとても大変
    • X-Download-Options
      • IE8以降でダウンロード時に「開く」ボタンを非表示
      • ユーザがうっかり開いてXSSになってしまうのを防ぐことができる
      • 画像とかで利便性が下がるかもしれない
    • Strict-Transport-Security
      • HTTPS を強制するためのヘッダ
      • このヘッダを返すページ自体が https じゃないといけない
      • preload HSTS では日本では cyboze だけ!

そもそもCookieとOriginで認証失敗したら200にならない?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment