SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
Lightning Talk @ pixiv TECH SALON
pixiv Inc.
2019.3.5
2
● 2018/04 ~
● 技術開発本部 品質改善PJ
● サービスセキュリティ
○ Content Security Policy
○ 脆弱性報奨金制度
● コーポレートセキュリティ
○ CSIRT
● Content Security Policy
○ 💥XSS
● SameSite Cookie
○ 💥CSRF
● => ウェブの多層防御機構(Defense in depth)
3
4
● リソースのフェッチ・実行を制限する
○ スクリプトの実行を防ぐ(*XSSを防ぐ*)
■ script-src, object-src, base-uri
○ コンテンツの改ざんを防ぐ
■ img-src, style-src, frame-src, require-sri-for, etc
○ 通信先を制限する
■ connect-src, form-action, frame-ancestors
5
HTTP/2 200
content-type: text/html
content-security-policy: img-src *.pixiv.net; style-src *.pixiv.net;
<!DOCTYPE html>
<html>
<body>
<img src="https://www.pixiv.net/img/icon.jpg">
<img src="https://evil.example.com/phishing.jpg">
<style src="https://www.pixiv.net/css/app.css"></style>
<style> * { display: none } </style>
</body>
</html>
6
HTTP/2 200
content-type: text/html
content-security-policy: script-src 'nonce-R0hqdW1BYU1LWFo=' 'strict-dynamic'
<!DOCTYPE html>
<html>
<body>
<!-- nonceが正しい => 実行 -->
<script nonce="R0hqdW1BYU1LWFo=" src="/js/app.js"></script>
<script nonce="R0hqdW1BYU1LWFo=">doNiceThings()</script>
<!-- nonceが無い又は間違っている => 実行しない -->
<p>「<script>alert('XSS')</script>」の検索結果</p>
</body>
</html>
7
HTTP/2 200
content-type: text/html
content-security-policy: script-src 'nonce-R0hqdW1BYU1LWFo=' 'strict-dynamic'
<!DOCTYPE html>
<html>
<body>
<!-- nonceが正しい => 実行 -->
<script nonce="R0hqdW1BYU1LWFo=" src="/js/app.js"></script>
<script nonce="R0hqdW1BYU1LWFo=">doNiceThings()</script>
<!-- nonceが無い又は間違っている => 実行しない -->
<p>「<script>alert('XSS')</script>」の検索結果</p>
</body>
</html>
8
?
● CSP Level 3 (まだドラフト) で追加された仕様
● nonceで許可されたscriptから動的に生成されたscriptも実行を許可される
○ createElement('script') -> appendChild()
● これが無いと動かないJSが多い
○ Google Tag Manager
○ Google Maps widget
○ Zendesk widget
○ CSP導入の障壁だったが、クリアされた
9
10
11
● 'strict-dynamic'サポート済みのブラウザ
○ Chrome, Firefox, Opera
○ Safari, Edge / IEは未サポート
● まだユーザーエージェントごとの出し分けが必要
○ nonceが'unsafe-inline'よりも優先されるため
12
13
● CSRFやタイミングアタックの対策
● SameSite属性を付けたcookieはクロスオリジンのリクエストに付与されなくなる
○ Set-Cookie: PHPSESSID=754d3b148d; path=/; secure; HttpOnly; SameSite=Strict
● セッションIDに付ければクロスオリジンで認証が通らない→CSRFが原理的に不可
● うかつに使うと本来セッションが必要な遷移でセッションが消える
○ 関連サイトや検索エンジンからの遷移など
14
15
16
● VRoid Hub
○ セッションIDにSameSite=Lax
○ クロスオリジンのGETは通常通り
POSTはセッションIDが付かない
○ CSRF対策:
カスタムHTTPヘッダ + SameSite cookie
17
● GitHub
○ read-only cookie (通常のセッションID) & write cookie (SameSite=Strict)
○ 従来のセッションID (read-only cookie) はそのまま
○ POSTリクエスト時にwrite cookieの存在を確認し、無ければ弾く
○ RFCでも提案されている方法
○ CSRF対策: CSRFトークン + SameSite cookie
18
● 主要ブラウザは全てサポート済み
● 未サポートであってもビジネスロジックに影響なし
○ cookieが普通のcookieとして扱われるだけ
19
● 包括的な対策
○ 従来のエスケープ処理やCSRFトークンの検証は網羅的な対策が難しい
● Defense in Depth
○ 脆弱性を作り込んでもセーフティネットとして機能する
○ Secure By Defaultのアプローチ
○ 開発者の懸念や手戻りを減らす=> 開発効率向上
20
● ブラウザの新しい防御機構が使用され始めている
● 従来のサーバサイドの脆弱性対策にプラスして包括的な対策が可能
● 数年後のセキュリティスタンダードを見据え、ピクシブでも使用を始めている
21
● Content Security Policy Level 3におけるXSS対策 - pixiv inside
● Strict CSP - Content Security Policy
● AppSec EU 2017 So We Broke All CSPs You Won't Guess What Happened Next
○ https://youtu.be/YBBqtrJmMRc
● Cookie の性質を利用した攻撃とSame Site Cookie の効果 | blog.jxck.io
● Cross-Site Request Forgery is dead!
22
終
制作・著作
23

