もうちよい詳しくHTML5セキュリティその3：JavaScript API Jun 6 2014 Yosuke HASEGAWA E #owaspkansai自己紹介はせがわようすけ❖ネットエージェント株式会社❖株式会社セキュアスカイ・テクノロジー技術顧問❖ http://utf-8.jp/ ❖ OWASP Kansai Chapter Leader ❖ OWASP Japan Chapter Advisory Board member @hosegowayosuke
| E #owaspkansai

❖次々とリリースされるブラウザ◇多数の新しい要素と属性❖canvas, video, audio, input… ◇多数の新しいAPI ❖Web Sockets, Web Storage, XHR Lv.2… ❖最適化されたJavaScriptエンジン❖高速化された描画エンジン☼どのブラウザにどの機能が実装されるのか把握できないの
|コ#owaspkansai

OWASP Kansai Local Chapter Meeting #2
に#owaspkansai
HTML5の新羅作☼マルチメディアのサポート<video> <audio> <canvas>... ❖文書構造を表す要素<section> <header> <footer> ... ◇フォームの拡張<input type="email"> ... ❖JavaScript API Web Workers, WebSocket, File... ❖その他…
|日#owaspkansai
HTML5時代のWebアプリ❖HTML5時代のブラウザ❖高速化、高機能化❖実行コードのブラウザ上へのシフト◇ネイティブアプリからWebアプリへ❖サーバ側で実行されていた処理がブラウザのJavaScript上へ❖攻撃もクライアントサイドヘシフト❖JavaScript上の問題点の増加❖XSSやCSRFなどの比重が増加
|日#owaspkansai
Linked in bing Webの技術楽しいですよね！クロスサイトスクリプティング書式文字列攻撃強制ブラウズリモートファイルインクルードSQLインジエクションLDAPインジエクションバッファオーバーフローパストラバーサルCSRFセッションハイジャックWebの技術準行化する方法メモリリークHTTPヘッダインジェクションブンリダイレクタDoS
❖攻撃側こそ新しいWebの技術をもつとも活用できる☆クロスブラウザ対応不要！ ❖誰に遠慮することもなく使いたい技術を選んで使える！ ◇多少不安定な技術でもかまわない！
❖攻撃もクライアントサイドヘシフト❖JavaScriptを通じた攻撃の比重が増加❖XSSのリスクも増加66多くの点から見て、XSS脆弱性の危険性はバッファオーバーフローに匹敵します。 99セキュリティに関するブリーフィング： Webに対するSDLの適用http://msdn.microsoft.com/ja-jp/magazine/cc794277.aspx
❖ XSS ❖HTML5の新要素によるXSS ❖JSコード量の増加– DOM Based XSS ❖AjaxデータによるXSS ❖ CSRF ❖ XMLHttpRequestで攻撃者有利❖オープンリダイレクタ❖JavaScriptによるリダイレクトの増加❖その他❖Ajaxデータからの情報漏えい❖ APIの使い方の問題❖WebSocket、Web Storage、Web Workers…
に#owaspkansai
❖JavaScript API使用上の注意点❖WebSocket ❖Web Storage ❖Web Workers WebSocket
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" );
日#owaspkansai

