SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
Webセキュリティと
W3CとIETFの仕様
Shibuya.XSS techtalk #9
@flano_yuki
自己紹介
- ゆき ( @flano_yuki )
- 趣味でW3CとIETFの仕様を読んでブログに書いてる
- IETFはオフラインミーティングに数回参加
- たまに脆弱性報告したり (CVE番号発行:1件)
- 本業はインフラエンジニア
@flano_yuki
今日お話すること
- 個人的に気になってる、W3CやIETFで議論されてる仕様を紹介します
- 仕様は策定中のものです、大いに変わる可能性があります
- 標準化に至らないものや、実装されないものもあるでしょう
(紹介しきれないものも沢山あります)
標準化というと敷居が高そうですが、少しでも楽しそうと思って頂ければ幸いです。
興味ある人、詳しい人いましたら、是非お声がけください><;
Overview W3C
- W3C
- Web Apprication Security WG (WebAppSec)
- CSP Level 3
- CSP Embedded Enforcement
- Clear Site Data
- Suborigins
- Web Incubator CG (WICG)
- HSTS Priming
- CORS and RFC1918
- Isolated Origins
- Origin Policy
Overview IETF
- IETF
- Httpbis WG
- Cookie Prefixes
- Same-Site Cookies
- Deprecate modification of 'secure' cookies from non-secure origins
- sunset4(?)
- Let 'localhost' be localhost.
- etc,,,
W3Cの仕様紹介
Content Security Policy Level 3 (1つめ)
- CSPの最新仕様、幾つかの機能追加など (13項目の変更点)
- http://example.com:80 表記が、https://example.com:443 にもマッチ
- strict-dynamic
- 指定:Content-Security-Policy: script-src 'nonce-DhcnhD3khTMePg...' 'strict-dynamic'
- <script src="https://example.com/script.js" nonce="DhcnhD3khTMePg..." >
- disown-opener
- window.openerをnullにする。他のブラウジングコンテキストから制御さ
れないようにする
- navigation-to
- ドキュメントがa, form, window.locationなどでナビゲーションできるURL
を制限する
- report-sample
- CSPに違反したスクリプトの内容を、Report APIで投げる
CSP Embedded Enforcement (2つめ)
埋め込む側が、iframeの中のコンテンツにCSPをつけるように要請する
a-example.comがiframeで
b-example.comを埋め込んでいる
1. HTMLを取得する
2. HTMLのiframeにcsp attributeが
ついてる
3. ブラウザは、そのポリシーを
Embedding-CSPヘッダにつけて送
信する
4. Embedding-CSPで指定された、ポ
リシーをCSPで指定する
Clear Site Data (3つめ)
サーバから、クライアントのCookieやキャッシュをクリアできるようにする仕様
不要なデータは消しておきたいが、覚えておくのは難しかった
Clear-Site-Data: domStorage cookies executionContexts cache;
includeSubdomains
消せるもの
- domStorage
- cookies
- cache
- executionContexts
Suborigins (4つめ)
同一オリジンで複数のアプリケーション提供される場合がある(google mapとか)一つの
オリジンでも、サブオリジンを指定し別オリジンとして扱えるようにする
HTTPヘッダでsuboriginを指定
HTTP/1.1 200 OK
…
suborigin: testing
Access-Control-Allow-Suborigin
CORS時の許可
HSTS Priming (5つめ)
Mixed Contentsでブロックする前に、該当リソースへHEADリクエストしてHSTSヘッダ
がついていれば、httpsでアクセスする。
<script src="http://origin-b/widget.js"></script>
HEAD / HTTP/1.1
Host: origin-b
...
HTTP/1.1 200 OK
...
Strict-Transport-Security: max-age=10886400;
1. https://で非httpsのリソースを読み
込もうとする
2. HEADリクエスを送る
3. HSTSのヘッダが付いてきたら、
HTTPSでアクセスし直すので、 Mixed
Contentsによるブロックを回避できる
CORS and RFC1918 (6つめ)
パブリックなネットワークから、ローカルネットワークへのCSRFをできないようにする。
CORSのpreflightのように、Access-Control-Allow-Externalをつけて明示的に許可す
る 。
Isolated Origins (7つめ)
セキュリティ要件の高いサイトを、悪意あるページなど、他のオリジンから隔離する仕様
- HTTPヘッダで「Isoration = 1」を受け取ると、UAは以下のように動作する
- Content-Security-Policy:frame-ancestors 'self'が各リソースで設定されてい
るかのように動作する
- window.topまたはwindow.parentへアクセスできない
- 各リンクとopen()でnoopenerが指定されたかのように動作する
- same-site cookies が指定されたかのように動作する
- isolated originへのナビゲーションは通常失敗する
allowIsolatedNavigation()
- 実行プロセスを分ける(実装次第)
Origin Policy(8つめ)
オリジン全体にポリシーを適応できるようにする仕様
HTTPヘッダでポリシー名を指定し、規定の場所にポリシーを置いておく
HTTP/1.1 200 OK
…
Sec-Origin-Policy: "policy-1"
{
"headers": [
{
"name": "Content-Security-Policy",
"value": "script-src 'self' https://cdn.example.com",
"type": "fallback"
},
{
"name": "Referrer-Policy",
"value": "origin-when-cross-origin",
"type": "fallback"
}
….
https://example.com/.well-known/origin-policy/policy-1HTTPレスポンス
(サイト全体にヘッダを適用する汎用的な仕
様も Site-Wide HTTP Headers )
IETFの仕様紹介
Cookie Prefixes (1つめ)
- Cookieについてる属性を確かなものにする
- 共有されているCookieについてる属性はサーバ側から確認できない
- プレフィックスに対応する属性がついてることが保証される
Set-Cookie: __Secure-SID=12345; Secure; Domain=example.com
- __Secure: Secure属性がついてること
- __Host: Domainが指定され、Pathが “/”
Same-Site Cookies (2つめ)
- Same-Siteへのリクエスト時にのみ提出されるようにする、”Same-Site” 属性
<html>
<title>csrf</title>
<img src=”example.com” >
</html>
attacker.com
このリクエストに
Cookieが付かない
example.com
Set-Cookie: SID=31d4d96e407aad42; SameSite=Strict
- Strict、クロスサイトのリクエストをブロック
- Lax、GET,HEAD,OPTIONSかつ
top-level browsing context のとき
Deprecate modification of 'secure' cookies from non-secure origins (3つめ)
Secure属性のあるCookieを、非セキュアなページから上書きできないようにする
- https://example.com で、secure属性の付いたCookieを発行したあと
- http://example.comから、同名のCookieで上書きできないようにする
Let 'localhost' be localhost. (4つめ)
localhost をループバックアドレスにする仕様
- 現状、W3Cのsecure contextの仕様は、”127.0.0.1” or “::1/128”
- secure contextで “localhost” をsecure contextにしたいというモチベーション
- 一方、RFC6761の仕様は”localhost”に対して、ループバックアドレスを返すことは
SHOULDとなってる(MUSTではない)
- “localhost”がループバックアドレスを返す事を”MUST”に変更する仕様
おわりに
それぞれ、最新仕様の追いかけ方
- W3C
- Mailing List: https://lists.w3.org/Archives/Public/public-webappsec/
- リポジトリ
- https://github.com/w3c
- https://github.com/wicg
- ブラウザのセキュリティ系Mailing Listもおすすめ
- 今日紹介したものは、だいたい GoogleのMike West氏が書いてる。アクティビティ要チェック
- IETF
- Mailing List: https://lists.w3.org/Archives/Public/ietf-http-wg/
- リポジトリ: https://github.com/httpwg
おわり
Token Binding over HTTP
- CookieやOAuthトークンといった物を、本人しか使えないようにできる
- TLS Exported Keying Material より生成された鍵で署名することで、その鍵を持っ
てる人以外が使えないようになる
OAuthなどでの利用が議論されているが、単純にCookieなどでも利用できる
CSP Pinning (非アクティブ)
- ページ毎に毎回 CSPヘッダを送信しなくて良くする仕様 (not active)
Content-Security-Policy-Pin: max-age: 10886400;
includeSubDomains;
default-src https:;
referrer no-referrer;
report-uri /csp-endpoint/pinned
CSP Cookie Controls (非アクティブ)
- Cookieの属性をCSPで制限をかける (not active)
Content-Security-Policy: cookie-scope host secure
- host: “host only”
- http: http only
- none: すべてのcookieをブロック
- secure: secure属性

Más contenido relacionado

La actualidad más candente

La actualidad más candente (18)

SELinuxによる攻撃防止の例
SELinuxによる攻撃防止の例SELinuxによる攻撃防止の例
SELinuxによる攻撃防止の例
 
Play_using_Proxy
Play_using_ProxyPlay_using_Proxy
Play_using_Proxy
 
Oss dev-04
Oss dev-04Oss dev-04
Oss dev-04
 
第一回 社内勉強会 PHP Application Security Checklist に学ぶ PHP セキュリティ (Excerpt)
第一回 社内勉強会 PHP Application Security Checklist に学ぶ PHP セキュリティ (Excerpt)第一回 社内勉強会 PHP Application Security Checklist に学ぶ PHP セキュリティ (Excerpt)
第一回 社内勉強会 PHP Application Security Checklist に学ぶ PHP セキュリティ (Excerpt)
 
徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ
 
Web packaging IETF 側
Web packaging IETF 側Web packaging IETF 側
Web packaging IETF 側
 
Webアプリ開発者のためのHTML5セキュリティ入門
Webアプリ開発者のためのHTML5セキュリティ入門Webアプリ開発者のためのHTML5セキュリティ入門
Webアプリ開発者のためのHTML5セキュリティ入門
 
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
 
講座Linux入門・サーバOSとしてのLinux
講座Linux入門・サーバOSとしてのLinux講座Linux入門・サーバOSとしてのLinux
講座Linux入門・サーバOSとしてのLinux
 
AWSのRedHatにMySQL最速インストール
AWSのRedHatにMySQL最速インストールAWSのRedHatにMySQL最速インストール
AWSのRedHatにMySQL最速インストール
 
ConoHaオブジェクトストレージ 利用ケース
ConoHaオブジェクトストレージ 利用ケースConoHaオブジェクトストレージ 利用ケース
ConoHaオブジェクトストレージ 利用ケース
 
SSHの便利な使い方〜マイナーな小技編〜
SSHの便利な使い方〜マイナーな小技編〜SSHの便利な使い方〜マイナーな小技編〜
SSHの便利な使い方〜マイナーな小技編〜
 
Rustを勉強してみた!
Rustを勉強してみた!Rustを勉強してみた!
Rustを勉強してみた!
 
「おれのクラウド」今日から始めるオブジェクトストレージ
「おれのクラウド」今日から始めるオブジェクトストレージ「おれのクラウド」今日から始めるオブジェクトストレージ
「おれのクラウド」今日から始めるオブジェクトストレージ
 
名古屋セキュリティ勉強会LT~学内CTFの話~
名古屋セキュリティ勉強会LT~学内CTFの話~名古屋セキュリティ勉強会LT~学内CTFの話~
名古屋セキュリティ勉強会LT~学内CTFの話~
 
ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000
ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000
ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000
 
フルオープンソースでここまで出来る。OpenStackの構築と運用
フルオープンソースでここまで出来る。OpenStackの構築と運用フルオープンソースでここまで出来る。OpenStackの構築と運用
フルオープンソースでここまで出来る。OpenStackの構築と運用
 
RoR周辺知識15項目
RoR周辺知識15項目RoR周辺知識15項目
RoR周辺知識15項目
 

Destacado

Building Great Products and Happy Teams with Experiments
Building Great Products and Happy Teams with ExperimentsBuilding Great Products and Happy Teams with Experiments
Building Great Products and Happy Teams with Experiments
Dave Pryce
 

Destacado (20)

Ietf97 ソウル報告
Ietf97 ソウル報告Ietf97 ソウル報告
Ietf97 ソウル報告
 
kintoneの検索高速化への取り組み
kintoneの検索高速化への取り組みkintoneの検索高速化への取り組み
kintoneの検索高速化への取り組み
 
initramfsについて
initramfsについてinitramfsについて
initramfsについて
 
トランザクションの並行処理制御
トランザクションの並行処理制御トランザクションの並行処理制御
トランザクションの並行処理制御
 
【kintone便利に使おうシリーズ】[vol.07 プロセス管理]
【kintone便利に使おうシリーズ】[vol.07 プロセス管理]【kintone便利に使おうシリーズ】[vol.07 プロセス管理]
【kintone便利に使おうシリーズ】[vol.07 プロセス管理]
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
 
Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486Elixir-Conf-Japan-2017-session-ohr486
Elixir-Conf-Japan-2017-session-ohr486
 
Chatbot for kintone Apps on Facebook Messenger
Chatbot for kintone Apps on Facebook MessengerChatbot for kintone Apps on Facebook Messenger
Chatbot for kintone Apps on Facebook Messenger
 
OWASP Testing Guide からはじめよう - セキュリティ診断技術の共有、そして横展開
OWASP Testing Guide からはじめよう - セキュリティ診断技術の共有、そして横展開OWASP Testing Guide からはじめよう - セキュリティ診断技術の共有、そして横展開
OWASP Testing Guide からはじめよう - セキュリティ診断技術の共有、そして横展開
 
Pythonで動かして学ぶ機械学習入門_予測モデルを作ってみよう
Pythonで動かして学ぶ機械学習入門_予測モデルを作ってみようPythonで動かして学ぶ機械学習入門_予測モデルを作ってみよう
Pythonで動かして学ぶ機械学習入門_予測モデルを作ってみよう
 
Type-safe Web APIs with Protocol Buffers in Swift at iOSCon
Type-safe Web APIs with Protocol Buffers in Swift at iOSConType-safe Web APIs with Protocol Buffers in Swift at iOSCon
Type-safe Web APIs with Protocol Buffers in Swift at iOSCon
 
Baseball Play Study 2017春(2017年春 読むべき野球本はこれだ!)
Baseball Play Study 2017春(2017年春 読むべき野球本はこれだ!) Baseball Play Study 2017春(2017年春 読むべき野球本はこれだ!)
Baseball Play Study 2017春(2017年春 読むべき野球本はこれだ!)
 
A Publisher's Survival Guide for the Platform Era
A Publisher's Survival Guide for the Platform EraA Publisher's Survival Guide for the Platform Era
A Publisher's Survival Guide for the Platform Era
 
アルゴリズム取引のシステムを開発・運用してみて分かったこと
アルゴリズム取引のシステムを開発・運用してみて分かったことアルゴリズム取引のシステムを開発・運用してみて分かったこと
アルゴリズム取引のシステムを開発・運用してみて分かったこと
 
FrenchWeb 500, le classement des entreprises de la tech française
FrenchWeb 500, le classement des entreprises de la tech françaiseFrenchWeb 500, le classement des entreprises de la tech française
FrenchWeb 500, le classement des entreprises de la tech française
 
Amazon AI (March 2017)
Amazon AI (March 2017)Amazon AI (March 2017)
Amazon AI (March 2017)
 
Building Great Products and Happy Teams with Experiments
Building Great Products and Happy Teams with ExperimentsBuilding Great Products and Happy Teams with Experiments
Building Great Products and Happy Teams with Experiments
 
The Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer InterviewsThe Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer Interviews
 
20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 

Similar a Webセキュリティと W3CとIETFの仕様

OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
irix_jp
 
Webアプリって奥が深いんです
Webアプリって奥が深いんですWebアプリって奥が深いんです
Webアプリって奥が深いんです
abend_cve_9999_0001
 
Ssl証明書を設定したらapacheが起動しない?
Ssl証明書を設定したらapacheが起動しない?Ssl証明書を設定したらapacheが起動しない?
Ssl証明書を設定したらapacheが起動しない?
denet1999
 
Silverlightをあれこれ紹介
Silverlightをあれこれ紹介Silverlightをあれこれ紹介
Silverlightをあれこれ紹介
mizusawa
 
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみたWebサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
do_aki
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
 

Similar a Webセキュリティと W3CとIETFの仕様 (20)

配布用Cacti running with cherokee
配布用Cacti running with cherokee配布用Cacti running with cherokee
配布用Cacti running with cherokee
 
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
 
Webアプリって奥が深いんです
Webアプリって奥が深いんですWebアプリって奥が深いんです
Webアプリって奥が深いんです
 
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料
 
Ssl証明書を設定したらapacheが起動しない?
Ssl証明書を設定したらapacheが起動しない?Ssl証明書を設定したらapacheが起動しない?
Ssl証明書を設定したらapacheが起動しない?
 
Silverlightをあれこれ紹介
Silverlightをあれこれ紹介Silverlightをあれこれ紹介
Silverlightをあれこれ紹介
 
[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
 
Osoljp201204
Osoljp201204Osoljp201204
Osoljp201204
 
初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
 
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月
 
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみたWebサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
 
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
 
HP Helion 標準搭載!! OpenStack TripleO解説課題 – OpenStack最新情報セミナー 2015年2月
HP Helion 標準搭載!! OpenStack TripleO解説課題 – OpenStack最新情報セミナー 2015年2月HP Helion 標準搭載!! OpenStack TripleO解説課題 – OpenStack最新情報セミナー 2015年2月
HP Helion 標準搭載!! OpenStack TripleO解説課題 – OpenStack最新情報セミナー 2015年2月
 
使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!
 
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイドOpenstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
 

Último

Último (7)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

Webセキュリティと W3CとIETFの仕様

  • 2. 自己紹介 - ゆき ( @flano_yuki ) - 趣味でW3CとIETFの仕様を読んでブログに書いてる - IETFはオフラインミーティングに数回参加 - たまに脆弱性報告したり (CVE番号発行:1件) - 本業はインフラエンジニア @flano_yuki
  • 3. 今日お話すること - 個人的に気になってる、W3CやIETFで議論されてる仕様を紹介します - 仕様は策定中のものです、大いに変わる可能性があります - 標準化に至らないものや、実装されないものもあるでしょう (紹介しきれないものも沢山あります) 標準化というと敷居が高そうですが、少しでも楽しそうと思って頂ければ幸いです。 興味ある人、詳しい人いましたら、是非お声がけください><;
  • 4. Overview W3C - W3C - Web Apprication Security WG (WebAppSec) - CSP Level 3 - CSP Embedded Enforcement - Clear Site Data - Suborigins - Web Incubator CG (WICG) - HSTS Priming - CORS and RFC1918 - Isolated Origins - Origin Policy
  • 5. Overview IETF - IETF - Httpbis WG - Cookie Prefixes - Same-Site Cookies - Deprecate modification of 'secure' cookies from non-secure origins - sunset4(?) - Let 'localhost' be localhost. - etc,,,
  • 7. Content Security Policy Level 3 (1つめ) - CSPの最新仕様、幾つかの機能追加など (13項目の変更点) - http://example.com:80 表記が、https://example.com:443 にもマッチ - strict-dynamic - 指定:Content-Security-Policy: script-src 'nonce-DhcnhD3khTMePg...' 'strict-dynamic' - <script src="https://example.com/script.js" nonce="DhcnhD3khTMePg..." > - disown-opener - window.openerをnullにする。他のブラウジングコンテキストから制御さ れないようにする - navigation-to - ドキュメントがa, form, window.locationなどでナビゲーションできるURL を制限する - report-sample - CSPに違反したスクリプトの内容を、Report APIで投げる
  • 8. CSP Embedded Enforcement (2つめ) 埋め込む側が、iframeの中のコンテンツにCSPをつけるように要請する a-example.comがiframeで b-example.comを埋め込んでいる 1. HTMLを取得する 2. HTMLのiframeにcsp attributeが ついてる 3. ブラウザは、そのポリシーを Embedding-CSPヘッダにつけて送 信する 4. Embedding-CSPで指定された、ポ リシーをCSPで指定する
  • 9. Clear Site Data (3つめ) サーバから、クライアントのCookieやキャッシュをクリアできるようにする仕様 不要なデータは消しておきたいが、覚えておくのは難しかった Clear-Site-Data: domStorage cookies executionContexts cache; includeSubdomains 消せるもの - domStorage - cookies - cache - executionContexts
  • 11. HSTS Priming (5つめ) Mixed Contentsでブロックする前に、該当リソースへHEADリクエストしてHSTSヘッダ がついていれば、httpsでアクセスする。 <script src="http://origin-b/widget.js"></script> HEAD / HTTP/1.1 Host: origin-b ... HTTP/1.1 200 OK ... Strict-Transport-Security: max-age=10886400; 1. https://で非httpsのリソースを読み 込もうとする 2. HEADリクエスを送る 3. HSTSのヘッダが付いてきたら、 HTTPSでアクセスし直すので、 Mixed Contentsによるブロックを回避できる
  • 12. CORS and RFC1918 (6つめ) パブリックなネットワークから、ローカルネットワークへのCSRFをできないようにする。 CORSのpreflightのように、Access-Control-Allow-Externalをつけて明示的に許可す る 。
  • 13. Isolated Origins (7つめ) セキュリティ要件の高いサイトを、悪意あるページなど、他のオリジンから隔離する仕様 - HTTPヘッダで「Isoration = 1」を受け取ると、UAは以下のように動作する - Content-Security-Policy:frame-ancestors 'self'が各リソースで設定されてい るかのように動作する - window.topまたはwindow.parentへアクセスできない - 各リンクとopen()でnoopenerが指定されたかのように動作する - same-site cookies が指定されたかのように動作する - isolated originへのナビゲーションは通常失敗する allowIsolatedNavigation() - 実行プロセスを分ける(実装次第)
  • 14. Origin Policy(8つめ) オリジン全体にポリシーを適応できるようにする仕様 HTTPヘッダでポリシー名を指定し、規定の場所にポリシーを置いておく HTTP/1.1 200 OK … Sec-Origin-Policy: "policy-1" { "headers": [ { "name": "Content-Security-Policy", "value": "script-src 'self' https://cdn.example.com", "type": "fallback" }, { "name": "Referrer-Policy", "value": "origin-when-cross-origin", "type": "fallback" } …. https://example.com/.well-known/origin-policy/policy-1HTTPレスポンス (サイト全体にヘッダを適用する汎用的な仕 様も Site-Wide HTTP Headers )
  • 16. Cookie Prefixes (1つめ) - Cookieについてる属性を確かなものにする - 共有されているCookieについてる属性はサーバ側から確認できない - プレフィックスに対応する属性がついてることが保証される Set-Cookie: __Secure-SID=12345; Secure; Domain=example.com - __Secure: Secure属性がついてること - __Host: Domainが指定され、Pathが “/”
  • 17. Same-Site Cookies (2つめ) - Same-Siteへのリクエスト時にのみ提出されるようにする、”Same-Site” 属性 <html> <title>csrf</title> <img src=”example.com” > </html> attacker.com このリクエストに Cookieが付かない example.com Set-Cookie: SID=31d4d96e407aad42; SameSite=Strict - Strict、クロスサイトのリクエストをブロック - Lax、GET,HEAD,OPTIONSかつ top-level browsing context のとき
  • 18. Deprecate modification of 'secure' cookies from non-secure origins (3つめ) Secure属性のあるCookieを、非セキュアなページから上書きできないようにする - https://example.com で、secure属性の付いたCookieを発行したあと - http://example.comから、同名のCookieで上書きできないようにする
  • 19. Let 'localhost' be localhost. (4つめ) localhost をループバックアドレスにする仕様 - 現状、W3Cのsecure contextの仕様は、”127.0.0.1” or “::1/128” - secure contextで “localhost” をsecure contextにしたいというモチベーション - 一方、RFC6761の仕様は”localhost”に対して、ループバックアドレスを返すことは SHOULDとなってる(MUSTではない) - “localhost”がループバックアドレスを返す事を”MUST”に変更する仕様
  • 20. おわりに それぞれ、最新仕様の追いかけ方 - W3C - Mailing List: https://lists.w3.org/Archives/Public/public-webappsec/ - リポジトリ - https://github.com/w3c - https://github.com/wicg - ブラウザのセキュリティ系Mailing Listもおすすめ - 今日紹介したものは、だいたい GoogleのMike West氏が書いてる。アクティビティ要チェック - IETF - Mailing List: https://lists.w3.org/Archives/Public/ietf-http-wg/ - リポジトリ: https://github.com/httpwg
  • 22. Token Binding over HTTP - CookieやOAuthトークンといった物を、本人しか使えないようにできる - TLS Exported Keying Material より生成された鍵で署名することで、その鍵を持っ てる人以外が使えないようになる OAuthなどでの利用が議論されているが、単純にCookieなどでも利用できる
  • 23. CSP Pinning (非アクティブ) - ページ毎に毎回 CSPヘッダを送信しなくて良くする仕様 (not active) Content-Security-Policy-Pin: max-age: 10886400; includeSubDomains; default-src https:; referrer no-referrer; report-uri /csp-endpoint/pinned
  • 24. CSP Cookie Controls (非アクティブ) - Cookieの属性をCSPで制限をかける (not active) Content-Security-Policy: cookie-scope host secure - host: “host only” - http: http only - none: すべてのcookieをブロック - secure: secure属性