自己紹介 はせがわようすけ ネットエージェント株式会社 株式会社セキュアスカイ テクノロジー技術顧問 セキュリティ キャンプ Webセキュリティクラス OWASP Kansai Chapter Leader OWASP Japan board member

Similar documents
自己紹介 はせがわようすけ ネットエージェント株式会社 株式会社セキュアスカイ テクノロジー技術顧問 Microsoft MVP for Consumer Security Oct

自己紹介 はせがわようすけ ネットエージェント株式会社 株式会社セキュアスカイ テクノロジー技術顧問 OWASP Kansai Chapter Leader OWASP Japan Chapter Advisory Board member

自己紹介 はせがわようすけ ネットエージェント株式会社 株式会社セキュアスカイ テクノロジー技術顧問 OWASP Kansai Chapter Leader OWASP Japan Chapter Advisory Board member

長谷川陽介 ( はせがわようすけ OWASP Kansai チャプターリーダー OWASP Japan アドバイザリボードメンバー 株式会社セキュアスカイ テクノロジー CTO セキュリティキャンプ講師 (2008~) CODE BLUE カンファレンスレビュー

自己紹介 XSS のほうから来ました author of jjencode, aaencode

自己紹介 長谷川陽介 ( はせがわようすけ ( 株 ) セキュアスカイ テクノロジー常勤技術顧問 セキュリティキャンプ講師 (2008 年 ~) OWASP Kansai チャプターリーダー OWASP Japan ボードメンバー CODE BLUE カンファレ

WEBシステムのセキュリティ技術

今から始めるHTML5セキュリティ

JPCERT/CCとは 一 般 社 団 法 人 JPCERTコーディネーションセンター (JPCERT/CC (ジェーピーサート コーディネーションセンター)) Japan Computer Emergency Response Team Coordination Center

自己紹介 はせがわようすけ OWASP Kansai チャプターリーダー OWASP Japan アドバイザリボードメンバー 株式会社セキュアスカイ テクノロジー常勤技術顧問 CODE BLUE Security Conference Review board member セキュリティキャンプ講師

別添 2 SQL インジェクション ぜい弱性診断で最低限行うべき項目 1 ( ' ( 検索キー )''-- ( 検索キー ) and 'a'='a ( 検索キー ) and 1=1 は最低限 行うこと ) OS コマンドインジェクション 2 (../../../../../../../bin/sle

安全な Web サイトの作り方 7 版 と Android アプリの脆弱性対策 独立行政法人情報処理推進機構 (IPA) 技術本部セキュリティセンター Copyright 2015 独立行政法人情報処理推進機構

PowerPoint プレゼンテーション

第 7 回の内容 動的な Web サイト フォーム Web システムの構成

2.2 Reflected XSS 攻撃攻撃者の用意した悪意のあるリンクとターゲットサーバが同じホストである場合の Reflected XSS 攻撃を, 本稿では Reflected XSS 攻撃と呼ぶ. 例えば, サーバ A の target.php に Reflected XSS 脆弱性があった

SOC Report

内容 ( 演習 1) 脆弱性の原理解説 基礎知識 脆弱性の発見方法 演習 1: 意図しない命令の実行 演習解説 2

SQL インジェクションの脆弱性


目次 はじめに... 2 本書の対象読者 クリックジャッキング攻撃とは クリックジャッキング攻撃の例 クリックジャッキング攻撃が成立する仕組み クリックジャッキング攻撃によって想定される脅威 クリックジャッキ

HTML5 Security & Headers- X-Crawling-Response-Header-

spsafety_manual_sp_start_

allows attackers to steal the username-password pair saved in the password manager if the login page or other pages in the same domain are vulnerable

Webプログラミング演習

第 8 回の内容 クライアントサイド処理 JavaScript の基礎

SOC Report

べきでない悪意のあるSQL 文が攻撃者から入力された場合 データベースで実行される前にSQL 文として処理されないよう無効化する必要がありますが ( 図 1 1) 無効化されずにデータベースで実行された場合 データベースの操作が可能となります ( 図 1 2) 本脆弱性を悪用するとデータベース接続ユ

実験 5 CGI プログラミング 1 目的 動的にWebページを作成する手法の一つであるCGIについてプログラミングを通じて基本的な仕組みを学ぶ 2 実験 実験 1 Webサーバの設定確認と起動 (1)/etc/httpd/conf にある httpd.conf ファイルの cgi-bin に関する

Microsoft Word 基_シラバス.doc

Si 知識情報処理

Webデザイン論

Web のしくみと応用 ('15) 回テーマ 1 身近なWeb 2 Webの基礎 3 ハイパーメディアとHTML 4 HTMLとCSS 5 HTTP (1) 6 HTTP (2) 7 動的なWebサイト 8 クライアントサイドの技術 回 テーマ 9 リレーショナルデータベース 10 SQL とデータ

脆弱性を狙った脅威の分析と対策について Vol 年 7 月 21 日独立行政法人情報処理推進機構セキュリティセンター (IPA/ISEC) 独立行政法人情報処理推進機構 ( 略称 IPA 理事長 : 西垣浩司 ) は 2008 年度におけ る脆弱性を狙った脅威の一例を分析し 対策をまと

PALNETSC0184_操作編(1-基本)

Web のクライアントサーバモデル

ウェブデザイン技能検定 1 級実技 平成 28 年度 第 4 回 ウェブデザイン技能検定 1 級 実技試験概要 試験にあたっての注意事項 試験者は本試験の留意事項 注意事項に留意して作業を行うこと ペーパー実技試験は 課題 1 から 5 までの 5 課題を 60 分間で行うこと 作業実技試験は 課題

PowerPoint プレゼンテーション

OmniTrust

html5_ver2_kai.pdf

IBM API Connect 開発者ポータル構成ガイド 4章

Microsoft PowerPoint _2b-DOM.pptx

クイックマニュアル(利用者編)

1 グループ管理者とは ページ設定 ( グループページの設定 ) を行うことができるのがグループ管理者です グループ管理者はパーツのレイアウト変更や グループメンバーの権限設定 メンバーの招待などグループページ内の管理について様々に設定することができます 例えば町内会でグループページを作成し運用して

Ver.50 改版履歴 版数 日付 内容 担当 V //9 新規作成 STS V..0 06/6/ 画像修正 STS V..0 06/6/8 画像修正 STS V /9/5 画像追加 (Windows0 Anniversary の記載 ) STS V // 文言修

技術メモ-クリックジャッキング対策- X-FRAME-OPTIONSについて

SOC Report

はじめに ウイルスに感染させるための罠が仕掛けられた悪意のある文書ファイルは これまでにも Office の脆弱性の悪用や マクロ機能を悪用する手口のものがありました 昨今 それらとは異なる新たな攻撃手口を使ったものが出てきています 本資料は 新たな攻撃手口について紹介し 注意点を説明するものです

PowerPoint プレゼンテーション

メディプロ1 Javaサーブレット補足資料.ppt

安全なウェブサイトの作り方 7 版 の内容と資料活用例 2

Web Gateway資料(EWS比較付)

第7回 Javascript入門

Movable Type CMS Movable Type Movable Type 5.2 CMS

Microsoft Word - Webシステム/Webアプリケーション セキュリティ要件書 docx

brieart変換設定画面マニュアル

— intra-martで運用する場合のセキュリティの考え方    

リスト 1 1 <HTML> <HEAD> 3 <META http-equiv="content-type" content="text/html; charset=euc-jp"> 4 <TITLE> 住所の検索 </TITLE> 5 </HEAD> 6 <BODY> <FORM method=

情報システム設計論II ユーザインタフェース(1)

PowerPoint プレゼンテーション

ポップアップブロックの設定

Yosuke Secure Sky Technology Inc. Technical Advisor OWASP Kansai Chapter Leader OWASP Japan Chapter board member CODE BLUE Re

Webプログラミング演習

SAMBA Stunnel(Windows) 編 1. インストール 1 セキュア SAMBA の URL にアクセスし ログインを行います xxx 部分は会社様によって異なります xxxxx 2 Windows 版ダウンロード ボ

自 己 紹 介 ( 株 )セキュアスカイ テクノロジー 常 勤 技 術 顧 問 OWASP Kansaiチャプターリーダー OWASP Japanボードメンバー http//utf-8.jp/

brieart初期導入ガイド

2015 年 4 月 15 日に発表された HTTP.sys の脆弱性 ( ) へ の対応について 製品名 : バージョン : 対象プラットフォーム : カテゴリ : iautolaymagic すべてすべて Web アプリ この度 マイクロソフト社製品において緊急度の高い脆弱性 (CV

FW ファイルアップロード ダウンロード機能利用ガイド Version 年 9 月 21 日富士通株式会社 i All Right Reserved, Copyright FUJITSU LIMITED

McAfee Application Control ご紹介

JavaScript 演習 2 1

目次 1. 概要 2. サーバーへの設置 3. 設定 4. ユーザーアクセス記録の収集 5. 利用規定 6. 更新履歴

目次 1. Web 改ざん検知概要 (1)Web 改ざん検知機能 P2 (2) サービスの提供対象および範囲 P2 2. Web 改ざん検知機能 (1) 解析について P2 (2) ホーム画面について P3 (3) 解析履歴 P3 (4) レポート作成 P4 (5) 解析内容の設定 P4 a. 基本

HTML5を利用したWebアプリケーションのセキュリティ問題に関する調査報告書 Rev.2

Oracle Web CacheによるOracle WebCenter Spacesパフォーマンスの向上

2. 動的コンテンツとは動的コンテンツとは Web ブラウザからの要求に応じて動的に Web ページや画像などを生成する Web コンテンツのことをいいます Web で利用するサーチエンジンやアクセスカウンタ等は この仕組みを用いています 動的コンテンツは大きく次の二つに分類されます (1) Web

JavaScript カスタマイズ入門 kintone university アプリデザイナープラス JavaScript カスタマイズ入門編演習問題回答 演習問題 第 2 章サンプルで試そう 1 cybozu.com developer network の サンプルで試そう ( 以下 サンプル と

ポップアップブロックの設定

SOC Report

PC にソフトをインストールすることによって OpenVPN でセキュア SAMBA へ接続することができます 注意 OpenVPN 接続は仮想 IP を使用します ローカル環境にて IP 設定が被らない事をご確認下さい 万が一仮想 IP とローカル環境 IP が被るとローカル環境内接続が行えなくな

Trend Micro Cloud App Security ご紹介資料

SmartBrowser_document_build30_update.pptx

Ver1.40 証明書発行マニュアル (Export 可能 ) Windows 10 InternetExplorer 2018 年 3 月 14 日 セコムトラストシステムズ株式会社 Copyright SECOM Trust Systems CO.,LTD. All Rights Reserve

P.2 もくじ 8. ファイルのアップロードとダウンロード 8-. ファイルのアップロード 8-2. ファイル指定でアップロード 8-3. Zip 解凍アップロード 8-4. ドラッグ & ドロップで一括アップロード 8-5. ファイルのダウンロード 9. ファイルの送信 ( おすすめ機能 ) 9-

PowerPoint プレゼンテーション

別紙 年第 3 四半期脆弱性対策情報データベース JVN ipedia の登録状況 ( 詳細 ) 1. 脆弱性対策情報の登録状況 年第 3 四半期に登録した脆弱性の種類別件数図 8 のグラフは JVN ipedia へ 2012 年第 3 四半期に登録した脆弱性対策情

◎phpapi.indd

Microsoft PowerPoint - 04WWWとHTML.pptx

どこでもキャビネットVer1.3 ご紹介資料

SOC Report


~ アドレス収集くん ~ セキュリティ対策御説明資料

はせがわようすけ OWASP Kansai チャプターリーダー OWASP Japan アドバイザリボードメンバー 株 式 会 社 セキュアスカイ テクノロジー 常 勤 技 術 顧 問 CODE BLUE Security Conference Review board member セキュリティキ

スライド 1

ご利用のブラウザのバージョンによっては 若干項目名が異なる場合があります 予めご了承ください Windows をお使いの場合 [ 表示 ] [ エンコード ] [ 日本語 ( 自動選択 )] を選択 [ 表示 ] [ エンコード ] [Unicode(UTF-8)] を選択 Firefox をご利用

SciFinder エラーへの対処法

ブラウザ Internet Explorer 7 の設定について 第3版

付録 2 システムログ一覧 () 攻撃経路 1. ファイアウォール (FW) ネットワーク型 IPS/IDS Web サーバ AP サーバ DB サーバ プロキシサーバ エラーログ SSL ログ AP ログ ホストログ 非 日時 ファイアウォールホスト名 ファイアウォールルール名及び番号 インバウン

JAIRO Cloud 初級ユーザー向け手引書 1. ユーザーアカウント管理 JAIRO Cloud 事務局 協力 : オープンアクセスリポジトリ推進協会 (JPCOAR) JAIRO Cloud 運用作業部会 ver date 修正内容 /11 初版

PowerPoint Presentation

スライド 1

エネルギー消費性能計算プログラム API 仕様 プログラムバージョン Ver 概要これは エネルギー消費性能計算プログラムの API の仕様を記述したものです API は エネルギー消費性能の計算及び様式出力の機能を提供します 計算するプログラムのバージョンに合わせた API 仕様

Transcription:

HTML5 時代の Web セキュリティ May 10 2014 Yosuke HASEGAWA

自己紹介 はせがわようすけ ネットエージェント株式会社 株式会社セキュアスカイ テクノロジー技術顧問 セキュリティ キャンプ Webセキュリティクラス OWASP Kansai Chapter Leader OWASP Japan board member http://utf-8.jp/

宣伝 セキュリティ キャンプ

セキュリティ キャンプの紹介 セキュリティ キャンプ全国大会 2014.08.12-2014.08.16 開催決定!

セキュリティ キャンプとは 中央大会/全国大会 22歳以下の学生を対象とした合宿型講習会 業界の第一線で活躍するセキュリティ技術者が 講師 2004年から2013年まで10回開催 438名の学 生が参加 主催 セキュリティ キャンプ実施協議会 独 立行政法人情報処理推進機構(IPA)

セキュリティ キャンプとは セキュリティ キャンプ実施協議会 2012年2月設立 30の団体 企業が参 加(2014年2月時点) (ISC)2Japan サイボウズ株式会社 株式会社日立製作所 株式会社イーセクター 株式会社セキュアソフト 富士通エフ アイ ピー株式会社 伊藤忠テクノソリューションズ株式会社 ソニー株式会社 フューチャーアーキテクト株式会社 株式会社インテリジェントウェイブ トレンドマイクロ株式会社 株式会社三菱総合研究所 SCSK株式会社 一般財団法人日本情報経済社会推進協会 三菱電機株式会社 エヌ ティ ティ コミュニケーションズ株式会社 一般社団法人日本情報システム ユーザー協会 株式会社エヌ ティ ティ データ 日本電気株式会社 LINE株式会社 株式会社オービックビジネスコンサルタント 日本電信電話株式会社 楽天株式会社 グーグル株式会社 株式会社野村総合研究所 株式会社ラック 株式会社サイバーエージェント パナソニック アドバンストテクノロジー株式会社 株式会社リクルートテクノロジーズ ヤフー株式会社

参加者数 開催年 参加者数 講師数 備考 2004 30人(男性28 女性2) 8人 U-20 2005 30人(男性26 女性4) 11人 5泊6日 2006 36人(男性32 女性4) 14人 U-22化 2007 35人(男性32 女性3) 14人 2008 47人(セ:29 プ:18) 24人 2009 61人(セ:31 プ:30) 29人 2010 59人(セ:30 プ:29) 37人 CTF 2011 60人(セ:45 プ:15) 28人 大阪開催 2012 40人(男性39 女性1) 20人 プログラミングコース廃止 2013 41人(男性36 女性5) 18人 +プログラミングコース

クラス分け ソフトウェア セキュリティ クラス Web セキュリティ クラス ネットワーク セキュリティ クラス セキュアなシステムを作ろうクラス

出てきた人たち キャンプ講師になった キャンプで出会って結婚した 自分の言語作った 目でgrepした キャンプで出会った仲間と起業した 未踏やった 日本学生科学賞 科学技術振興機構賞取った 最近若いのにすごい人や変な人多くて楽し いヽ( ー )ノ

目指したいもの 世の中の解決できていない課題を認識させた い ビジネスチャンス 物作り コード書きをしながらのセキュリ ティ アドホックやバッドノウハウではないセキュ リティ ブラウザやOSなど あんまり誰も見てない ところのセキュリティ コミュニティーパワーになる人を増やしたい 変な人の 変さ を増幅 笑 したい

そろそろ応募開始 応募資格 日本国内に居住する 2014年3月31日時点にお いて22歳以下の学生 生徒 セキュリティキャンプ 大人の人はスポンサーに 検索

本題 HTML5 時代の Web セキュリティ

HTML5時代のWebアプリ 次々とリリースされるブラウザ 多数の新しい要素と属性 canvas, video, audio, input 多数の新しいAPI Web Sockets, Web Storage, XHR Lv.2 最適化されたJavaScriptエンジン 高速化された描画エンジン どのブラウザにどの機能が実装されてい るのか把握できない 第23回山陰ITPro勉強会

次々リリースされるブラウザ 2001 2001 2003 2004 2005 2006 6 2007 2008 2009 7 1.0 1.5 2.0 1 第23回山陰ITPro勉強会 6 7 2 8 3 9 2011 8 3.0 3.5 10 10 15 3.6 23 5 4 2012 9 2 3 4 5 1 5 2010 11 6 12

HTML5 の新機能 マルチメディアのサポート <video> <audio> <canvas>... 文書構造を表す要素 <section> <header> <footer>... フォームの拡張 <input type="email">... JavaScript API Web Workers, WebSocket, File... その他

HTML5 時代の Web アプリ HTML5 時代のブラウザ 高速化 高機能化 実行コードのブラウザ上へのシフト ネイティブアプリから Web アプリへ サーバ側で実行されていた処理がブラウザの JavaScript 上へ 攻撃もクライアントサイドへシフト JavaScript 上の問題点の増加 XSS や CSRF などの比重が増加

Web の技術楽しいですよね!

クロスサイトスクリプティング 書式文字列攻撃 SQL インジェクション パストラバーサル CSRF LDAP インジェクション 強制ブラウズリモートファイルインクルード バッファオーバーフロー セッションハイジャック Web の技術楽しいですよね! OS コマンドインジェクション セッション固定攻撃 HTTPレスポンス分割メモリリーク オープンリダイレクタ DoS XPath インジェクション HTTP ヘッダインジェクション

HTML5 を使った攻撃 攻撃側こそ新しい Web の技術をもっとも活用できる クロスブラウザ対応不要! 誰に遠慮することもなく使いたい技術を選んで使える! 多少不安定な技術でもかまわない!

HTML5 で増加する脅威 XSS HTML5 の新要素による XSS JS コード量の増加 DOM Based XSS Ajax データによる XSS CSRF XMLHttpRequest で攻撃者有利 オープンリダイレクタ JavaScript によるリダイレクトの増加 その他 Ajax データからの情報漏えい API の使い方の問題 Web Storage WebWorkers XDM

HTML5で増加する脅威 攻撃もクライアントサイドへシフト JavaScriptを通じた攻撃の比重が増加 XSSのリスクも増加 多くの点から見て XSS 脆弱性の危険性 はバッファ オーバーフローに匹敵します セキュリティに関するブリーフィング : Web に対する SDL の適用 http://msdn.microsoft.com/ja-jp/magazine/cc794277.aspx 第23回山陰ITPro勉強会

5 分でわかる対策

HTML5 調査報告 from JPCERT/CC

@IT 連載 HTML5 時代の 新しいセキュリティ エチケット HTML5 時代の 新しいセキュリティ エチケット (1) 重要! まずは オリジン を理解しよう http://www.atmarkit.co.jp/ait/articles/1311/26/news007.html (2) 単純ではない 最新 クロスサイトスクリプティング 事情 http://www.atmarkit.co.jp/ait/articles/1312/17/news010.html (3) 知っていれば恐くない XMLHttpRequest による XSS への対応方法 http://www.atmarkit.co.jp/ait/articles/1403/24/news005.html

読みましょう! 以上!

HTML5 時代の脆弱性

HTML5 で増加する脅威 XSS HTML5 の新要素による XSS JS コード量の増加 DOM Based XSS Ajax データによる XSS CSRF XMLHttpRequest で攻撃者有利 オープンリダイレクタ JavaScript によるリダイレクトの増加 その他 Ajax データからの情報漏えい API の使い方の問題 Web Storage WebWorkers XDM

そもそも XSS って? 簡単におさらい

XSS おさらい 対象 動的に HTML を生成する Web アプリ 問題 攻撃者が用意したスクリプトが HTML 内に挿入される 対策 HTML を生成する時点でエスケープ

XSSおさらい http://shop.example.com/?item="><script>... 攻撃者 被害者 GET /?item="><script>... <input type="text" value=""><script>... HTMLを生成するときの エスケープ漏れ 第23回山陰ITPro勉強会 オンラインショップなど

XSSおさらい http://shop.example.com/?item="><script>... 攻撃者 被害者 GET /?item="><script>... <input type="text" value=""><script>... 反射型XSS ユーザの送信内容をそのまま表示する オンラインショップなど 第23回山陰ITPro勉強会

XSSおさらい 攻撃者 被害者 Subject: test mail <html><script>... HTMLを生成するときの エスケープ漏れ 第23回山陰ITPro勉強会 Subject: test mail <html><script>... Webメールなど

XSSおさらい 攻撃者 被害者 Subject: test mail <html><script>... Subject: test mail <html><script>... 持続型/蓄積型XSS HTMLを生成するときの 攻撃者のスクリプトはサーバ内で保持されている Webメールなど エスケープ漏れ 第23回山陰ITPro勉強会

XSS おさらい 対象 動的に HTML を生成する Web アプリ 問題 攻撃者が用意したスクリプトが HTML 内に挿入される 対策 HTML を生成する時点でエスケープ

大原則 HTML を生成する時点で エスケープ って何だっけ? おさらい

XSSおさらい HTMLを生成する時点でエスケープ! < < > > " " ' &#39; & & <html> < > データ 第23回山陰ITPro勉強会 処理 HTML生成 ユーザ

エスケープの例外 href src 等の URL の動的生成 <a href="javascript:alert(1)"> <iframe src="data:text/html;base64, PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K"> http 以外のスキームに注意 JavaScript 内の動的生成 <script> var s="</script><script>alert(1)//"; </script> JS 内の文字列リテラルは HTML とは異なるエスケープ

XSS おさらい HTML を生成する時点でエスケープ コンテキスト ( 文脈 ) に応じたエスケープ コンテキストが入れ子になっているときはエスケープも入れ子に <div onclick="foo(' u0022><script> ');"> URL の動的生成 href src 等は http,https 限定とする

やってはいけない XSS 対策

やってはいけないXSS対策 入力時のサニタイズ < < > > " " ' &#39; & & データ サニタイズ 第23回山陰ITPro勉強会 <html> < > 処理 HTML生成 ユーザ

やってはいけない : 入力時のサニタイズ 入力時点でのデータの加工はプログラム規模が大きくなると破綻する サニタイズ という語が本来の意味を失って意味不明になっている 続きは Web でサニタイズ言うな 検索

XSS の種類

XSS の種類 反射型 XSS / Type-1 ユーザからの送信内容をそのまま表示 XSSフィルタ等である程度防御 お問い合わせフォーム サイト内検索 持続型 XSS / Type-2 攻撃者のスクリプトがサーバ内で保持 掲示板 Webメール

XSSの種類 反射型XSS / Type-1 ユーザからの送信内容をそのまま表示 XSSフィルタ等である程度防御 お問い合わせフォーム サイト内検索 持続型XSS / Type-2 攻撃者のスクリプトがサーバ内で保持 掲示板 Webメール GETだけでなくPOSTもあり得る GET /?item="><script>... <input type="text" value=""><script>... 第23回山陰ITPro勉強会

XSS の種類 - 反射型 XSS 反射型 XSS の場合 リクエストとレスポンスに同じ内容が含まれる GET /?<script>alert(1)</script> HTTP/1.1 Host: example.jp HTTP/1.1 200 OK Content-Type: text/hthml; charst=utf-8 <html> <body> <script>alert(1)</script> </body>

XSS の種類 - 反射型 XSS 反射型 XSS の場合 リクエストとレスポンスに同じ内容が含まれる GET /?<script>alert(1)</script> HTTP/1.1 Host: example.jp HTTP/1.1 200 OK Content-Type: text/hthml; charst=utf-8 <html> <body> <script>alert(1)</script> </body>

XSS の種類 - 反射型 XSS

XSS の種類 - 反射型 XSS

XSS の種類 - 反射型 XSS 反射型 XSS / Type-1 2007 年 8 月 Twitter こんにちはこんにちは

XSS の種類 反射型 XSS / Type-1 ユーザからの送信内容をそのまま表示 XSSフィルタ等である程度防御 お問い合わせフォーム サイト内検索 持続型 XSS / Type-2 攻撃者のスクリプトがサーバ内で保持 掲示板 Webメール

XSS の種類 反射型 XSS / Type-1 ユーザからの送信内容をそのまま表示 XSSフィルタ等である程度防御 お問い合わせフォーム サイト内検索 持続型 XSS / Type-2 攻撃者のスクリプトがサーバ内で保持 掲示板 Webメール Subject: test <script>... Subject: test <script>...

XSS の種類 - 持続型 XSS 2006 年 6 月 mixi こんにちはこんにちは 2010 年 9 月 Twitter

XSS の種類 - 持続型 XSS 2006 年 Yahoo! メール

ここまで XSS の復習です!

XSS with HTML5 elms

HTML5 の新要素による XSS これまでの間違った XSS 対策 危険そうな要素を検出 <script> <object> <iframe> onxxx href などの名称の属性を検出 <div onmouseover=alert(1)> <img src=# onerror=alert(1)> <a href="javascript:alert(1)> これまで仮にこの方法で網羅できていたとしても

HTML5 の新要素による XSS HTML5 で多数の要素 属性 イベントが導入 <input autofocus pattern="..."> <video onplay="...">

HTML5 の新要素による XSS いわゆる ブラックリスト での対応に漏れ <form> <button formaction="javascript:alert(1)">x </button> //http://html5sec.org/#72 そもそもブラックリスト方式は無理がある HTML 生成時にエスケープ の原則 HTML5 と関係なく XSS を防げる

DOM based XSS

XSS の種類 反射型 XSS / Type-1 ユーザからの送信内容をそのまま表示 XSSフィルタ等である程度防御 お問い合わせフォーム サイト内検索 //http://example.jp/#<script>alert(1)</script> div.innerhtml = location.hash; 持続型 XSS / Type-2 攻撃者のスクリプトがサーバ内で保持 掲示板 Webメール DOM based XSS / Type-0 JavaScriptが引き起こす サーバ側のHTML 生成には問題なし

DOM based XSS JavaScript が引き起こす XSS サーバ側の HTML 生成時には問題なし JavaScript による HTML レンダリング時の問題 //http://example.jp/#<script>alert(1)</script> div.innerhtml = location.hash.substring(1); JavaScript の利用に合わせて増加

DOM based XSS

DOM based XSS

DOM based XSS

DOM Based XSS ブラウザの XSS フィルタを通過することが多い location.hash 内の実行コードはサーバ側にログが残らない //http://example.jp/#<script>alert(1)</script> div.innerhtml = location.hash.substring(1); history.pushstate でアドレスバー書き換え 技術のあるユーザでも XSS に気づきにくい

DOM based XSS DOM based XSS は増えている JavaScript の大規模化に伴い増加 サーバ側での対策と原則は同じ HTML 生成時にエスケープ URL 生成時は http(s) のみ CSS backgroundimage 等への代入やイベントハンドラの動的生成は避ける

DOM based XSS HTML 生成時にエスケープ div.innerhtml = s.replace( /&/g, "&" ).replace( /</g, "<" ).replace( />/g, ">" ).replace( /"/g, """ ).replace( /'/g, "&#x27;" ); むしろ textnode を使おう! div.appendchild( document.createtextelement( s ) );

DOM based XSS URL 生成時は http(s) のみ // bad code div.innerhtml = '<a href="' + url + '">' + url + '</a>'; if( url.match( /^https?: / // ) ){ var elm = docuement.createelement( "a" ); elm.appendchild( document.createtextnode( url ) ); elm.setattribute( "href", url ); div.appendchild( elm ); }

DOM based XSS URL 生成時は http(s) のみ リダイレクト時はオープンリダイレクタを発生させないよう同一ホストに制限 var base = location.protocol + "//" + location.host + "/"; if( url.substring( 0, base.length ) == base ){ location.href = url; }

DOM based XSS URL の確認は実はめんどうくさい 詳細は めんどうくさい Web セキュリティ 参照

XSS with Ajax data

XSS with Ajax data IE の Content-Type 無視 HTML ではないものが HTML に昇格して XSS HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 { "msg" : "<script>alert(1)</script>" }

XSS with Ajax data IE は最終的に ファイルタイプ に基づいてコンテンツを処理する Content-Type 以外にも様々な要因からファイルタイプを決定 文書化されていない複雑なメカニズム ファイルのダウンロードダイアログで表示されるファイル名の命名規則 http://support.microsoft.com/kb/436153/ja ファイルタイプ決定のメカニズム解明に近づく唯一のドキュメント

XSS with Ajax data ファイルタイプの決定因子 "Content-Type" HTTP レスポンスヘッダ "X-Content-Type-Option" HTTP レスポンスヘッダ Windows レジストリにおける関連付け IE の設定 :" 拡張子ではなく 内容によってファイルを開く " URL 自身 コンテンツそのもの

IEにおけるファイルタイプ決定のメカニズム Content-Typeがレジストリに登録されている? [ HKEY_CLASSES_ROOT MIME Database Content Type ] Y N ファイルタイプを仮決定 外部プラグイン/アプリが必要? IE8+ && "X-Content-Type-Options:nosniff"? Y Y プラグインを起動またはダウンロード N IE8+ && "X-Content-Type-Options:nosniff"? Y N ダウンロード 仮決定したファイルタイプを使用 N 拡張子ではなく 内容によって ファイルを開く 設定値 有効 コンテンツをsniffしファイルタイプを決定 無効 仮決定したファイルタイプを使用 URLの拡張子が ".cgi" または ".exe" または "/"? Y e.g. http://utf-8.jp/a.cgi?abcd, http://utf-8.jp/foo/ N QUERY_STRINGからファイルタイプを 仮決定 URLの拡張子からファイルタイプを 仮決定 外部プラグイン/アプリが必要? 外部プラグイン/アプリが必要? N コンテンツをsniffし ファイルタイプを決定 これ以外にも例外的な挙動が多数あり Y プラグインを起動 またはダウンロード N コンテンツをsniffし ファイルタイプを決定 Y プラグインを起動 またはダウンロード 78 Yosuke HASEGAWA http://utf-8.jp/

XSS with Ajax data Ajax データを利用した XSS Ajax でやり取りされるデータを直接ブラウザ上で開いたときに XSS JSON - JSON 文字列内 {"text" :"<script>..." } JSONP - callback 名 http://example.com/?callback=<script>... プレーンテキスト, CSV

XSS with Ajax data JSON ならエスケープできなくはないけど HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 { "msg" : " u003cscript u003ealert(1) u003c/script u003e" } text/plain とか text/csv とかエスケープできない

XSS with Ajax data 対策 X-Content-Type-Options を付ける HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 X-Content-Type-Options: nosniff { "msg" : "<script>alert(1)</script>" } 非 HTML が HTML 扱いされることがなくなる

XSS まとめ

XSS beyond HTML5 XSS の増加 HTML5の新要素によるXSS JSコード量の増加 DOM Based XSS AjaxデータによるXSS

XSS beyond HTML5 対策は従来と大きくは変わらない HTML 生成時にエスケープ の原則 URL 生成時は http(s) スキームのみ許可 X-Content-Type-Options はとにかく付けておけ 攻撃可能な箇所は増える 新しい HTML 要素 属性 イベント JS コード量の増加 Ajax 使用量の増加

セキュリティ関係のレスポンスヘッダ

セキュリティ関係のレスポンスヘッダ 使いこなすことでよりセキュアに X-XSS-Protection X-Content-Type-Options X-Frame-Options Content-Security-Policy X-Download-Options Strict-Transport-Security

セキュリティ関係のレスポンスヘッダ X-XSS-Protection

X-XSS-Protection XSS 保護機能の制御 IE,Chrome,Opera,Safariで有効 XSS 保護機能をそのページのみ無効にする X-XSS-Protection: 0 XSS 保護機能を明示的に有効にする ( デフォルト有効になっている ) X-XSS-Protection: 1 XSS 保護機能を有効にし XSS 検知時に空白画面を表示 X-XSS-Protection: 1; mode=block

X-XSS-Protection XSS フィルターを無効に設定 やめて!

X-XSS-Protection XSS フィルターの誤検知のエラーを消すには 該当ページに XSS がないか慎重に検査したうえで そのページのみ X-XSS-Protection:0 を指定 ブラウザの設定変更を指示しないで!

セキュリティ関係のレスポンスヘッダ X-Content-Type-Options

X-Content-Type-Options Content-Type を厳格に扱う 非 HTML を HTML 扱いしない JSON や CSV による XSS の防止 Content-Type: application/json; charset=utf-8 X-Content-Type-Options: nosniff { "message", "<script>alert(1)</script>" } 非 JS を <script src> として読み込まない script src 経由での情報漏えい防止 Firefox Chrome などでも Content-Type: application/json; charset=utf-8 X-Content-Type-Options: nosniff [ "secret", "message", "is", "here" ]

X-Content-Type-Options 副作用はほとんどないので 全コンテン ツにつけるべき 稀有な副作用例 JSONP/JSONで共通処理 Content-Type: application/json; charset=utf-8 X-Content-Type-Options: nosniff { "message", "<script>alert(1)</script>" } Content-Type: application/json; charset=utf-8 X-Content-Type-Options: nosniff callback( { "message", "<script>alert(1)</script>" } ) <script src="api/jsonp?cb=callback"></script> 失敗する 第23回山陰ITPro勉強会

セキュリティ関係のレスポンスヘッダ X-Frame-Options

X-Frame-Options クリックジャッキング 標的サイトを透明に重ね 意図しないクリッ ク等を引き起こす攻撃 透明表示の 標的サイト 罠サイト 第23回山陰ITPro勉強会

X-Frame-Options クリックジャッキング対策 iframe,frame 等での埋め込みを禁止する 全ての埋め込みを禁止 X-Frame-Options: DENY 同一オリジン以外からの埋め込みを禁止 X-Frame-Options: SAMEORIGIN 指定オリジン以外からの埋め込みを禁止 X-Frame-Options: ALLOW-FROM http://example.jp

X-Frame-Options X-Frame-Options: ALLOW-FROM X-Frame-Options: ALLOW-FROM http://example.jp http://example.jp からの埋込みのみ許可 ALLOW-FROM に指定できるオリジンはひとつだけ 複数のオリジンからの埋め込み許可はそのままではできない Firefox のみスペース区切りで複数オリジンの指定可能

X-Frame-Options ALLOW-FROM の複数オリジン対応 呼出し元オリジンごとに識別子を URL に付与 // http://parent.example.jp/ 上 <iframe src="http://child.example.jp/?from=p1"></iframe> # child.example.jp/ my $allows = { p1 => 'http://parent.example.jp' }; my $from = $allows->{ $params->{from} }; if( $from ){ print "X-Frame-Options: ALLOW-FROM $from n"; }else{ print "X-Frame-Options: DENY n"; }

セキュリティ関係のレスポンスヘッダ Content-Security-Policy

Content-Security-Policy ヘッダで指定されたソースからしか画像や JS を読み込めなくする HTTP/1.1 200 OK Content-Security-Policy: default-src 'self'; image-src *; Content-Type: text/html; charset=utf-8 Chrome 拡張や FirefoxOS アプリの開発時にイラッとするアレ 使いこなせば XSS も怖くないけれど 実際の運用は超たいへん

セキュリティ関係のレスポンスヘッダ X-Download-Options

X-Download-Options IE8 以降でダウンロード時に 開く ボタンを非表示 HTTP/1.1 200 OK Content-Disposition: attachment; filename="index.html" X-Download-Options: noopen <html><script>... X-Download-Options なし X-Download-Options あり

X-Download-Options ダウンロード時の 開く ボタン非表示 添付ファイルによる蓄積型の XSS を予防することができる 安全なコンテンツをユーザーが直接開くことができなくなるので 利便性は下がる 不特定多数のユーザーが添付ファイルを掲載できる Web アプリでは一考の価値あり

セキュリティ関係のレスポンスヘッダ Strict-Transport-Security

Strict-Transport-Security HTTPS を強制するための指令 HTTP/1.1 200 OK Strict-Transport-Security: max-age=15768000 HTTP/1.1 200 OK Strict-Transport-Security: max-age=15768000; includesubdomains これ以降の HTTP へのアクセスは HTTPS に置き換わる max-age は有効期間を秒数で指定 includesubdomains が指定されるとサブドメインも対象

Strict-Transport-Security HTTPSサイトのみがStrict-Transport- Securityヘッダを返す HTTP/1.1 200 OK Strict-Transport-Security: max-age=15768000 HTTP はすでに汚染されているかもしれないので Firefox Chrome などは常に HTTPS で通信する "preload HSTS" のリストを持っている

Strict-Transport-Security Preload HSTS list Firefox Chrome は常に HTTPS で通信するサイトのリストを持っている 申請すれば掲載してもらえる ( 常時 SSL 化!) cybozu.com を真に常時 SSL にする話 Cybozu Inside Out サイボウズエンジニアのブログ http://developer.cybozu.co.jp/tech/?p=6096

質問タイム Question?

Question? 質問 hasegawa@utf-8.jp hasegawa@netagent.co.jp @hasegawayosuke http://utf-8.jp/