Slide 1

Slide 1 text

セキュアな Cookie の使い方 セッションハイジャック、なりすまし、 情報漏洩を起こさないために Murachi Akira aka Hebikuzure

Slide 2

Slide 2 text

About me • Murachi Akira aka hebikuzure ( 村地 彰 ) • 株式会社エクシードワン 技術フェロー • 株式会社シーピーエス 技術教育スペシャリスト • 専門学校東京テクニカルカレッジ非常勤講師 • Microsoft MVP (Most Valuable Professional) • Since Apr. 2011 ( 12 Years! ) • Award Category: Windows and Device for IT • Expertise • Windows client / user management and security • Microsoft 365, Active Directory, Microsoft Endpoint Manager https://www.linkedin.com/in/akiramurachi/ https://www.facebook.com/amurachi/ https://twitter.com/hebikuzure Murachi Akira aka Hebikuzure 2 23 Oct. 2022

Slide 3

Slide 3 text

内容 Cookie の安全性 中間者による不正取得 XSSによる不正取得 基本的な安全性の確保 攻撃の緩和策 HttpOnly属性 Secure属性 SameSite属性 対策の本質 Murachi Akira aka Hebikuzure 3 23 Oct. 2022

Slide 4

Slide 4 text

Cookie の 安全性 Murachi Akira aka Hebikuzure 4 23 Oct. 2022

Slide 5

Slide 5 text

Cookie の安全性 •Cookie は HTTP ヘッダー •HTTP ヘッダーはテキスト • ヘッダー自体は平文でやりとりされる •JavaScript からの読み書きも可能 • Document.Cookie プロパティ Murachi Akira aka Hebikuzure 5 23 Oct. 2022

Slide 6

Slide 6 text

中間者による不正取得 •罠のプロキシへの誘導 •罠のWi-Fiアクセスポイントへの誘導 •ネットワーク機器への侵入・乗っ取り Cookie Murachi Akira aka Hebikuzure 6 23 Oct. 2022

Slide 7

Slide 7 text

XSSによる不正取得 •XSSでJavaScriptコードをインジェクション •Document.CookieでCookieを読み出し •読み出したCookieを利用して別の攻撃 • セッションハイジャック • なりすまし Murachi Akira aka Hebikuzure 7 23 Oct. 2022

Slide 8

Slide 8 text

CSRF •クロスサイト リクエスト フォージェリ • 誘導リンクやXSSにより意図しないリクエストを発生さ せる • リクエスト先のサイトで意図しない動作(不正な投稿、 データの読み出し、アプリへの指令)が行われる Murachi Akira aka Hebikuzure 8 23 Oct. 2022

Slide 9

Slide 9 text

基本的な 安全性の 確保 Murachi Akira aka Hebikuzure 9 23 Oct. 2022

Slide 10

Slide 10 text

HTTPSの利用 •HTTPSでヘッダーも暗号化される •暗号化された通信の解読は困難 •中間者攻撃で通信内容が取得されてもCookieは 解読されない 暗号化 Murachi Akira aka Hebikuzure 10 23 Oct. 2022

Slide 11

Slide 11 text

Webサイトの脆弱性を無くす •XSSのような脆弱性がCookie取得の起点となる Secure by design の Web サイトを作ろう Murachi Akira aka Hebikuzure 11 23 Oct. 2022

Slide 12

Slide 12 text

そのCookie必要ですか? •Cookieにユーザーの生の個人情報・機密情報を入 れない •クライアント側で情報を保持するための他の方法を 利用する • Session Storage(window.sessionStorage) • Local Storage(window.localStorage) • IndexedDB HTML5以降の モダンブラウザなら 利用可能 Murachi Akira aka Hebikuzure 12 23 Oct. 2022

Slide 13

Slide 13 text

攻撃の 緩和策 Murachi Akira aka Hebikuzure 13 23 Oct. 2022

Slide 14

Slide 14 text