Weitere ähnliche Inhalte

Was ist angesagt?

【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮Hibino Hisashi
 
Deconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchainDeconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchainTakahiro Hayashida
 
【JAWS-UGコンテナ#14】ETL処理をServerlessにしてみた件
【JAWS-UGコンテナ#14】ETL処理をServerlessにしてみた件【JAWS-UGコンテナ#14】ETL処理をServerlessにしてみた件
【JAWS-UGコンテナ#14】ETL処理をServerlessにしてみた件Hibino Hisashi
 
【YahooJapanMeetup#31LT】ElasticStack on AWS DeepDive
【YahooJapanMeetup#31LT】ElasticStack on AWS DeepDive【YahooJapanMeetup#31LT】ElasticStack on AWS DeepDive
【YahooJapanMeetup#31LT】ElasticStack on AWS DeepDiveHibino Hisashi
 
Logstashを愛して5年、370ページを超えるガチ本を書いてしまった男の話.
Logstashを愛して5年、370ページを超えるガチ本を書いてしまった男の話.Logstashを愛して5年、370ページを超えるガチ本を書いてしまった男の話.
Logstashを愛して5年、370ページを超えるガチ本を書いてしまった男の話.Hibino Hisashi
 
Amazon Elasticsearch Service & Open Distro for Elasticsearch Meetup
Amazon Elasticsearch Service & Open Distro for Elasticsearch MeetupAmazon Elasticsearch Service & Open Distro for Elasticsearch Meetup
Amazon Elasticsearch Service & Open Distro for Elasticsearch MeetupHibino Hisashi
 
ブロックチェーンの技術と動向
ブロックチェーンの技術と動向ブロックチェーンの技術と動向
ブロックチェーンの技術と動向Koichi Masukura
 
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装Yuto Takei
 
ドメイン名の ライフサイクルマネージメント20171031
ドメイン名の ライフサイクルマネージメント20171031ドメイン名の ライフサイクルマネージメント20171031
ドメイン名の ライフサイクルマネージメント20171031Yoshiki Ishida
 
Open Assetsを利用したP2P型の投票システムとエクスプローラ
Open Assetsを利用したP2P型の投票システムとエクスプローラOpen Assetsを利用したP2P型の投票システムとエクスプローラ
Open Assetsを利用したP2P型の投票システムとエクスプローラshigeyuki azuchi
 
5分でわかるブロックチェーンの基本的な仕組み
5分でわかるブロックチェーンの基本的な仕組み5分でわかるブロックチェーンの基本的な仕組み
5分でわかるブロックチェーンの基本的な仕組みRyo Shimamura
 
how to port * to BitVisor (2)
how to port * to BitVisor (2)how to port * to BitVisor (2)
how to port * to BitVisor (2)icchy
 
図解 Blockchainの仕組み
図解 Blockchainの仕組み図解 Blockchainの仕組み
図解 Blockchainの仕組みNisei Kimura
 
