CROSS 2013レポート(1)

1月18日に行われたCROSS 2013に行ってきました。

昨年、風のうわさには聞いていたものの参加できなかったので、今年はぜひと思っていました。
800人以上が集まったという会場はすごい熱気でした。プレモルも美味しかったし、すごく楽しかったです。来年もぜひ開催してほしいと思います。

さて、メモが長くなってしまったので、セッションごとに分割してみました。Ustreamから書き起こし、とかしていないので、間違いや「そんな意図で言ってない」などということがあると思います。ご指摘いただければ幸いです。

HTML5×セキュリティ(Shibuya.XSS)

@takesako
  • HTML5テクニカルレビュー」2012年3月、リックテレコム
  • 15年前、1997年サイボウズ設立
    • Webアプリ(インストール不要) → すごく流行った
    • サポート対象のブラウザ → Firefox 1.0と
  • Android端末: 機種数が多すぎて開発が難しい
  • HTML5: 様々なAPI
  • fullscreen APIのセキュリティー
    • ブラウザを全画面表示できる
    • 悪用するとフィッシングできる
    • 全画面表示でブラウザの外観をまねる
      • ブラウザを判別してそっくりに作る
    • ブラウザの対策「全画面表示モードです。このサイトで許可しますか」と聞く
      • デスクトップの色をピンクにすると、そこまでは真似られないw
@Hamachiya2
  • 来たらビールがただで飲めるよ、って言われて来た。まさか@hasegawayousukeさんがノロウイルスにやられるとはw
  • ブラウザへのdrag&dropできる件
  • ブラウザを画像表示に使ったりしませんか? pngとか
    • ファイルをブラウザにドロップすると表示できるよね
    • サイトによってはドロップされたものをアップロードする機能がある
  • drop images here」ドロップするときに枠線を光らせるのはJSでやっている
    • body全体でドロップイベントを受け、アップロードするようなサイトが作れる
    • うかつにドロップすると送られちゃうよ!
  • (一部割愛)
HTML5のセキュリティー
  • ブラウザの挙動が標準化される
    • 差別化ポイントは高速化など → 無理をすると脆弱性が出てくる
  • ユーザーの知らない新しい機能でフィッシングなど
@bulkneets
  • (先月報告したのにまだ直ってないXSSの紹介なので割愛)
サニタイズの話
  • @hasegawayousuke さん欠席の理由
  • T: リッチテキストエディタのsanitizeとかどうする?
  • M: IEの「to_static_html」を全ブラウザでサポートするのがよい
    • JS, event handlerなどを消してくれる
    • Windows8のアプリはinner_htmlなので、そういうことが必要なのだろう
    • 文字列として渡して勝手にやってくれるのが便利
    • 誰かシミュレータ書いてくれないかな
Webカメラ
  • T: WebRTCなどでカメラをHTML5ページから見えるようになっている
  • M: 認証ダイアログは、タイミングよくモグラたたきゲームをやると押せるようになるのでは
  • H: Webカメラにガムテープ貼ってる
    • M: Mac買ってくると、初期設定の中で自分の写真撮られそうになるので困る
    • T: ニコ生の切り忘れは結構あるみたいですね
アドレスバー偽装
  • M: history.pushState使うとアドレスバーにアニメ出せる!
    • これやると履歴がすごく汚れる
  • T: 同じドメインでのみ使えるように守っている
    • M: 実はそこヤバくて、ドメイン内にひとつXSSがあるだけで、そのドメインのURLを完全に偽装できてしまう
    • T: そうするとURLが信用できなくなってしまう。それは困る
  • M: ブラウザのパスワード保存機能を使っているとJSから盗んだりできる。ログインページのURLを偽装できるのは本当にヤバイ
    • M: 一段「許可しますか」があるだけでだいぶ違うと思う
  • M: storageはcookieよりもsame originがきっちり守られている
イタズラ公開のタイミング
  • T: はまちちゃん、最近イタズラ減ってきた?
  • H: ノーガード戦法が広まってきている。一昔前のブログはみんな技術者ってカンジだった。いまはそんな流れではないからなー
  • M: 自分も見つけたときによくガマンしてるなーと思う。投稿できるサイトにはあまりXSSない。大手のおカタいサイトでお問い合わせフォームからイタズラ送れても面白くない
  • T: 「こんにちはこんにちは」はすごく気にいってて、昼の業務時間に出してくれる分には対応できるから助かる
    • H: 実は対策まで時間がかかるように狙って金曜深夜とか、はてななら土曜出勤するはずだから日曜に出すとか、やってるんですよ
  • M: 前にイベント中に直ったことありましたね
    • H: あれは伊藤直也さんの発表中にそのハッシュタグつけて流した
    • M: flashのクロスドメインXMLが全世界に向けて許可になっていた
      • M: rsyncのdelete反映されなくてデプロイで消されなかったり、デプロイしたら復活したり
クロスドメイン
    • H: 昔はよくアドレスバーにcross_domain.xmlをよく打ち込んでいたけど、最近はflash自体が減ってきた
  • T: robots.txt を見るとひみつのURL教えてもらえたりとかは今でもある
    • H: その他には、.svn/entriesというのがたまに見えるよね
  • M: cross_domain.xmlドメイン単位なので、間違ってキャッシュすると取り消せないのが困る
    • M: XHR2も、昔のクロスドメインできないはずのJSコードが急にクロスドメインできるようになっちゃったり
    • M: preflightとredirect組み合わせるとIE10くらいしかまともに動く実装がなかったり
  • T: IE10はいいですよ。みなさんWindows8でIE10使いましょうみたいな
@takesako: IE10のJITセキュリティーについて
  • Chrome以降、JITの高速化戦争勃発
    • セキュリティー対策も進んでいる
  • 脆弱性の例
  • ASLR (Address Space Layout Randomization)
  • JIT-Spray
    • JIT結果を置く場所は実行許可されているので、そこにコードをしきつめると攻撃に有利
  • 定数のたたみ込みをすればしきつめることはできない
  • IE10のJITセキュリティー
    • codebase alignment randomization → うめ草としてnopではなく割込命令を使う → バスエラー
    • random nop insertion
    • constant blinding (定数をmovするのでなく、xorも使ってわからないようにする)
  • 結論: IE10/Windows8が世界最強のJITセキュリティ
Q&A
  • スマートフォンのWebViewはこわくないのか?
    • M: こわいですよ! iPhoneアプリで多い。アドレス帳のSQLファイルのpermissionがゆるゆる。WebView内のfile://スキームで動いていると読めた
    • M: iOSはJSからできることが多すぎて困る。JSからOSの機能たたけるようにブリッジしてると、任意のJSが実行できるような穴があったときに被害が甚大になっちゃう
    • T: 標準ブラウザの問題? アプリも?
    • M: Androidだとアプリ一覧見れたりする。どこまで公知なのかもわからない
    • M: 端末がいつまでもアップデートされないので困る
    • M: PhoneGap使ったアプリもネイティブとブリッジできるので、JSに穴があるとマズイ
      • M: 内部用のAPIは認証が甘かったり、みんなたたかれないと思ってるけど結構見えるもの
    • H: CSRFもアブない
    • T: ぼくはアプリごとに別々の端末持ってる。LINE専用端末とかw
    • M: 携帯まるごとシークレットモード(友達に貸すモード)とかほしい
感想

いや、そんなことがあるのかという話をたくさん聞けました。
「友達に貸すモード」は特にiPadにほしいですね。iPadを家族で共有していると、子供がメールも読み書きできてしまうのは困ります。Appleからすれば「共用しないでひとりに1台ずつ買え」ってことなんでしょうけど。

ランチセッション: C4SA

nifty cloud C4SAの説明とデモのセッションです。nifty様提供のお弁当をいただきました!

  • メニューから言語とかフレームワーク選択するとすぐサービス(キャンバスというらしい)ができる。1分くらいでできちゃう
  • 「みなさん黒い画面から離れられないということで用意しておきました!」shellも使える!

使ってみたいですね! サービスごとに2週間無料ということでさっそくアカウントを作りました。アカウント作成もカンタンで、Facebook, Twitter, github, Google+, @nifty IDでログインしてメアド確認するだけです