Home
Explore
Submit Search
Upload
Login
Signup
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
Report
Yosuke HASEGAWA
Follow
XSSer at OWASP Kansai
Jun. 11, 2014
•
0 likes
•
12,872 views
1
of
37
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
Jun. 11, 2014
•
0 likes
•
12,872 views
Download Now
Download to read offline
Report
Internet
Yosuke HASEGAWA
Follow
XSSer at OWASP Kansai
Recommended
安全なPHPアプリケーションの作り方2014
Hiroshi Tokumaru
55.3K views
•
46 slides
いまさら聞けないパスワードの取り扱い方
Hiroshi Tokumaru
56.9K views
•
29 slides
Webアプリでパスワード保護はどこまでやればいいか
Hiroshi Tokumaru
19.6K views
•
50 slides
徳丸本に載っていないWebアプリケーションセキュリティ
Hiroshi Tokumaru
51.1K views
•
75 slides
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
33.9K views
•
57 slides
他人事ではないWebセキュリティ
Yosuke HASEGAWA
24.4K views
•
67 slides
More Related Content
Slideshows for you
Webアプリ開発者のためのHTML5セキュリティ入門
Muneaki Nishimura
44.9K views
•
71 slides
とある診断員と色々厄介な脆弱性達
zaki4649
27K views
•
37 slides
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
Hiroshi Tokumaru
14.6K views
•
99 slides
とある診断員とSQLインジェクション
zaki4649
78.4K views
•
47 slides
今日こそわかる、安全なWebアプリの作り方2010
Hiroshi Tokumaru
9.1K views
•
112 slides
徳丸本ができるまで
Hiroshi Tokumaru
4.8K views
•
47 slides
Slideshows for you
(20)
Webアプリ開発者のためのHTML5セキュリティ入門
Muneaki Nishimura
•
44.9K views
とある診断員と色々厄介な脆弱性達
zaki4649
•
27K views
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
Hiroshi Tokumaru
•
14.6K views
とある診断員とSQLインジェクション
zaki4649
•
78.4K views
今日こそわかる、安全なWebアプリの作り方2010
Hiroshi Tokumaru
•
9.1K views
徳丸本ができるまで
Hiroshi Tokumaru
•
4.8K views
phpMyAdminにおけるスクリプト実行可能な脆弱性3種盛り合わせ
Hiroshi Tokumaru
•
10.3K views
[デブサミ2012]趣味と実益の脆弱性発見
Yosuke HASEGAWA
•
6.7K views
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
Hiroshi Tokumaru
•
7.2K views
次世代プラットフォームのセキュリティモデル考察(前編)
Yosuke HASEGAWA
•
9.4K views
XXE、SSRF、安全でないデシリアライゼーション入門
Hiroshi Tokumaru
•
3.6K views
Railsエンジニアのためのウェブセキュリティ入門
Hiroshi Tokumaru
•
23.9K views
文字コードの脆弱性はこの3年間でどの程度対策されたか?
Hiroshi Tokumaru
•
32.7K views
PHPカンファレンス2014セキュリティ対談資料
Yasuo Ohgaki
•
7.5K views
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
Hiroshi Tokumaru
•
9.2K views
安全なWebアプリケーションの作り方2018
Hiroshi Tokumaru
•
30K views
XSS再入門
Hiroshi Tokumaru
•
88.4K views
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
Hiroshi Tokumaru
•
74K views
セキュアコーディング方法論再構築の試み
Hiroshi Tokumaru
•
38.3K views
Phpcon2015
Hiroshi Tokumaru
•
42.2K views
Viewers also liked
90分間濃縮 PHPエラーの教室
Yusuke Ando
16.5K views
•
45 slides
ログイン前セッションフィクセイション攻撃の脅威と対策
Hiroshi Tokumaru
19.8K views
•
16 slides
辞書攻撃をする人は何をどう使っているのか
ozuma5119
32.8K views
•
26 slides
PHPでセキュリティを真面目に考える
Takuya Sato
34.8K views
•
80 slides
Chrome Devtools for beginners (v1.1)
yoshikawa_t
7.2K views
•
43 slides
【デブサミ関西2014】Web技術で作るエンタープライズアプリ
アシアル株式会社
2.5K views
•
42 slides
Viewers also liked
(20)
90分間濃縮 PHPエラーの教室
Yusuke Ando
•
16.5K views
ログイン前セッションフィクセイション攻撃の脅威と対策
Hiroshi Tokumaru
•
19.8K views
辞書攻撃をする人は何をどう使っているのか
ozuma5119
•
32.8K views
PHPでセキュリティを真面目に考える
Takuya Sato
•
34.8K views
Chrome Devtools for beginners (v1.1)
yoshikawa_t
•
7.2K views
【デブサミ関西2014】Web技術で作るエンタープライズアプリ
アシアル株式会社
•
2.5K views
セキュリティスキルをゲットする、たった3つの方法
Riotaro OKADA
•
2.6K views
130821 owasp zed attack proxyをぶん回せ
Minoru Sakai
•
6.7K views
困った時のDev toolsの使い方(初心者向け)
yoshikawa_t
•
2.8K views
The innerHTML Apocalypse
Mario Heiderich
•
34.8K views
今日から使える! Sass/compass ゆるめ勉強会
Yuji Nojima
•
43.8K views
Chromeでjavascriptデバッグ!まず半歩♪
Yuji Nojima
•
21.7K views
はじめてのWi-Fiクラック
zaki4649
•
5.5K views
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
Hikari Fukasawa
•
38.5K views
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
Sen Ueno
•
19.2K views
無料セミナー20170321 awsから始めるlinux入門
Trainocate Japan, Ltd.
•
1.4K views
脆弱性検査ツールってどうよ
Masakazu Ikeda
•
10.4K views
Chrome Developer Toolsを使いこなそう!
yoshikawa_t
•
92.4K views
PHPにないセキュリティ機能
Yasuo Ohgaki
•
22.6K views
SecurityCamp2015「バグハンティング入門」
Masato Kinugawa
•
31.7K views
Similar to HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
Takakiyo Tanaka
4.7K views
•
46 slides
Html5, Web Applications 2
totty jp
786 views
•
12 slides
リモートデバッグツール Weinerをつかってみた
Masakazu Muraoka
1K views
•
21 slides
WebSocket + Node.jsでつくるチャットアプリ
Kohei Kadowaki
15.1K views
•
58 slides
JavaプログラマのためのWebSocket概要
Shumpei Shiraishi
7.2K views
•
22 slides
これから利用拡大?WebSocket
AdvancedTechNight
11.6K views
•
25 slides
Similar to HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
(20)
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
Takakiyo Tanaka
•
4.7K views
Html5, Web Applications 2
totty jp
•
786 views
リモートデバッグツール Weinerをつかってみた
Masakazu Muraoka
•
1K views
WebSocket + Node.jsでつくるチャットアプリ
Kohei Kadowaki
•
15.1K views
JavaプログラマのためのWebSocket概要
Shumpei Shiraishi
•
7.2K views
これから利用拡大?WebSocket
AdvancedTechNight
•
11.6K views
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコシステムズ合同会社
•
6.3K views
HTML5 & The Web Platform
Masataka Yakura
•
10.1K views
[Japan Tech summit 2017] DEP 005
Microsoft Tech Summit 2017
•
1.9K views
Firefox5+HTML5×5
dynamis
•
2.1K views
Mvc conf session_5_isami
Hiroshi Okunushi
•
706 views
Rdbms起点で考えると見えない世界 okuyama勉強会
Masakazu Muraoka
•
862 views
IETF94 M2M Authentication関連報告
Masaru Kurahayashi
•
1.7K views
Concentrated HTML5 & Attractive HTML5
Sho Ito
•
3.3K views
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
崇之 清水
•
13.9K views
サービスリリースから安定軌道に乗せるまでに行った開発施策
Keiichi Hagiwara
•
83 views
PlayFramework1.2.4におけるWebSocket
Kazuhiro Hara
•
2K views
Iss seminar 2010709#1-upload
Openwave Systems
•
441 views
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
Osamu Shimoda
•
4.2K views
OWIN - .NETにおけるPSGI -
将 高野
•
2.4K views
Recently uploaded
#专业或教育领域Strath毕业证成绩单
MaggieSU14
2 views
•
1 slide
#毕业日期,电子版UH毕业证成绩单
ColumbiaDiplomaColum
2 views
•
1 slide
#专业或教育领域MIT斯隆管理学院毕业证成绩单
MaggieSU14
2 views
•
1 slide
#专业或教育领域Macquarie毕业证成绩单
MaggieSU14
2 views
•
1 slide
#毕业日期,电子版QUT毕业证成绩单
ColumbiaDiplomaColum
2 views
•
1 slide
#专业或教育领域Pepperdine毕业证成绩单
MaggieSU14
3 views
•
1 slide
Recently uploaded
(20)
#专业或教育领域Strath毕业证成绩单
MaggieSU14
•
2 views
#毕业日期,电子版UH毕业证成绩单
ColumbiaDiplomaColum
•
2 views
#专业或教育领域MIT斯隆管理学院毕业证成绩单
MaggieSU14
•
2 views
#专业或教育领域Macquarie毕业证成绩单
MaggieSU14
•
2 views
#毕业日期,电子版QUT毕业证成绩单
ColumbiaDiplomaColum
•
2 views
#专业或教育领域Pepperdine毕业证成绩单
MaggieSU14
•
3 views
#《仿原版开版AC文凭/毕业证书»
sapape4493
•
2 views
#毕业日期,电子版SLC毕业证成绩单
ColumbiaDiplomaColum
•
2 views
#专业或教育领域Nipissing毕业证成绩单
MaggieSU14
•
2 views
#关于丹佛大学毕业证办理流程
kaxib93463
•
2 views
#专业或教育领域Brandon毕业证成绩单
MaggieSU14
•
2 views
Programa informatica.pdf
RITAITA01010101
•
2 views
#毕业日期,电子版uOttawa毕业证成绩单
ColumbiaDiplomaColum
•
2 views
#专业或教育领域Griffith毕业证成绩单
MaggieSU14
•
2 views
#专业或教育领域Ohio毕业证成绩单
MaggieSU14
•
2 views
#专业或教育领域基尔大学毕业证成绩单
MaggieSU14
•
2 views
#专业或教育领域Fanshawe毕业证成绩单
MaggieSU14
•
2 views
#专业或教育领域DePaul毕业证成绩单
MaggieSU14
•
2 views
#毕业日期,电子版Trent U毕业证成绩单
ColumbiaDiplomaColum
•
2 views
#毕业日期,电子版Coquitlam毕业证成绩单
ColumbiaDiplomaColum
•
2 views
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
HTML5のセキュリティ もうちょい詳しく HTML5セキュリティ その3 :
JavaScript API Jun 6 2014 Yosuke HASEGAWA #owaspkansai
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai 自己紹介 はせがわようすけ ネットエージェント株式会社 株式会社セキュアスカイ・テクノロジー 技術顧問 http://utf-8.jp/ OWASP Kansai Chapter Leader OWASP Japan Chapter Advisory Board member
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai HTML5時代のWebアプリ 次々とリリースされるブラウザ 多数の新しい要素と属性 canvas, video, audio, input… 多数の新しいAPI Web Sockets, Web Storage, XHR Lv.2… 最適化されたJavaScriptエンジン 高速化された描画エンジン どのブラウザにどの機能が実装されてい るのか把握できない
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai 次々リリースされるブラウザ 6 7 8 2001 2001 2003 2004 2006 2007 2008 2009 1 3 4 5 9 10 3.5 3.63.01.5 2.0 6 7 8 2 41 2 3 20102005 1.0 5 2011 2012 9 10 15 23 5 11 12 6
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai HTML5の新機能 マルチメディアのサポート <video> <audio> <canvas>... 文書構造を表す要素 <section> <header> <footer> ... フォームの拡張 <input type="email"> ... JavaScript API Web Workers, WebSocket, File... その他…
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai HTML5時代のWebアプリ HTML5時代のブラウザ 高速化、高機能化 実行コードのブラウザ上へのシフト ネイティブアプリからWebアプリへ サーバ側で実行されていた処理がブラウザの JavaScript上へ 攻撃もクライアントサイドへシフト JavaScript上の問題点の増加 XSSやCSRFなどの比重が増加
Webの技術 楽しいですよね!
Webの技術 楽しいですよね! クロスサイトスクリプティング SQLインジェクション CSRF HTTPレスポンス分割 オープンリダイレクタ HTTPヘッダインジェクション セッションハイジャック パストラバーサル リモートファイルインクルード DoS OSコマンドインジェクション メモリリーク バッファオーバーフロー 強制ブラウズ セッション固定攻撃 LDAPインジェクション XPathインジェクション 書式文字列攻撃
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai HTML5を使った攻撃 攻撃側こそ新しいWebの技術をもっとも 活用できる クロスブラウザ対応不要! 誰に遠慮することもなく使いたい技術を選ん で使える! 多少不安定な技術でもかまわない!
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai HTML5で増加する脅威 攻撃もクライアントサイドへシフト JavaScriptを通じた攻撃の比重が増加 XSSのリスクも増加 多くの点から見て、XSS 脆弱性の危険性 はバッファ オーバーフローに匹敵します。 ” “ セキュリティに関するブリーフィング : Web に対する SDL の適用 http://msdn.microsoft.com/ja-jp/magazine/cc794277.aspx
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai HTML5で増加する脅威 XSS HTML5の新要素によるXSS JSコード量の増加 – DOM Based XSS AjaxデータによるXSS CSRF XMLHttpRequestで攻撃者有利 オープンリダイレクタ JavaScriptによるリダイレクトの増加 その他 Ajaxデータからの情報漏えい APIの使い方の問題 WebSocket、Web Storage、Web Workers…
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai 今日のはなし JavaScript API使用上の注意点 WebSocket Web Storage Web Workers
WebSocket
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai WebSocket JavaScriptにおける双方向通信機能 var ws = new WebSocket( "ws://example.jp/" ); ws.onopen = function( evt ){ console.log( "connected" ); }; ws.onmessage = function( evt ){ console.log( "received:" + evt.data ); }; ws.send( "hello" );
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai WebSocket 重要な情報はTLS(wss://)を使うこと httpに対するhttpsと同様 // no TLS var ws = new WebSocket( "ws://example.jp/" ); // over TLS var ws = new WebSocket( "wss://example.jp/" );
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai WebSocket Cookieはhttp/httpsと共有される http://example.jp/で発行されたCookie は https://example.jp/ ws://example.jp:8080/websocket wss://example.jp:8081/websocket などで共有される (secure属性がない場合)
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai WebSocket Cookieはhttp/httpsと共有される GET /index.html HTTP/1.1 Host: example.jp Connection: Keep-Alive HTTP/1.1 200 OK Date: Tue, 1 Jan 2013 09:00:00 GMT Content-Length: 2524 Content-Type: text/html; charset=utf-8 Set-Cookie: session=12AFE9BD34E5A202; path=/ .... GET /websocket HTTP/1.1 Upgrade: websocket Connection: Upgrade Host: example.jp Origin: http://example.jp Sec-WebSocket-Key: mU6OBz5GKwUgZqbj2OtWfQ== Sec-WebSocket-Version: 13 Sec-WebSocket-Protocol: chat, superchat Cookie: session=12AFE9BD34E5A202 HTTP/1.1 101 Switching Protocols Upgrade: WebSocket Connection: Upgrade Sec-WebSocket-Accept: IsCRPjZ0Vshy2opkKOsG2UF74eA= Sec-WebSocket-Protocol: chat ....
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai WebSocket secure属性付きのCookieはhttpsとwss で共有される https://example.jp/index.html wss://example.jp:8081/websocket
Web Storage
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai Web Storage JavaScriptでデータを保存する機構 Cookieより大容量 Cookieと違って自動送信されない JavaScript上で明示的な読み書きが必要 localStorage - 永続的に保持 sessionStorage - セッション間だけ保持 sessionStorage.setItem( "foo", "abcdefg" ); var value = sesseionStorage.getItem( "foo" );
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai Web Storage localStorage 明示的に削除しない限りデータを保持 原則、オリジン単位でデータを保持 IE8ではhttpとhttpsで共有される Safariではプライベートブラウズ時に読み書 きできない sessionStorage.setItem( "foo", "data" ); // 例外発生 alert( sesseionStorage.getItem( "foo" ) );
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai Web Storage sessionStorage ブラウザが開かれている間データを保持 新しいタブでは異なるセッション 同一オリジンのiframe、frameではセッ ションを共有(IE8,9を除く) IE8ではhttpとhttpsで共有される
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai Web Storage Cookieと違い、常にJavaScriptから読 み書き可能 Cookie – httponlyによってJSからアクセ ス不可 XSSが発生したときに盗み見を防ぐことがで きない パスワードや生年月日などの重要情報をWeb Storageに保存しないこと
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai Web Storage Webアプリケーションの「セッション」 と異なるデータ保持期間 Webアプリケーション: セッション = ログ インからログアウトまで sessionStorage – (原則)タブを閉じるまで localStorage – 無期限 ログインしたユーザに紐づくデータの保 存期間に注意
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai Web Storage Web Storage タイムアウトによる 強制ログアウト ユーザA ログイン ユーザB データを保存 誤ったデータの使用 データ漏えい ログイン データ読み込み 他のユーザとデータが混在する可能性
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai Web Storage 対策 ユーザIDと合わせて保存する 未ログインでのページロード時やログイン処 理時、ログアウト処理時にstorage内のデー タを削除する (ログアウト処理は確実に走るとは限らない) sessionStorage.setItem( userid + "-foo", "data" );
Web Workers
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai Web Workers JavaScriptによるバックグラウンド処理 機構 多量の計算などの重い処理をUIをブロックせ ず実行 var worker = new Worker( "background-task.js" ); worker.onmessage = function( event ){ alert( "completed:" + event.data ); }; // background-task.js for( var i = 0, sum = 0; i < 1000; i++ ){ sum += i; } postMessage( sum );
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai Web Workers 外部からのコードが実行されないよう注 意 攻撃者が用意したスクリプトがWorkerとし て実行される ただしDOM操作できないので脅威は低い // 脆弱なコード // http://example.jp/#data:text/javascript,onmessage=... var src = location.hash.substring(1); var worker = new Worker( src );
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai Web Workers importScriptsも同様 //脆弱なコード。importScriptsに任意のURIがわたる var src = location.hash.substring(1); var worker = new Worker( 'worker.js' ); worker.postMessage( src ); // worker.js onmessage = function( evt ){ if( evt.data ) importScripts( evt.data ); }
まとめ Conclusion
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai まとめ WebSocket 重要情報はTLSで保護されたwss:スキームで Cookieの共有に注意 Web Storage 重要情報は保存しない 複数ユーザの意図しないデータ共有に注意 Web Workers 外部由来のコードをworker srcとして使用 しない
参考文献
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai HTML5 調査報告 from JPCERT/CC
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai 参考文献 http://utf-8.jp/ HTML5セキュリティ その1: 基礎編、XSS編 http://utf-8.jp/public/20130613/owasp.pptx HTML5セキュリティ その2: オープンリダイレクト、CSRF http://utf-8.jp/public/20131114/owasp.pptx
質問タイム Question ?
OWASP Kansai Local
Chapter Meeting #2 #owaspkansai Question? 質問 hasegawa@utf-8.jp hasegawa@netagent.co.jp @hasegawayosuke http://utf-8.jp/