クラウドプロバイダーが守ってくれない重要なデータの保護! ENTRUSTの強力な暗号化ソリューションのご紹介 エントラストジャパンセッションスライド
クラウドプロバイダーが守ってくれない重要なデータの保護! ENTRUSTの強力な暗号化ソリューションのご紹介 エントラストジャパンセッションスライドクラウドプロバイダーが守ってくれない重要なデータの保護! ENTRUSTの強力な暗号化ソリューションのご紹介 エントラストジャパンセッションスライド
クラウドプロバイダーが守ってくれない重要なデータの保護! ENTRUSTの強力な暗号化ソリューションのご紹介 エントラストジャパンセッションスライド株式会社クライム
 
(A7)cross site scripting
(A7)cross site scripting(A7)cross site scripting
(A7)cross site scriptingOWASP Nagoya
 
DeepSecurityでシステムを守る運用を幾つか
DeepSecurityでシステムを守る運用を幾つかDeepSecurityでシステムを守る運用を幾つか
DeepSecurityでシステムを守る運用を幾つかHirokazu Yoshida
 
データセンターを構成する最新ネットワーク技術動向
データセンターを構成する最新ネットワーク技術動向データセンターを構成する最新ネットワーク技術動向
データセンターを構成する最新ネットワーク技術動向Naoto MATSUMOTO
 
情報セキュリティCAS 第七十九回放送用スライド
情報セキュリティCAS 第七十九回放送用スライド情報セキュリティCAS 第七十九回放送用スライド
情報セキュリティCAS 第七十九回放送用スライドKumasan, LLC.
 
IoTタグで遊んでみよう
IoTタグで遊んでみようIoTタグで遊んでみよう
IoTタグで遊んでみようYukimitsu Izawa
 

Was ist angesagt? (20)

【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
 
Deconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchainDeconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchain
 
【JAWS-UGコンテナ#14】ETL処理をServerlessにしてみた件
【JAWS-UGコンテナ#14】ETL処理をServerlessにしてみた件【JAWS-UGコンテナ#14】ETL処理をServerlessにしてみた件
【JAWS-UGコンテナ#14】ETL処理をServerlessにしてみた件
 
【YahooJapanMeetup#31LT】ElasticStack on AWS DeepDive
【YahooJapanMeetup#31LT】ElasticStack on AWS DeepDive【YahooJapanMeetup#31LT】ElasticStack on AWS DeepDive
【YahooJapanMeetup#31LT】ElasticStack on AWS DeepDive
 
Logstashを愛して5年、370ページを超えるガチ本を書いてしまった男の話.
Logstashを愛して5年、370ページを超えるガチ本を書いてしまった男の話.Logstashを愛して5年、370ページを超えるガチ本を書いてしまった男の話.
Logstashを愛して5年、370ページを超えるガチ本を書いてしまった男の話.
 
Amazon Elasticsearch Service & Open Distro for Elasticsearch Meetup
Amazon Elasticsearch Service & Open Distro for Elasticsearch MeetupAmazon Elasticsearch Service & Open Distro for Elasticsearch Meetup
Amazon Elasticsearch Service & Open Distro for Elasticsearch Meetup
 
ブロックチェーンの技術と動向
ブロックチェーンの技術と動向ブロックチェーンの技術と動向
ブロックチェーンの技術と動向
 
Let's Encryptについて話す【勉強会資料】
Let's Encryptについて話す【勉強会資料】 Let's Encryptについて話す【勉強会資料】
Let's Encryptについて話す【勉強会資料】
 
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
 
ドメイン名の ライフサイクルマネージメント20171031
ドメイン名の ライフサイクルマネージメント20171031ドメイン名の ライフサイクルマネージメント20171031
ドメイン名の ライフサイクルマネージメント20171031
 
Open Assetsを利用したP2P型の投票システムとエクスプローラ
Open Assetsを利用したP2P型の投票システムとエクスプローラOpen Assetsを利用したP2P型の投票システムとエクスプローラ
Open Assetsを利用したP2P型の投票システムとエクスプローラ
 
5分でわかるブロックチェーンの基本的な仕組み
5分でわかるブロックチェーンの基本的な仕組み5分でわかるブロックチェーンの基本的な仕組み
5分でわかるブロックチェーンの基本的な仕組み
 
how to port * to BitVisor (2)
how to port * to BitVisor (2)how to port * to BitVisor (2)
how to port * to BitVisor (2)
 
図解 Blockchainの仕組み
図解 Blockchainの仕組み図解 Blockchainの仕組み
図解 Blockchainの仕組み
 
クラウドプロバイダーが守ってくれない重要なデータの保護! ENTRUSTの強力な暗号化ソリューションのご紹介 エントラストジャパンセッションスライド
クラウドプロバイダーが守ってくれない重要なデータの保護! ENTRUSTの強力な暗号化ソリューションのご紹介 エントラストジャパンセッションスライドクラウドプロバイダーが守ってくれない重要なデータの保護! ENTRUSTの強力な暗号化ソリューションのご紹介 エントラストジャパンセッションスライド
クラウドプロバイダーが守ってくれない重要なデータの保護! ENTRUSTの強力な暗号化ソリューションのご紹介 エントラストジャパンセッションスライド
 
(A7)cross site scripting
(A7)cross site scripting(A7)cross site scripting
(A7)cross site scripting
 
DeepSecurityでシステムを守る運用を幾つか
DeepSecurityでシステムを守る運用を幾つかDeepSecurityでシステムを守る運用を幾つか
DeepSecurityでシステムを守る運用を幾つか
 
データセンターを構成する最新ネットワーク技術動向
データセンターを構成する最新ネットワーク技術動向データセンターを構成する最新ネットワーク技術動向
データセンターを構成する最新ネットワーク技術動向
 
情報セキュリティCAS 第七十九回放送用スライド
情報セキュリティCAS 第七十九回放送用スライド情報セキュリティCAS 第七十九回放送用スライド
情報セキュリティCAS 第七十九回放送用スライド
 
IoTタグで遊んでみよう
IoTタグで遊んでみようIoTタグで遊んでみよう
IoTタグで遊んでみよう
 

Ähnlich wie New Layers of Web Application Security

OSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツールOSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツールIsao Takaesu
 
ブロックチェーンを利用した非集中型学習支援システムの検証
ブロックチェーンを利用した非集中型学習支援システムの検証 ブロックチェーンを利用した非集中型学習支援システムの検証
ブロックチェーンを利用した非集中型学習支援システムの検証 Hori Masumi
 
Microsoft Azure/SRT - 最新技術情報アップデート
Microsoft Azure/SRT - 最新技術情報アップデートMicrosoft Azure/SRT - 最新技術情報アップデート
Microsoft Azure/SRT - 最新技術情報アップデートShige Fukushima
 
Mk onic data-intensive-public
Mk onic data-intensive-publicMk onic data-intensive-public
Mk onic data-intensive-publicMiya Kohno
 
Mk onic data-intensive-public
Mk onic data-intensive-publicMk onic data-intensive-public
Mk onic data-intensive-publicMiya Kohno
 
OAuth Security Workshop 2017 #osw17
OAuth Security Workshop 2017 #osw17OAuth Security Workshop 2017 #osw17
OAuth Security Workshop 2017 #osw17Tatsuo Kudo
 
2017年のセキュリティ 傾向と対策講座
2017年のセキュリティ 傾向と対策講座2017年のセキュリティ 傾向と対策講座
2017年のセキュリティ 傾向と対策講座NHN テコラス株式会社
 
初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座DIVE INTO CODE Corp.
 
Movable typeseminar 20120925
Movable typeseminar 20120925Movable typeseminar 20120925
Movable typeseminar 20120925Six Apart
 
HashiCorp Vault 紹介
HashiCorp Vault 紹介HashiCorp Vault 紹介
HashiCorp Vault 紹介hashicorpjp
 
Osc2017 tokyo spring_soss_sig
Osc2017 tokyo spring_soss_sigOsc2017 tokyo spring_soss_sig
Osc2017 tokyo spring_soss_sigKazuki Omo
 
Learn, build, and scale with elastic - realizing great programming experience...
Learn, build, and scale with elastic - realizing great programming experience...Learn, build, and scale with elastic - realizing great programming experience...
Learn, build, and scale with elastic - realizing great programming experience...Shotaro Suzuki
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことKeisuke Nishitani
 
