Frontend Conference Fukuoka 2019
これからのフロントエンドセキュリティFrontend Conference Fukuoka 2019はせがわようすけ @hasegawayosuke
View Slide
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaaaa長谷川陽介 (はせがわようすけ)@hasegawayosuke(株)セキュアスカイ・テクノロジー 取締役CTO千葉大学 非常勤講師OWASP Kansai ボードメンバーOWASP Japan ボードメンバーCODE BLUE レビューボードメンバーセキュリティ・キャンプ協議会Internet Explorer、Mozilla FirefoxをはじめWebアプリケーションに関する多数の脆弱性を発見。Black Hat Japan 2008、OWASP AppSec APAC2014、CODE BLUE 2016他講演多数。gihyo.jp連載: JavaScriptセキュリティの基礎知識https://gihyo.jp/dev/serial/01/javascript-security
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokajjencode - 記号だけでJSを書く$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"¥""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"¥¥"+$.__$+$.$$_+$._$_+$.__+"(¥¥¥"¥¥"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+$._$+",¥¥"+$.$__+$.___+"¥¥"+$.__$+$.__$+$._$_+$.$_$_+"¥¥"+$.__$+$.$$_+$.$$_+$.$_$_+"¥¥"+$.__$+$._$_+$._$$+$.$$__+"¥¥"+$.__$+$.$$_+$._$_+"¥¥"+$.__$+$.$_$+$.__$+"¥¥"+$.__$+$.$$_+$.___+$.__+"¥¥¥"¥¥"+$.$__+$.___+")"+"¥"")())();http://utf-8.jp/public/jjencode.html
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaaaencode - 顔文字でJSを書く゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/(o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3)+'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o']= ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_')[(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='¥¥'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='¥"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) - (゚Θ゚))+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o)+(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+(c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) +(゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');http://utf-8.jp/public/aaencode.html
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaそもそもフロントエンドでのセキュリティの必要性って?
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaフロントエンドでのセキュリティの必要性「セキュリティってバックエンド側の仕事では?」多くの部分はバックエンド側けれどフロントエンド側も無関係ではない典型的にはDOM-based XSSなど「Webアプリ」ではないstaticなWebサイトでも脆弱性が生まれる// 脆弱なコード例// http://example.jp/#element.innerHTML = decodeURIComponent(location.hash);
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaフロントエンドでのセキュリティの必要性staticなWebサイトでも脆弱性が生まれる実例: とあるサイトの404ページ// 脆弱なコード例The requested URL was not foundon this server....var url = location.href;var elm = document.getElementById('link');elm.innerHTML = '' + url + '';http://example.jp/#">... などでXSS<br/>
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaフロントエンドでのセキュリティの必要性「Webアプリ」ではないstaticなWebサイトでも脆弱性が生まれることがあるあらゆるサイトにおいてフロントエンドでもセキュリティへの配慮が必要
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaセキュリティの基礎概念: オリジン
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaオリジンオリジン - Webにおけるセキュリティの境界を指し示す概念プロトコル、ホスト、ポートの組み合わせを「オリジン」と定義正規化して表記RFC 6454 - The Web Origin Concept https://tools.ietf.org/html/rfc6454プロトコル ポートホストURL オリジンhttp://example.jp:8080/foo/ba http://example.jp:8080http://example.jp:80/foo?q=abc#def http://example.jphttps://example.jp/ https://example.jphttps://www.example.jp/foo/ https://www.example.jphttp://example.jp:8080/foo/bar
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaオリジンの比較リソース間が同じオリジンかどうかは正規化して比較するURL 1 URL 2 オリジンhttp://example.jp/index.html http://example.jp/favicon.ico 同一オリジンhttp://example.jp/index.html http://example.jp/test.txt 同一オリジンhttp://example.jp/index.html https://example.jp/test.txtスキーム名が異なるので同一オリジンではないhttp://example.jp/index.html http://img.example.jp/image.pngホスト名が異なるので同一オリジンではないhttp://example.jp/index.html http://example.jp:8080/index.htmlポート番号が異なるので同一オリジンではない
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuoka同一オリジンとクロスオリジン同一オリジン - 同じオリジン内のリソースへのアクセスクロスオリジン - 異なるオリジンへのリソースのアクセスexample.jpのJSからapi.example.jpのJSONを読む等同一オリジンのアクセスは無制限、クロスオリジンのアクセスでは制限がある - 同一オリジンポリシー(Same OriginPolicy; SOP)フロントエンドのセキュリティ = オリジン間でのアクセスをコントロールすること
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaDOM-based XSS
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaDOM-based XSSJavaScriptによってHTMLを操作する際に発生するXS// 脆弱なコード例// http://example.jp/#element.innerHTML = decodeURIComponent(location.hash);// 脆弱なコード例その2: もう少しだけ複雑な例// http://example.jp/#/foo/bar.html などを想定しているが攻撃者が// http://example.jp/#http://攻撃者.jp/ などに誘導するとXSSとなるconst url = decodeURIComponent(location.hash.substr(1));fetch(url).then(res => res.text()).then(text => element.innerHTML = text);
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaDOM-based XSS攻撃者の与えた文字列をもとにHTMLを操作することで発生攻撃者の与えた文字列をもとにHTMLを操作することで発生処理 シンクソースlocation.hashxhr.responseTextdocument.referrerFetch / ResponsepostMessagewindow.namelocation.searchlocation.href document.writeevallocation.hrefinnerHTML setIntervalFunctionsetTimeout攻撃者のコントロールできる文字列 文字列からHTMLを生成したりコードとして実行する箇所ソース シンク
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaDOM-based XSS対策文字列ではなく正しくDOMを操作するtextContentやsetAttributeなどを用いるリンク生成時はhttp://あるいはhttp://のみに制限するjavascript:スキームなどを生成させないJSライブラリの更新も忘れずに。JSライブラリにDOM-based XSSが存在することもあるJavaScriptセキュリティの基礎知識:連載|gihyo.jp … 技術評論社 https://gihyo.jp/dev/serial/01/javascript-security最近のJavaScriptフレームワークでのXSS | ">はい https://blog.ssrf.in/post/modern-javascript-framework-xss/クリック!
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokamXSS – Mutation-based XSSHTMLElementから文字列、文字列からHTMLElementへの変換は非対称となる場合があるString HTMLElementHTMLElement異なるHTML// 古いIEで発見されたmXSSの始祖...div2.innerHTML = div1.innerHTML; // となるmXSS Attacks: Attacking well-secured Web-Applications by using innerHTM Mutations https://cure53.de/fp170.pdf文字列からHTMLを組み立てる話 http://utf-8.jp/public/20140807/shibuyaxss.pdf
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokamXSS – Mutation-based XSSIEだけの問題ではない<a id="">...div2.innerHTML = div1.innerHTML; // 脆弱性ありWrite-up of DOMPurify 2.0.0 bypass using mutation XSS https://research.securitum.com/dompurify-bypass-using-mxss/▼▼▼<br/><a id="">▼<a id=""">"
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokamXSS – Mutation-based XSS対策 : HTMLElementを文字列として操作しないinnerHTMLのコピーではなくcloneNodeを使うiframe sandboxを使うDOMPurifyなどのmXSSを考慮したライブラリを使うGitHub - cure53/DOMPurify https://github.com/cure53/DOMPurifyHTML5 and Security Part 4 : DOM based XSS http://utf-8.jp/public/20140908/owasp-hasegawa.pdf
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaオープンリダイレクト
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaオープンリダイレクト攻撃者が指定した任意のサイトにリダイレクトさせられる脆弱性// 脆弱なコード例// http://example.jp/#/next/page など自サイト内の遷移を想定const url = decodeURIComponent(location.hash);if (url.charAt(0) === '/') {location.href = decodeURIComponent(location.hash);}攻撃者が http://example.jp/#//evil.example.com/ などを与えると他のサイトにリダイレクトされてしまう
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuoka対策URLインターフェースを使ってオリジンを確認する// http://example.jp/#/next/page など自サイト内のみ遷移可能const url = new URL(decodeURIComponent(location.hash), location.href);if (url.origin === location.origin) {location.href = decodeURIComponent(location.hash);}
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaオリジン間の保護のしくみ
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaオリジン間の保護のしくみオリジン間でデータを保護するための様々な仕組みが用意されているX-Frame-Options will soon dieCSP – Content-Security-PolicyCORS – Cross-Origin Resource SharingCORP – Cross-Origin Resource PolicyCORB – Cross-Origin Read BlockingSameSite Cookie
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaX-Frame-Optionsクリックジャッキングを防ぐためのレスポンスヘッダー指定することで、同一オリジン以外のページからframe/iframe等で埋め込むことができなくなる…が、徐々に規格が縮退方向これからはCSPの frame-ancestors を使うのがいいHTTP/1.1 200 OKContent-Type: text/html; charset=utf-8X-Frame-Options: sameoriginX-Frame-Options: Allow-From ディレクティブが削除されました | Firefox サイト互換性情報https://www.fxsitecompat.dev/ja/docs/2019/x-frame-options-allow-from-directive-has-been-removed/
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaCSP – Content-Security-Policyレスポンスヘッダーで指定することでリソースの読み込み元を制限できる リソースはデフォルトで自ドメインに限定される 画像は任意のサイトから取得可能 それ以外のオリジンからのリソースは読み込まれない。インラインのスクリプトも動作しない攻撃者がXSSで挿入したスクリプトは動かなくなるHTTP/1.1 200 OKContent-Type: text/html; charset=utf-8Content-Security-Policy: default-src 'self'; img-src *alert(1) // 動かない // 動かない // 動く
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaCSP – Content-Security-Policy違反時のレポート送信ブロックせずレポート送信のみ様々なソース指定フレームの親の制限フォームの送信先の制限Content-Security-Policy: default-src 'self'; report-uri https://example.jp/Content-Security-Policy-Report-Only: default-src 'self'; report-uri https://example.jp/コンテンツセキュリティポリシー (CSP) - HTTP | MDN https://developer.mozilla.org/ja/docs/Web/HTTP/CSPContent-Security-Policy - HTTP | MDN https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Content-Security-Policyimg-src / media-src / font-src / script-src / style-src / ....Content-Security-Policy: frame-ancestors 'self' https://example.jpContent-Security-Policy: form-action 'self' https://example.jp
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaCSP – Content-Security-Policy適切にCSPを設定することでXSSの脅威を大きく低減することが可能report-onlyであっても攻撃を早い段階で把握可能許可したサイト上にDOM-based XSSのある古いJSライブラリが残らないように注意example.jp上にXSSのある古いJSライブラリが存在しているとCSPをバイパスされてしまうContent-Security-Policy: script-src https://example.jp
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaCORS – Cross-Origin Resource Sharing他のオリジンからデータを読んでいいかの許可を与えるGET / HTTP/1.1Host: example.jphtpps://example.jp/ htpps://sub.example.jp/fetch('//sub.example.jp/').then(res => res.text()).then(text => ...);GET / HTTP/1.1Host: sub.example.jpOrigin: https://example.jpHTTP/1.1 200 OKContent-Type: text/plainAccess-Control-Allow-Origin: https://example.jpオリジン間リソース共有 (CORS) - HTTP | MDNhttps://developer.mozilla.org/ja/docs/Web/HTTP/CORSfetch('//sub.example.jp/').then(res => res.text()).then(text => ...);
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaCORS – Cross-Origin Resource SharingOrigin:ヘッダー自体は攻撃者は自由に送信可能ブラウザー内で読み込ませないために使う(受動的攻撃への対策)機密情報に対しての認証は別途必要$ wget --header='Origin: https://example.jp' https://sub.example.jp/fetch('https://sub.example.jp/', {credentials: 'include'}).then(...)GET / HTTP/1.1Host: sub.example.jpCookie: session=0123456789ABCDEFOrigin: https://example.jpHTTP/1.1 200 OKContent-Type: text/plainAccess-Control-Allow-Origin: https://example.jpAccess-Control-Allow-Credentils: trueAccess-Control-Allow-Credentials - HTTP | MDN https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Access-Control-Allow-credentials
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaCORS – Cross-Origin Resource SharingCORSで指定することでクロスオリジンなJSからリソースを操作することができるAccess-Control-* レスポンスヘッダーで細かな制御が可能XHR / fetch APIだけでなくimgやvideo要素でのcrossorigin属性も利用可能特定条件を満たさない場合(Content-Typeが標準的でない等)、プリフライトリクエストと呼ばれるOPTIONSメソッドが事前に発行される(今日は説明を省略)画像の読み込みに認証付きのCORS通信が使われ、画像提供側がACAOヘッダーを適切に返せば画像データをJSから操作可能になる
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaCORP – Cross-Origin Resource Policy他サイトからの画像やJSの読み取りを制限するこのリソースは同一オリジンからのみ読み込みが可能潜在的なサイドチャンネル攻撃への対策HTTP/1.1 200 OKContent-Type: text/plainCross-Origin-Resource-Policy: same-origin攻撃者は罠サイト上で example.jp の画像やスクリプトを読みこみ他の脆弱性(Meltdown/Spectre等)と組み合わせて内容を盗み見ようとするCross-Origin Resource Policy (CORP) - HTTP | MDN https://developer.mozilla.org/en-US/docs/Web/HTTP/Cross-Origin_Resource_Policy_(CORP)
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaCORB – Cross-Origin Read Blockingクロスオリジンでのリソースの読み込み時にContent-Typeが不一致であれば読み込みをブロックする機能JavaScriptや画像としてJSONやHTMLを読み込むのを防ぐCORPと同様に潜在的なサイドチャンネル攻撃への対策レスポンスヘッダーの指定などは不要自動でブロックされる// ブロックされるCross-Origin Read Blocking (CORB) - Chrome Platform Status https://www.chromestatus.com/feature/56297098240327683.5. CORB - Fetch Standard https://fetch.spec.whatwg.org/#corb
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaCSP, CORS, CORP, CORBの位置付け攻撃者の作成した罠サイト経由でデータを読み込まれることへの防御機構が充実攻撃者による罠サイトhtpps://攻撃者.jp/攻撃対象となる正規サイトhtpps://example.jp/CORS CORPCORB攻撃者による罠サイトhtpps://攻撃者.jp/攻撃対象となる正規サイトhtpps://example.jp/CSPimg, script,iframe, ...XSS, form,...CSPframe-ancestors
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaSameSite CookieCookieの送信を同一サイト内に限定する仕組みサイトが異なるリソースからの や XHR、fetch などでCookieが送信されなくなる strictクロスサイトでのCookieを一切送信しなくなる laxリンククリックでのページ遷移など(top-level navigation)を除きCookieを送信しなくなる。、 などではCookieが送信されるSet-Cookie: session=0123456789ABCDEF; httponly; secure; samesite=strictSet-Cookie: session=0123456789ABCDEF; httponly; secure; samesite=laxdraft-ietf-httpbis-rfc6265bis-03 - Cookies: HTTP State Management Mechanism https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-5.3.7
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaSameSite Cookie攻撃者の作成した罠ページからのiframeやscript、formpostなどでCookieが送信されなくなるCSRFへの対策となるクロスオリジンでのデータ漏洩を低減させる今後、各ブラウザーのCookieは samesite=lax がデフォルトになるChrome、Firefox、Edgeなどは、IETFの提案であるIncrementally Better Cookiesに沿ってデフォルトの動作を変更し、次のようにします。① SameSite 属性のないCookieは SameSite=Lax として扱われ、デフォルトの動作でCookieをファーストパーティコンテキストのみに制限されます。② クロスサイトで使用するCookieには明示的に SameSite=None; Secure を指定することでサードパーティのコンテキストに含めることができます。これは、Chrome 80のデフォルトの動作になり、2020年2月の安定版リリースが予定されています。現在、クロスサイトでの使用を目的としたCookieを提供している場合、新しいデフォルトをサポートするには、その日までに変更する必要があります。 SameSite cookie recipes https://web.dev/samesite-cookie-recipes/
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaまとめ
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuokaまとめ静的なHTML+JSだけでもセキュリティの問題が発生するDOM-based XSS等セキュリティの境界条件としてオリジンという概念が使われるオリジン = プロトコル + ホスト + ポートオリジン間のデータ保護の仕組みが多数あるCSP、CORS、CORP、CORB、SameSite Cookie今日紹介できなかったものSRI、Fetch metadata、XS-Search、XS-Leaks、...
Secure Sky Technology Inc. Frontend Conference Fukuoka 2019 #fec_fukuoka質問?[email protected]@hasegawayosukeセキュアスカイ・テクノロジー 検索