Skip to content

Instantly share code, notes, and snippets.

@mala
Last active December 29, 2016 18:07
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 mala/ca1c55c1566fa49253fd to your computer and use it in GitHub Desktop.
Save mala/ca1c55c1566fa49253fd to your computer and use it in GitHub Desktop.
HTMLパーサの挙動の違いに起因するXSS

HTMLパーサの挙動の違いに起因するXSS

自己紹介

概要

  • 解釈にブレが生じるHTMLを使ったXSS
  • 特にWYSIWYGエディタ上で起きるものが多い

きっかけ

  • HTMLメールでのscript実行について発見、修正についてアドバイス
  • 自社、他社サービス
  • Sparrow, Mailbox, NAVERメール

Mailbox

  • Dropboxに買収されたメールサービス
  • HTMLメールでscript実行される問題が報告された
  • サーバーサイドでのフィルタで対応 → 抜け道がないか調査

コメントタグを使ったXSS

  • HTMLコメント 通常は
  • これは? -->

HTML spec

  • は未知のタグである。

ブラウザの解釈

<unknowntag> <script>..</script> —>

多くのHTMLパーサの解釈

  • で突破可能だった → 2013 10/2報告済み $500

ほかにも未修正いくつか

  • XSSもしくはself-XSS
  • HTMLソース編集があるサービスに多い

ブラウザのHTMLパーサを使う

  • jsでHTMLパーサを再発明するのは避けたい
  • createHTMLDocumentを使うとブラウザと挙動が一致する
  • これは使える!!

Opera12

  • Opera12のcreateHTMLDocumentはバグがある
  • 死んでるDOMノードを作るはずなのに、scriptが評価されてしまう

まとめ

  • 実際のブラウザのHTMLパーサと、jsやサーバーサイドの言語で書かれたHTMLパーサで挙動の違いがある
  • 解釈にブレがあるHTMLを出力すると予測しない問題を引き起こすことがありうる
  • ホワイトリストでの制限 + 整形式のvalidなHTMLを出力しましょう
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment