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

TBD/Shibuya.XSS techtalk #8

mala
February 07, 2017

TBD/Shibuya.XSS techtalk #8

mala

February 07, 2017
Tweet

More Decks by mala

Other Decks in Programming

Transcript

  1. Flash とCORS の話 JS とFlash でcross origin で可能なことのポリシー が異なります 多くの開発者はcross

    origin で出来て良いことを正確に把握していま せん 外部ドメインの画像をデー タとして取得出来る問題が「 裏技」 のよ うに扱われ、 脆弱性として認識されないことがありました CORS によって仕様が整理されているので、 仕様か脆弱性かは明確 になりつつあります
  2. 1. URL Parser とは My URL isn't your URL cURL

    の作者によるURL の仕様と実装についての苦言 https://daniel.haxx.se/blog/2016/05/11/my‑url‑isnt‑your‑url/
  3. 非常に深刻な問題 origin = scheme + host + port 正しい方法でのsame origin

    判定が失敗する!! SOP bypass on server‑side
  4. UPDATE 2017‑02 Java/Android それぞれ修正された CVE‑2016‑5552 Java : 2017‑01 http://www.oracle.com/technetwork/security‑ advisory/cpujan2017‑2881727.html

    Android : 2017‑02 https://source.android.com/security/bulletin/2017‑02‑01.html http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/cd0585378c46 https://android.googlesource.com/platform/libcore/+/4b3f2c6c5 b84f80fae8eeeb46727811e055715ea^!/
  5. 正しい実装は? https://tools.ietf.org/html/rfc3986#section‑3.2 T h e a u t h o

    r i t y c o m p o n e n t i s p r e c e d e d b y a d o u b l e s l a s h ( t e r m i n a t e d b y t h e n e x t s l a s h ( " / " ) , q u e s t i o n m a r k ( " ? " ) , s i g n ( " # " ) c h a r a c t e r , o r b y t h e e n d o f t h e U R I .
  6. バグが起こりやすい原因 絶対URL と相対パスの両方を同じライブラリで処理 http url とそれ以外のprotocol も同列に処理 歴史的経緯、 相互運用性、 互換性のための寛容な処理

    user:pass には本来、 予約文字が使えない a u t h o r i t y = [ u s e r i n f o " @ " ] h o s t [ " : " p o r t ] u s e r i n f o = * ( u n r e s e r v e d / p c t - e n c o d e d / s u b - d e l i m s /
  7. A: DOM based XSS(client side) CVE‑2012‑3695 userinfo 部分を使って誤認識させる http://masatokinugawa.l0.cm/2012/08/safari‑location.href.html http://siteA.example.com%[email protected]/

    location.href of WebKit based browser ホスト名部分がdecode されて返ってくる → location.href が異なる host の値を返す。 same origin の判定に失敗して外部ドメインのリソー スを読み込み
  8. B: Open Redirector → XSS client side + server side

    jQuery mobile + open redirector http://jqm‑site.example.com/#!/path/to/redirect_other_website 外部HTML をオー プンリダイレクタで読み込ませるもの2011 年に発 見 最近報告したものがある
  9. C: Open Redirector → Auth bypass server side. URL parser

    バグ起因のものは実際の事例は見つけていない 危なっかしい状態だったものはあり
  10. validation of callback url OAuth, OpenID などのredirect url domain のみ一致でcheck

    していると危険 URL parser がバグっていると。。。 そもそも「 ドメイン」 丸ごと安全とは限らない
  11. Provider 実装側 Path は先頭一致にしないで「 完全一致」 にすべき redirect_uri=http://example.com/auth/callback/../../../ これが通ってしまうと別Path に認証コー ドを送ることが可能

    そもそもuser:pass が入ってるのとおかしいので、 正規化して完全 一致にしましょう。 query string 部分のみ除去して登録済みURL と比較
  12. SSRF with URL Parser's bug URL がintranet のhost ではないか確認 →

    hostname 誤認問題があるparser を使っていると。。。 解釈の違いによって問題が起きる場合がある
  13. そもそも check と use は異なる実装で行ってはいけない Time‑of‑check Time‑of‑use problem URL をcheck

    するタイミング、fetch するタイミング DNS が変更されている可能性がある
  14. HTML parser の問題 以前発表した https://speakerdeck.com/owaspjapan/xss‑with‑ html‑parsing‑confusion‑number‑appsecapac2014 < ! - -

    > - - > の解釈の違いを使ったXSS ブラウザの実装と、js やサー バー サイドで解釈が違う TinyMCE, etc.