HttpOnly属性 •JavaScriptからCookieにアクセスできなくする •Pros • XSSでDocument.Cookieにアクセスするスクリプト がインジェクションされてもCookieは読み出せない •Cons • XSSでXHRでリクエストを出せば、そのリクエストに Cookieが含まれる場合がある Murachi Akira aka Hebikuzure 14 23 Oct. 2022

Slide 15

Slide 15 text

Secure属性 •HTTPSでのみCookieを送信する •Pros • HTTPでCookieが送信されないので盗聴対策となる •Cons • JavaScriptでの読み出しは防げない Murachi Akira aka Hebikuzure 15 23 Oct. 2022

Slide 16

Slide 16 text

SameSite属性 •Cookieの送信を同一サイト内遷移に制限する • Set-Cookie: flavor=choco; SameSite=Strict Cookieは同じサイト内からのリクエストでのみ送信される • Pros • CSRF対策として有効 • Cons • Strictの場合、クロスサイト リクエストでCookieが送信されないのでユー ザーエクスペリエンスが劣化する (サインイン済みサイトへ別サイト内のリンクから遷移するとサインインして いない状態になる) Murachi Akira aka Hebikuzure 16 23 Oct. 2022

Slide 17

Slide 17 text

SameSite属性の動作 SameSite属性 リクエストの発生場所 Cookie発行サイト Cookie発行サイト以外 トップレベルナビゲーショ ンでGETリクエスト それ以外 Strict 送信される 送信されない 送信されない Lax 送信される 送信される 送信されない None 送信される 送信される 送信される • モダン ブラウザーの既定値はSameSite=Lax • Noneの場合はSecure属性必須 Murachi Akira aka Hebikuzure 17 23 Oct. 2022

Slide 18

Slide 18 text

一つの対策では限界がある •基本的な安全性の確保を実施 •Set-Cookie時にHttpOnly / Secure / Same- Site の各属性を適切に利用する •STS(Strict-Transport-Security)を利用 •CSP(Content Security Policy)も構成 Murachi Akira aka Hebikuzure 18 23 Oct. 2022

Slide 19

Slide 19 text

参考情報(1) • HTTP Cookie の使用 - HTTP | MDN (mozilla.org) https://developer.mozilla.org/ja/docs/Web/HTTP/Cookies • Set-Cookie - HTTP | MDN (mozilla.org) https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Set-Cookie • SameSite cookies - HTTP | MDN (mozilla.org) https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Set-Cookie/SameSite • IPA ISEC セキュア・プログラミング講座:Webアプリケーション編 第4章 セッション対策: セッション乗っ取り:#1 セッションIDとセッションID侵害手口 https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/302.html • IPA ISEC セキュア・プログラミング講座:Webアプリケーション編 第4章 セッション対策: セッション乗っ取り:#3 https:の適切な適用 https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/304.html Murachi Akira aka Hebikuzure 19 23 Oct. 2022

Slide 20

Slide 20 text

参考情報(2) • HTTPSを使ってもCookieの改変は防げないことを実験で試してみた | 徳丸浩の日記 https://blog.tokumaru.org/2013/09/cookie-manipulation-is-possible-even-on-ssl.html • クロスサイトスクリプティング(XSS)対策としてCookieのHttpOnly属性でどこまで安全になるのか https://www.youtube.com/watch?v=4JREwhSC2dQ • とある通販サイトに学ぶ自動ログイン機能のバッドプラクティス | 徳丸浩の日記 https://blog.tokumaru.org/2022/03/blog-post.html • ウェブセキュリティのありがちな誤解を解説する (slideshare.net) https://www.slideshare.net/ockeghem/phpconf2020 • Strict-Transport-Security - HTTP | MDN (mozilla.org) https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Strict-Transport-Security • コンテンツセキュリティポリシー (CSP) - HTTP | MDN (mozilla.org) https://developer.mozilla.org/ja/docs/Web/HTTP/CSP Murachi Akira aka Hebikuzure 20 23 Oct. 2022

Slide 21

Slide 21 text

まとめ Murachi Akira aka Hebikuzure 21 23 Oct. 2022

Slide 22

Slide 22 text

Q&A Murachi Akira aka Hebikuzure 22 23 Oct. 2022