❖重要な情報はTLS(wss://)を使うこと❖httpに対するhttpsと同様// no TLS var ws = new WebSocket( "ws://example.jp/" ); // over TLS var ws = new WebSocket( "wss://example.jp/" );
| E #owaspkansai

❖Cookieはhttp/httpsと共有される❖http://example.jp/で発行されたCookieは❖https://example.jp/ ❖ws://example.jp:8080/websocket ❖wss://example.jp:8081/websocketなどで共有される(secure属性がない場合)
日#owaspkansai

GET /index.html HTTP/1.1 Host: example.jp Connection: Keep-Alive
Sec-WebSocket-Protocol: chat
❖secure属性付きのCookieはhttpsとwssで共有される❖https://example.jp/index.html ❖wss://example.jp:8081/websocket Web Storage
❖JavaScriptでデータを保存する機構❖Cookieより大容量❖Cookieと違って自動送信されない❖JavaScript上で明示的な読み書きが必要sessionStorage.setItem( "foo", "abcdefg" ); var value = sesseionStorage.getItem( "foo" ); ❖localStorage -永続的に保持❖sessionStorage -セッション間だけ保持
日#owaspkansai

❖localStorage ❖明示的に削除しない限りデータを保持❖原則、オリジン単位でデータを保持❖IE8ではhttpとhttpsで共有される❖Safariではプライベートブラウズ時に読み書きできないsessionStorage.setItem( "foo", "data" ); //例外発生alert( sesseionStorage.getItem( "foo" ) );
| E #owaspkansai
Web Storage ❖sessionStorage ◇ブラウザが開かれている間データを保持❖新しいタブでは異なるセッション❖同一オリジンのiframe、frameではセッションを共有(IE8,9を除く) ❖IE8ではhttpとhttpsで共有される
に#owaspkansai

❖Cookieと違い、常にJavaScriptから読み書き可能❖Cookie – httponlyによってJSからアクセス不可◇XSSが発生したときに盗み見を防ぐことができない☼パスワードや生年月日などの重要情報をWeb Storageに保存しないこと
に#owaspkansai

❖Webアプリケーションの「セッション」と異なるデータ保持期間◇Webアプリケーション:セッション=ログインからログアウトまで❖sessionStorage – (原則)タブを閉じるまで❖localStorage –無期限☼ログインしたユーザに紐づくデータの保存期間に注意
に#owaspkansai

ログインデータを保存タイムアウトによるf美制ログアウト
❖対策❖ユーザIDと合わせて保存するsessionStorage.setItem( userid + "-foo", "data" ); ❖未ログインでのページロード時やログイン処理時、ログアウト処理時にstorage内のデータを削除する(ログアウト処理は確実に走るとは限らない)
| E #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 );
| E #owaspkansai

❖外部からのコードが実行されないよう注意//脆弱なコード// http://example.jp/#data:text/javascript,onmessage=... var src = location.hash.substring(1); var worker = new Worker( src ); ❖攻撃者が用意したスクリプトがWorkerとして実行される❖ただしDOM操作できないので脅威は低い
//脆弱なコード。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 ); → | E #owaspkansaiまとめConclusionまとめ❖WebSocket ❖重要情報はTLSで保護されたwss:スキームで❖Cookieの共有に注意❖ Web Storage ❖重要情報は保存しない❖複数ユーザの意図しないデータ共有に注意❖Web Workers ❖外部由来のコードをworker srcとして使用しない
に#owaspkansai
会考文献
← →  C  → → www.jpcert.or.jp/research/html5.html
JPCERT/CC®
安全・安心なＩＴ社会のための、国Japan Computer Emergency Response Team Coordination Center JPCERTコーディネーションセンター ►お問い合わせＱ検索キーワードを入力s)最新情報を取得(RSS |メ↑Home >公開資料>研究・調査レポート> HTML5を利用したWebアプリケーションのセキュリティ問題に関する調査報告書リトップペーシ情報提供・主意喚起早期警戒・腕弱性対策情報• Weekly Report ・インターネット定点観測ロインシデントの報告日名標名標ロ制御システムセキュリティ日ラーニング日公開資料国イベントロブレスリリース[1] JFCERT/CC HTML5を利用したWebアプリケーションのセキュリティ問題に関する観客報告書(1) ※ [2017: 2018-10-30] Mツイート(2)メールHTML5 Iは、WHATWGおよびWBCがHTML4に代わる次世代のHTMLとして策定を進めている仕様であり、HTML5およびその周辺技術の利用により、Webサイト閲覧者(以下、ユーザ)のブラウザ内でのデータ格納、クライアントとサーバ間での双方向通信、位置情報の取得など、従来のHTML4よりも柔軟かつ利便性の高いWebサイトの構築が可能となっています。利便性が向上する一方で、それらの新技術が攻撃者に悪用された際にユーザが受ける影響に関して、十分に検証や周扶がされているとは言えず、セキュリティ対策がされないまま普及が進むことが危惧されています。 JPCERT/CCでは、HTML5を利用した安全なWebアプリケーション開発のための技術書やガイドラインのベースとなる体系的な資料の提供を目的として、懸念されるセキュリティ問題を抽出した上で検討を加え、それらの問題に対して可能な限り検証を行ったうえで、それらの調査結果をまとめました。なお、本調査については、作業の一部をネットエージェント株式会社に委託して実施しました。 OWASP Kansai Local Chapter Meeting #2 ❖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 ? Question?賃貸品hasegawa@utf-8.jp hasegawa@netagent.co.jp @hasegawayosuke http://utf-8.jp/ @hasegawayosuke
E #owaspkansai