Database as code in Devops - DBを10分間で1000個構築するDB仮想化テクノロジーとは?(Ishikawa)
Database as code in Devops - DBを10分間で1000個構築するDB仮想化テクノロジーとは?(Ishikawa)Database as code in Devops - DBを10分間で1000個構築するDB仮想化テクノロジーとは?(Ishikawa)
Database as code in Devops - DBを10分間で1000個構築するDB仮想化テクノロジーとは?(Ishikawa)Insight Technology, Inc.
 
20141117 movable type seminar
20141117 movable type seminar20141117 movable type seminar
20141117 movable type seminarSix Apart
 
Oci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssOci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssKenichi Sonoda
 
Azure IaaS 解説
Azure IaaS 解説Azure IaaS 解説
Azure IaaS 解説wintechq
 
今だから!Amazon CloudFront 徹底活用
今だから!Amazon CloudFront 徹底活用今だから!Amazon CloudFront 徹底活用
今だから!Amazon CloudFront 徹底活用Yasuhiro Araki, Ph.D
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンKazuyuki Miyake
 

Ähnlich wie New Layers of Web Application Security (20)

OSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツールOSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツール
 
ブロックチェーンを利用した非集中型学習支援システムの検証
ブロックチェーンを利用した非集中型学習支援システムの検証 ブロックチェーンを利用した非集中型学習支援システムの検証
ブロックチェーンを利用した非集中型学習支援システムの検証
 
[Japan Tech summit 2017] DAL 005
[Japan Tech summit 2017] DAL 005[Japan Tech summit 2017] DAL 005
[Japan Tech summit 2017] DAL 005
 
Microsoft Azure/SRT - 最新技術情報アップデート
Microsoft Azure/SRT - 最新技術情報アップデートMicrosoft Azure/SRT - 最新技術情報アップデート
Microsoft Azure/SRT - 最新技術情報アップデート
 
Mk onic data-intensive-public
Mk onic data-intensive-publicMk onic data-intensive-public
Mk onic data-intensive-public
 
Mk onic data-intensive-public
Mk onic data-intensive-publicMk onic data-intensive-public
Mk onic data-intensive-public
 
OAuth Security Workshop 2017 #osw17
OAuth Security Workshop 2017 #osw17OAuth Security Workshop 2017 #osw17
OAuth Security Workshop 2017 #osw17
 
2017年のセキュリティ 傾向と対策講座
2017年のセキュリティ 傾向と対策講座2017年のセキュリティ 傾向と対策講座
2017年のセキュリティ 傾向と対策講座
 
初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座
 
Movable typeseminar 20120925
Movable typeseminar 20120925Movable typeseminar 20120925
Movable typeseminar 20120925
 
HashiCorp Vault 紹介
HashiCorp Vault 紹介HashiCorp Vault 紹介
HashiCorp Vault 紹介
 
Osc2017 tokyo spring_soss_sig
Osc2017 tokyo spring_soss_sigOsc2017 tokyo spring_soss_sig
Osc2017 tokyo spring_soss_sig
 
Learn, build, and scale with elastic - realizing great programming experience...
Learn, build, and scale with elastic - realizing great programming experience...Learn, build, and scale with elastic - realizing great programming experience...
Learn, build, and scale with elastic - realizing great programming experience...
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
Database as code in Devops - DBを10分間で1000個構築するDB仮想化テクノロジーとは?(Ishikawa)
Database as code in Devops - DBを10分間で1000個構築するDB仮想化テクノロジーとは?(Ishikawa)Database as code in Devops - DBを10分間で1000個構築するDB仮想化テクノロジーとは?(Ishikawa)
Database as code in Devops - DBを10分間で1000個構築するDB仮想化テクノロジーとは?(Ishikawa)
 
20141117 movable type seminar
20141117 movable type seminar20141117 movable type seminar
20141117 movable type seminar
 
Oci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssOci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ss
 
Azure IaaS 解説
Azure IaaS 解説Azure IaaS 解説
Azure IaaS 解説
 
今だから!Amazon CloudFront 徹底活用
今だから!Amazon CloudFront 徹底活用今だから!Amazon CloudFront 徹底活用
今だから!Amazon CloudFront 徹底活用
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
 

New Layers of Web Application Security