RECRUIT Technologies NIGHT vol.3に参加した際のセッションの内容を記録。
イベント概要
- CSPの代表的ディレクティブや、実際に収集されるレポートなどについての解説
- 近年のWebブラウザに搭載されている技術を、その脆弱性とともに紹介
目的
・webのセキュリティ技術の勉強会だっため、知らない技術の情報を得るため
・業務上などでも何か参考になる情報があると期待して
CSPによる防御とリアルワールドレポート収集(Jxck氏)
登壇時のスライド:https://speakerdeck.com/jxck/csp-and-real-world-reporting
CSP(Content Security Policy)とは?
セキュリティの観点から、コンテンツに対して許可することをポリシー定義することでセキュリティを向上することができる
・ クロスサイトスクリプティング (XSS)を軽減
→インラインで埋め込まれたjavascriptを実行不可にすることが可能
→iframeを埋め込み不可にすることが可能
→mixed contentを不許可にすることが可能
・ パケット盗聴を軽減
→あらゆるコンテンツのドメインを設定可能
→全てのコンテンツをhttps通信をするように指定することが可能
・レポートを受け取ることができる(report-uri.io)
etc
適用方法
・httpsヘッダにContent-Security-Policyを返すように記述する
・metaタグに記述する
レポート
・report-onlyを指定することで、ポリシーを適用したままブロックせずにレポートを受け取ることが可能
・CSPポリシー違反が発生した場合、ブロックすることができ、またレポートを受け取ることが可能
※レポートは、どのポリシー違反が発生したのかは確認できるが、その発生理由は分からない
攻撃なのかそうでないのか、ユーザーがどういう状態になったかなどは分からない
ブログで検証した結果(レポートを収集し確認)
ブログ
・静的サイトジェネレータを使用した静的なサイトでinputタグは使用していないため、xssは起きない想定
設定したポリシー
・コンテンツのドメインを制限
・アナリティクス、youtubeを許可
・アンセーフインラインを指定していない(インラインスクリプトを全てブロック)
・Firefoxの「view-source:」をユーザーが使用する度にレポートが送信された
・テキスト、マークダウン、xmlも同様にレポートが送信された
→ソースをhtmlに成型してブラウザに表示させる。そのhtmlにインラインスタイルが適用されるため
・何かしらの理由でabout:blankになった際にレポートが送信された
・ms-browser-extension(よくわからないがレポートが送信された)
・jQueryを埋め込もうとしてレポートが送信された
総括
・レポートを確認しても何が起こっているのかよく分からない
・ポリシー違反が起きているということは分かるが、そもそも防げているのか分からない
・ブラウザをアレンジして使用いている人たちが不自由になっているだけではないのか
・サイトによって、xssを防ぐことに重きを置くのか、ユーザービリティーをとるのか考えるべき
脆弱性発見者が注目する近年のWeb技術(西村 宗晃 氏)
登壇時のスライド:https://speakerdeck.com/nishimunea/cui-ruo-xing-fa-jian-zhe-kazhu-mu-surujin-nian-falsewebji-shu
脆弱性がいっぱい見つかるであろう技術を紹介
1. Server Push(multipart/x-mixed-replace)
2. Http/2
3. FlyWeb
multipart/x-mixed-replaceに注目している理由
・セキュリティヘッダをよく無視するから
例1. CSPでインラインスクリプトを無視するポリシーを定義しても無視する
chrome、safariではポリシーに従うが、Firefoxは無視する(まだ直っていない脆弱性)
例2. リファラーポリシーヘッダでリファラー送出を禁止にするも、リファラーが送られてしまう
新しいヘッダが登場する度に楽しめる
HTTP/2はコネクションの管理が大変
同じIPアドレス、同じ証明書のCN/SANが含まれているホストの通信であれば、HTTP/2のコネクションを共有してよい
例)google.comのサイトにアクセスして証明書を確認すると関連サイトのドメインが含まれており、その含まれているドメインのサイトであればコネクションを再利用して良い同じリソースを提供する代替サーバの使用をクライアントに提案する
例)~~.ukサーバーに繋いた際に、日本国内内にも同じサービスを提供しているサーバーがあるので、そのサーバーに接続してと提案する(alt-svc headerがクライアントに提案する)
同じ証明書だからといって、同じ権利者とは限らない
FlyWeb
・Mozillaが実施しているWebとデバイスの連携プロジェクトで、webコンテンツとそれにアクセスした人の近くにあるデバイスが連動する
・まだ、実験段階でFirefox Nightlyを使用しないと試すことができない
仕組みは、mDNSとbonjourを組み合わせて実装されている
1. 最初に、PCでサーバーに接続するとjavascriptが落ちてくる
2. Firefox上でmDNSサーバーとwebサーバーが起動する
3. 同じローカルネットワーク内のデバイスがFirefoxに接続することができる
4. webソケットで通信ができる
考察
知らなかった技術や、既存の技術に様々な脆弱性が潜んでいることを知ることができた。
最新の技術をキャッチアップしていく必要性や、脆弱性についての知識の必要性を改めて実感できるイベントだった。