Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Hiroshi Tokumaru
51,576 views
徳丸本に載っていないWebアプリケーションセキュリティ
PHPカンファレンス北海道にて 2012/04/21
Read more
165
Save
Share
Embed
Embed presentation
1
/ 75
2
/ 75
Most read
3
/ 75
4
/ 75
5
/ 75
6
/ 75
Most read
7
/ 75
Most read
8
/ 75
9
/ 75
10
/ 75
11
/ 75
12
/ 75
13
/ 75
14
/ 75
15
/ 75
16
/ 75
17
/ 75
18
/ 75
19
/ 75
20
/ 75
21
/ 75
22
/ 75
23
/ 75
24
/ 75
25
/ 75
26
/ 75
27
/ 75
28
/ 75
29
/ 75
30
/ 75
31
/ 75
32
/ 75
33
/ 75
34
/ 75
35
/ 75
36
/ 75
37
/ 75
38
/ 75
39
/ 75
40
/ 75
41
/ 75
42
/ 75
43
/ 75
44
/ 75
45
/ 75
46
/ 75
47
/ 75
48
/ 75
49
/ 75
50
/ 75
51
/ 75
52
/ 75
53
/ 75
54
/ 75
55
/ 75
56
/ 75
57
/ 75
58
/ 75
59
/ 75
60
/ 75
61
/ 75
62
/ 75
63
/ 75
64
/ 75
65
/ 75
66
/ 75
67
/ 75
68
/ 75
69
/ 75
70
/ 75
71
/ 75
72
/ 75
73
/ 75
74
/ 75
75
/ 75
More Related Content
PPT
UnicodeによるXSSとSQLインジェクションの可能性
by
Hiroshi Tokumaru
PPTX
ウェブセキュリティのありがちな誤解を解説する
by
Hiroshi Tokumaru
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
PDF
なぜ自社で脆弱性診断を行うべきなのか
by
Sen Ueno
PDF
AWSのログ管理ベストプラクティス
by
Akihiro Kuwano
PDF
なかったらINSERTしたいし、あるならロック取りたいやん?
by
ichirin2501
PDF
AWS Black Belt Techシリーズ AWS IAM
by
Amazon Web Services Japan
PDF
シングルサインオンの歴史とSAMLへの道のり
by
Shinichi Tomita
UnicodeによるXSSとSQLインジェクションの可能性
by
Hiroshi Tokumaru
ウェブセキュリティのありがちな誤解を解説する
by
Hiroshi Tokumaru
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
なぜ自社で脆弱性診断を行うべきなのか
by
Sen Ueno
AWSのログ管理ベストプラクティス
by
Akihiro Kuwano
なかったらINSERTしたいし、あるならロック取りたいやん?
by
ichirin2501
AWS Black Belt Techシリーズ AWS IAM
by
Amazon Web Services Japan
シングルサインオンの歴史とSAMLへの道のり
by
Shinichi Tomita
What's hot
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
PPTX
安全なWebアプリケーションの作り方2018
by
Hiroshi Tokumaru
PDF
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
by
infinite_loop
PDF
文字コードに起因する脆弱性とその対策(増補版)
by
Hiroshi Tokumaru
PDF
例外設計における大罪
by
Takuto Wada
PDF
Mavenの真実とウソ
by
Yoshitaka Kawashima
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
by
Amazon Web Services Japan
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
KEY
やはりお前らのMVCは間違っている
by
Koichi Tanaka
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
PDF
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
by
Trainocate Japan, Ltd.
PDF
データベース設計徹底指南
by
Mikiya Okuno
PPTX
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
by
Yusuke Shirakawa
PDF
FridaによるAndroidアプリの動的解析とフッキングの基礎
by
ken_kitahara
PPTX
世界一わかりやすいClean Architecture
by
Atsushi Nakamura
PDF
失敗事例で学ぶ負荷試験
by
樽八 仲川
PDF
雑なMySQLパフォーマンスチューニング
by
yoku0825
PPTX
Redisの特徴と活用方法について
by
Yuji Otani
PPT
SQLインジェクション再考
by
Hiroshi Tokumaru
PDF
The Twelve-Factor Appで考えるAWSのサービス開発
by
Amazon Web Services Japan
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
安全なWebアプリケーションの作り方2018
by
Hiroshi Tokumaru
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
by
infinite_loop
文字コードに起因する脆弱性とその対策(増補版)
by
Hiroshi Tokumaru
例外設計における大罪
by
Takuto Wada
Mavenの真実とウソ
by
Yoshitaka Kawashima
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
by
Amazon Web Services Japan
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
やはりお前らのMVCは間違っている
by
Koichi Tanaka
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
by
Trainocate Japan, Ltd.
データベース設計徹底指南
by
Mikiya Okuno
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
by
Yusuke Shirakawa
FridaによるAndroidアプリの動的解析とフッキングの基礎
by
ken_kitahara
世界一わかりやすいClean Architecture
by
Atsushi Nakamura
失敗事例で学ぶ負荷試験
by
樽八 仲川
雑なMySQLパフォーマンスチューニング
by
yoku0825
Redisの特徴と活用方法について
by
Yuji Otani
SQLインジェクション再考
by
Hiroshi Tokumaru
The Twelve-Factor Appで考えるAWSのサービス開発
by
Amazon Web Services Japan
Viewers also liked
PPTX
Management for Security Life Cycle (日本語版)
by
Akitsugu Ito
PPT
Ipsj77フォレンジック研究動向
by
UEHARA, Tetsutaro
PDF
SECCON CTF セキュリティ競技会コンテスト開催について
by
takesako
PPTX
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
by
Sen Ueno
PPTX
Metasploitでペネトレーションテスト
by
super_a1ice
PDF
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
by
Go Sueyoshi (a.k.a sue445)
PPTX
[CEDEC2017] LINEゲームのセキュリティ診断手法
by
LINE Corporation
PPTX
osc2016do ひげで学ぶWebアプリケーションに潜むリスク
by
Ierae Security
PPTX
[BurpSuiteJapan]Burp Suite回答編
by
Burp Suite Japan User Group
PDF
初心者向けインターネットの仕組みと8/25の障害についての説明
by
Ken SASAKI
PPTX
脱RESTful API設計の提案
by
樽八 仲川
PDF
ノリとその場の勢いでPocを作った話
by
zaki4649
PDF
[AVTOKYO 2017] What is red team?
by
Tomohisa Ishikawa, CISSP, CSSLP, CISA, CISM, CFE
PDF
CpawCTF 勉強会 Network
by
Takaaki Hoyo
PDF
SSL/TLSの基礎と最新動向
by
shigeki_ohtsu
Management for Security Life Cycle (日本語版)
by
Akitsugu Ito
Ipsj77フォレンジック研究動向
by
UEHARA, Tetsutaro
SECCON CTF セキュリティ競技会コンテスト開催について
by
takesako
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
by
Sen Ueno
Metasploitでペネトレーションテスト
by
super_a1ice
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
by
Go Sueyoshi (a.k.a sue445)
[CEDEC2017] LINEゲームのセキュリティ診断手法
by
LINE Corporation
osc2016do ひげで学ぶWebアプリケーションに潜むリスク
by
Ierae Security
[BurpSuiteJapan]Burp Suite回答編
by
Burp Suite Japan User Group
初心者向けインターネットの仕組みと8/25の障害についての説明
by
Ken SASAKI
脱RESTful API設計の提案
by
樽八 仲川
ノリとその場の勢いでPocを作った話
by
zaki4649
[AVTOKYO 2017] What is red team?
by
Tomohisa Ishikawa, CISSP, CSSLP, CISA, CISM, CFE
CpawCTF 勉強会 Network
by
Takaaki Hoyo
SSL/TLSの基礎と最新動向
by
shigeki_ohtsu
Similar to 徳丸本に載っていないWebアプリケーションセキュリティ
PDF
安全なPHPアプリケーションの作り方2013
by
Hiroshi Tokumaru
PPTX
安全なPHPアプリケーションの作り方2014
by
Hiroshi Tokumaru
PDF
Webアプリ開発者のためのHTML5セキュリティ入門
by
Muneaki Nishimura
PPT
セキュアプログラミング講座
by
minoru-ito
PDF
徳丸本ができるまで
by
Hiroshi Tokumaru
PDF
[デブサミ2012]趣味と実益の脆弱性発見
by
Yosuke HASEGAWA
PPT
20090218 第5回「PhpによるWebアプリケーションのセキュリティ入門」
by
Hiromu Shioya
PDF
これからHTML5を書く人のためのセキュリティ - HTML5など勉強会
by
yoshinori matsumoto
PPTX
HTML5 Web アプリケーションのセキュリティ
by
彰 村地
PPTX
ウェブセキュリティの常識
by
Hiroshi Tokumaru
ODP
ライブコーディングとデモで理解するWebセキュリティの基礎
by
Takahisa Kishiya
PDF
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
by
Hiroshi Tokumaru
PPTX
文字コードの脆弱性はこの3年間でどの程度対策されたか?
by
Hiroshi Tokumaru
PPTX
Pjax1
by
Kindai University
PDF
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
by
Hiroshi Tokumaru
PPTX
安全なPHPアプリケーションの作り方2016
by
Hiroshi Tokumaru
PPTX
ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料)
by
ひとし あまの
PDF
Beginning Java EE 6 勉強会(7) #bje_study
by
ikeyat
PDF
PHPでセキュリティを真面目に考える
by
Takuya Sato
PPTX
エンジニアという職業について
by
Hisatoshi Kikumoto
安全なPHPアプリケーションの作り方2013
by
Hiroshi Tokumaru
安全なPHPアプリケーションの作り方2014
by
Hiroshi Tokumaru
Webアプリ開発者のためのHTML5セキュリティ入門
by
Muneaki Nishimura
セキュアプログラミング講座
by
minoru-ito
徳丸本ができるまで
by
Hiroshi Tokumaru
[デブサミ2012]趣味と実益の脆弱性発見
by
Yosuke HASEGAWA
20090218 第5回「PhpによるWebアプリケーションのセキュリティ入門」
by
Hiromu Shioya
これからHTML5を書く人のためのセキュリティ - HTML5など勉強会
by
yoshinori matsumoto
HTML5 Web アプリケーションのセキュリティ
by
彰 村地
ウェブセキュリティの常識
by
Hiroshi Tokumaru
ライブコーディングとデモで理解するWebセキュリティの基礎
by
Takahisa Kishiya
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
by
Hiroshi Tokumaru
文字コードの脆弱性はこの3年間でどの程度対策されたか?
by
Hiroshi Tokumaru
Pjax1
by
Kindai University
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
by
Hiroshi Tokumaru
安全なPHPアプリケーションの作り方2016
by
Hiroshi Tokumaru
ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料)
by
ひとし あまの
Beginning Java EE 6 勉強会(7) #bje_study
by
ikeyat
PHPでセキュリティを真面目に考える
by
Takuya Sato
エンジニアという職業について
by
Hisatoshi Kikumoto
More from Hiroshi Tokumaru
PPTX
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
by
Hiroshi Tokumaru
PPTX
徳丸本VMに脆弱なWordPressを導入する
by
Hiroshi Tokumaru
PPTX
introduction to unsafe deserialization part1
by
Hiroshi Tokumaru
PPTX
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
by
Hiroshi Tokumaru
PPTX
XXE、SSRF、安全でないデシリアライゼーション入門
by
Hiroshi Tokumaru
PPTX
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
by
Hiroshi Tokumaru
PPTX
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
by
Hiroshi Tokumaru
PPTX
Railsエンジニアのためのウェブセキュリティ入門
by
Hiroshi Tokumaru
PPTX
秀スクリプトの話
by
Hiroshi Tokumaru
PPTX
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
by
Hiroshi Tokumaru
PPTX
若手エンジニアのためのセキュリティ講座
by
Hiroshi Tokumaru
PDF
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
by
Hiroshi Tokumaru
PDF
ウェブアプリケーションセキュリティ超入門
by
Hiroshi Tokumaru
PPTX
ウェブセキュリティの最近の話題早分かり
by
Hiroshi Tokumaru
PPTX
セキュリティの都市伝説を暴く
by
Hiroshi Tokumaru
PPTX
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
by
Hiroshi Tokumaru
PPTX
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
by
Hiroshi Tokumaru
PPTX
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
by
Hiroshi Tokumaru
PPTX
セキュアコーディング方法論再構築の試み
by
Hiroshi Tokumaru
PPTX
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
by
Hiroshi Tokumaru
脅威分析の手法によりウェブサーバーにウイルス対策ソフトが必要かを検証する
by
Hiroshi Tokumaru
徳丸本VMに脆弱なWordPressを導入する
by
Hiroshi Tokumaru
introduction to unsafe deserialization part1
by
Hiroshi Tokumaru
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
by
Hiroshi Tokumaru
XXE、SSRF、安全でないデシリアライゼーション入門
by
Hiroshi Tokumaru
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
by
Hiroshi Tokumaru
オニギリペイのセキュリティ事故に学ぶ安全なサービスの構築法 (PHPカンファレンス2019)
by
Hiroshi Tokumaru
Railsエンジニアのためのウェブセキュリティ入門
by
Hiroshi Tokumaru
秀スクリプトの話
by
Hiroshi Tokumaru
デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう
by
Hiroshi Tokumaru
若手エンジニアのためのセキュリティ講座
by
Hiroshi Tokumaru
著名PHPアプリの脆弱性に学ぶセキュアコーディングの原則
by
Hiroshi Tokumaru
ウェブアプリケーションセキュリティ超入門
by
Hiroshi Tokumaru
ウェブセキュリティの最近の話題早分かり
by
Hiroshi Tokumaru
セキュリティの都市伝説を暴く
by
Hiroshi Tokumaru
CMS四天王への攻撃デモを通じて、WordPressの効果的な防御法を学ぼう
by
Hiroshi Tokumaru
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
by
Hiroshi Tokumaru
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
by
Hiroshi Tokumaru
セキュアコーディング方法論再構築の試み
by
Hiroshi Tokumaru
Webサイトをめぐるセキュリティ状況と効果的な防御方法(WordPress編)
by
Hiroshi Tokumaru
徳丸本に載っていないWebアプリケーションセキュリティ
1.
PHPカンファレンス北海道 徳丸本に載っていない
Webアプリケーションセキュリティ 2012年4月21日 徳丸 浩
2.
本日お話しする内容 • キャッシュからの情報漏洩に注意 • クリックジャッキング入門 •
Ajaxセキュリティ入門 • ドリランド カード増殖祭りはこうしておこった…かも? Copyright © 2012 HASH Consulting Corp. 2
3.
徳丸浩の自己紹介 • 経歴
– 1985年 京セラ株式会社入社 – 1995年 京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍 – 2008年 KCCS退職、HASHコンサルティング株式会社設立 • 経験したこと – 京セラ入社当時はCAD、計算幾何学、数値シミュレーションなどを担当 – その後、企業向けパッケージソフトの企画・開発・事業化を担当 – 1999年から、携帯電話向けインフラ、プラットフォームの企画・開発を担当 Webアプリケーションのセキュリティ問題に直面、研究、社内展開、寄稿など を開始 – 2004年にKCCS社内ベンチャーとしてWebアプリケーションセキュリティ事業を立 ち上げ • その他 – 1990年にPascalコンパイラをCabezonを開発、オープンソースで公開 「大学時代のPascal演習がCabezonでした」という方にお目にかかることも • 現在 – HASHコンサルティング株式会社 代表 http://www.hash-c.co.jp/ – 京セラコミュニケーションシステム株式会社 技術顧問 http://www.kccs.co.jp/security/ – 独立行政法人情報処理推進機構2012 HASH Consulting Corp. http://www.ipa.go.jp/security/ Copyright © 非常勤研究員 3
4.
本を書きました
2011年3月5日初版第1刷 2011年12月13日 初版第5刷 Copyright © 2012 HASH Consulting Corp. 4
5.
キャッシュからの情報漏洩に注意
Copyright © 2012 HASH Consulting Corp. 5
6.
Webアプリケーションとキャッシュ • フレームワークのキャッシュ機能 • リバースプロキシ •
フォワードプロキシ • ブラウザのキャッシュ機能 • キャッシュは、Webアプリケーションの負荷を軽減し、 応答を高速化するために用いられる • サイト運営側が設置するキャッシュと、閲覧側(ISP等 を含む)が設置するものがある Copyright © 2012 HASH Consulting Corp. 6
7.
キャッシュからの情報漏洩とは? • いわゆる「別人問題」 • 秘密情報がキャッシュされて、それを別人が見る状況
– 最初のアクセスは正当な権限あり →表示内容がキャッシュされるに – 次のアクセスは権限のないユーザ →同一URLを参照すると、キャッシュされた情報を閲覧してし まう • 続きはデモで Copyright © 2012 HASH Consulting Corp. 7
8.
Demoの構成 ブラウザ
OpenPNE 3.4.12.1 PROXY squid PHP/MySQL Ubuntu 10.04LTS refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|?) 0 0% 0 refresh_pattern (Release|Package(.gz)*)$ 0 20% 2880 refresh_pattern . 1440 20% 4320 override-lastmod ※デモ環境では、WebサーバーとProxyサーバーは同一VM上で稼 働 Copyright © 2012 HASH Consulting Corp. 8
9.
サトーさん
タナカさん Demo Copyright © 2012 HASH Consulting Corp. 9
10.
ブラウザキャッシュのデモ
デフォルト Copyright © 2012 HASH Consulting Corp. 10
11.
そもそもこれは脆弱性なのか? • PROXY設定の問題ではないのか?
– PROXY設定の問題とは言い切れない – squidの標準的な機能の範囲である – PROXY設定の基準が明確にあるわけではない • RFC2616 13.4 Response Cacheability – (原文)A response received with a status code of 200, 203, 206, 300, 301 or 410 MAY be stored by a cache and used in reply to a subsequent request, subject to the expiration mechanism, unless a cache-control directive prohibits caching. – (日本語訳)200, 203, 206, 300, 301, 410 のステータスコードと 共に受信されたレスポンスは、cache-control 指示子がキャッ シングを禁止していなければ、キャッシュによって保存され、 以降のリクエストへの応答に使用され、期限メカニズムに従う 事ができる。 http://tools.ietf.org/html/rfc2616#section-13.4 http://www.studyinghttp.net/cgi-bin/rfc.cgi?2616#Sec13.1.3 より引用 Copyright © 2012 HASH Consulting Corp. 11
12.
ブラウザのキャッシュはどうか • ブラウザのキャッシュも同様だが • そもそも、ブラウザを共有することが問題 •
Windows95,98,MEの時代ならともかく、2012年の時点 では、端末は共有しても、ユーザは別にすべし。そうす れば問題は発生しない • つまり、「はてなブックマークでのデモ事例」は許容可 能 • とはいえ、Webサイト提供者としては対策することが望 ましい Copyright © 2012 HASH Consulting Corp. 12
13.
対策 • HTTPレスポンスヘッダで「キャッシュを禁止するヘッダ」を応
答することが根本対策 • セキュアプログラミング講座には… 1. Cache-Control: private Webサーバから返されるコンテンツがただ一人のユーザのためのものであること を示す。このコンテンツは、複数のユーザが共有されるキャッシュに記録されるべ きではないことを表している。ただし、これは、一人のユーザのみが利用するキャ ッシュ(ブラウザのキャッシュ等)への記録を禁じるものではない。Cache- Control: private のみが指定されている場合、何らかのキャッシュへの記録が行わ れるおそれがある。 2. Cache-Control: no-store このヘッダは、Webサーバから返されてくるコンテンツをキャッシュに記録する な、という指示である。 3. Cache-Control: no-cache 一見「キャッシュを使うな」のように見えるこのヘッダが実際に意味するところ は少々ニュアンスが異なる。このヘッダの意味は、いちどキャッシュに記録された コンテンツは、現在でも有効か否かを本来のWebサーバに問い合わせて確認がと れない限り再利用してはならない、という意味である。 4. Cache-Control: must-revalidate このヘッダは、キャッシュに記録されているコンテンツが現在も有効であるか否 かをWebサーバに必ず問い合わせよ、という指示である。 http://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/405.html より引用 13
14.
対策(続き) • HTTP/1.0対策として –
Pragma: no-cache – 非標準の方法であり、確実なものではない • その他の手法 – 「現場の知恵」としてURL(クエリ文字列)にランダムな数字 を付加することが行われる • 例: http://example.jp/private.php?rand=8314329428479210 – HTTPSにする • 通常のPROXYはHTTPSのメッセージをキャッシュしない(できない) • リバースPROXY、ブラウザはキャッシュする可能性があるので過信し ないこと – テストする • 別ユーザ or 非ログイン状態で、同じURLをアクセスする Copyright © 2012 HASH Consulting Corp. 14
15.
乱数をURLにつける例 Copyright © 2012
HASH Consulting Corp. 15
16.
クリックジャッキング入門 Copyright
© 2012 HASH Consulting Corp. 16
17.
クリックジャッキング攻撃 • ターゲットの画面をiframe上で「透明に」表示する • その下にダミーの画面を表示させる。ユーザにはダミー
の画面が透けて見える • 利用者がダミーの画面上のボタンを押すと、実際には全 面のターゲット画面のボタンが押される 本当の画面(前面、透明) ダミーの画面(後面) • 続きはデモで Copyright © 2012 HASH Consulting Corp. 17
18.
クリックジャッキングの対策 • クリックジャッキングの影響はクロスサイト・リクエス
トフォージェリ(CSRF)と同等 – ユーザの意識とは無関係に、ユーザの権限で操作が行われる • クリックジャッキングされると困るページには、X- FRAME-OPTIONSヘッダを指定する(徳丸本P63) – frame/iframeを禁止して良い場合 header('X-FRAME-OPTIONS', 'DENY'); – frame/iframeを禁止できないが単一ホストの場合 header('X-FRAME-OPTIONS', 'SAMEORIGIN'); • CSRF対策のトークン発行しているページが対象となる • メタ要素によるX-FRAME-OPTIONS指定は無効です。 徳丸本第3刷までの記述は間違いです(_ _) Copyright © 2012 HASH Consulting Corp. 18
19.
CSRF対策との関係
入力/確認画面 更新・実行画面 更新してよろしいですか? 更新しました 実行 トップへ •トークン埋め込み •トークン確認 •X-FRAME-OPTIONS ヘッダ出力 トークン埋め込みしている画面に、X-FRAME- OPTIONS ヘッダを出力する(全ての画面で出力しても良い) Copyright © 2012 HASH Consulting Corp. 19
20.
Ajaxセキュリティ入門 Copyright ©
2012 HASH Consulting Corp. 20
21.
Ajaxはあたりまえになったけど、 Ajaxのセキュリティは当たり前に なってない
Copyright © 2012 HASH Consulting Corp. 21
22.
たとえば入門書の問題 Copyright ©
2012 HASH Consulting Corp. 22
23.
とある入門書のサンプル
Copyright © 2012 HASH Consulting Corp. 23 よくわかるJavaScriptの教科書、たにぐちまこと著、2012 P228より引用
24.
この本です
24
25.
動かしてみる Copyright © 2012
HASH Consulting Corp. 25
26.
結果 Copyright © 2012
HASH Consulting Corp. 26
27.
JSON作成をPHPに 生成されるJSON [{"image":"img/1.jpg","image_big":"i mg/1_big.jpg","caption":"u30adu30e 3u30d7u30b7u30e7u30f31"}]
Copyright © 2012 HASH Consulting Corp. 27
28.
結果 Copyright © 2012
HASH Consulting Corp. 28
29.
データにJavaScriptを入れてみる 生成されるJSON [{"image":"img/1.jpg","image_big":"i mg/1_big.jpg","caption":"u30adu30e 3u30d7u30b7u30e7u30f31<script>ale rt(1)</script>"}]
Copyright © 2012 HASH Consulting Corp. 29
30.
結果 Copyright © 2012
HASH Consulting Corp. 30
31.
脆弱性の原因と対策 • htmlメソッドによりHTMLテキストを設定しているにも
関わらず、データをHTMLエスケープしていない • ただし、元文献は固定テキストなので、必ずしも脆弱性 とは言えない • HTMLエスケープするタイミングは、以下の候補がある – ブラウザでレンダリングする箇所 – JSONを組み立てる段階で、あらかじめHTMLエスケープして おく Copyright © 2012 HASH Consulting Corp. 31
32.
次の話題 evalインジェクション Copyright ©
2012 HASH Consulting Corp. 32
33.
JSON解釈をevalでやってみる
Copyright © 2012 HASH Consulting Corp. 33
34.
JSON作成も自前で <?php $image
= 'img/1.jpg'; $image_big = 'img/1_big.jpg'; $caption = 'キャプション2'; $a = '[{"image":"' . $image . '","image_big":"' . $image_big . '","caption":"' . $caption . '"}]'; echo $a; 生成されるJSON [{"image":"img/1.jpg","image_big":"img/1_b ig.jpg","caption":"キャプション2 "}] Copyright © 2012 HASH Consulting Corp. 34
35.
結果 Copyright © 2012
HASH Consulting Corp. 35
36.
データにJavaScriptを入れてみる <?php $image
= 'img/1.jpg'; $image_big = 'img/1_big.jpg'; $caption = 'キャプション2x"+alert("1")+"'; $a = '[{"image":"' . $image . '","image_big":"' . $image_big . '","caption":"' . $caption . '"}]'; echo $a; 生成されるJSON [{"image":"img/1.jpg","image_big": "img/1_big.jpg","caption": "キャプション2x"+alert("1")+""}] Copyright © 2012 HASH Consulting Corp. 36
37.
結果 Copyright © 2012
HASH Consulting Corp. 37
38.
脆弱性の原因と対策 • JSON/JavaScriptとしての適切なエスケープを怠ってい
ることが根本原因 • 根本単位策:JSON生成を自前でしないで、信頼できる ライブラリを用いる • 保険的対策(強く推奨):evalでJSONを解釈しない。 Copyright © 2012 HASH Consulting Corp. 38
39.
次の話題 json.phpを直接ブラウズしてみる
Copyright © 2012 HASH Consulting Corp. 39
40.
データを少しいじりましょう Copyright
© 2012 HASH Consulting Corp. 40
41.
さまざまなブラウザでの結果 Copyright
© 2012 HASH Consulting Corp. 41
42.
で、IE9は? Copyright © 2012
HASH Consulting Corp. 42
43.
大丈夫なのか Copyright © 2012
HASH Consulting Corp. 43
44.
でも、だめ http://example.jp/json.php/a.html
Copyright © 2012 HASH Consulting Corp. 44
45.
Copyright © 2012
HASH Consulting Corp. 45 http://d.hatena.ne.jp/hasegawayosuke/20110106/p1 より引用
46.
Copyright © 2012
HASH Consulting Corp. 46 http://d.hatena.ne.jp/hasegawayosuke/20110106/p1 より引用
47.
X-Content-Type-Options: nosniff を入れてみる
生成される JSON X-Content-Type-Options: nosniff Content-Length: 125 Content-Type: application/json; charset=utf8 [{"image":"img/1.jpg","image_big":"img/1_b ig.jpg","caption":"u30adu30e3u30d7u30b7 u30e7u30f31<body onload=alert(1)>"}] Copyright © 2012 HASH Consulting Corp. 47
48.
IE9だとOK(IE8以上) Copyright © 2012
HASH Consulting Corp. 48
49.
IE7だとだめ Copyright © 2012
HASH Consulting Corp. 49
50.
50
51.
対策 • 必須対策(全ブラウザ共通)
– レスポンスがブラウザによりtext/htmlと解釈されないようにす る X-Content-Type-Options: nosniff Content-Type: application/json; charset=utf8 • IE6,7対策 – IE7以前をサポートしない – ブラウザからの直接リクエストを受け付けない – 「<」、「>」などもエスケープする Copyright © 2012 HASH Consulting Corp. 51
52.
Json_encodeのパラメータを追加 生成される JSON [{"image":"img/1.jpg","image_big":"img/1_bi g.jpg","caption":"u30adu30e3u30d7u30b7u3 0e7u30f31u003Cbody onload=alert(1)u003E"}]
Copyright © 2012 HASH Consulting Corp. 52
53.
今度は大丈夫 Copyright © 2012
HASH Consulting Corp. 53
54.
次の話題はJSONハイジャック
Copyright © 2012 HASH Consulting Corp. 54
55.
Firefox3などで発現。現在の主要ブ
ラウザでは対策されている Copyright © 2012 HASH Consulting Corp. 55
56.
JSONハイジャックとは • JSONを罠サイトからscript要素で読み出す • 利用者のブラウザからは、正規のCookieが送信されるの
で、認証ずみの状態でJSONが取得できる • なんらかの手法で、このJSONの中味を読むのがJSONハ イジャック これは罠サイト <script> ここにJSONを読み出す仕掛けを置く // script要素で読み出したJSON [{"name":"Yamada", "mail":"
[email protected]
"}] </script> Copyright © 2012 HASH Consulting Corp. 56
57.
サンプルスクリプト(罠) Copyright ©
2012 HASH Consulting Corp. 57
58.
結果 Copyright © 2012
HASH Consulting Corp. 58
59.
Firefox11.0だと問題なし Copyright ©
2012 HASH Consulting Corp. 59
60.
Androidの標準ブラウザでハイジャック成功
Xperia ARC(SO-01C) Android 2.3.4 でキャプチャ Galaxy Nexus Android 4.0.3では取得できず Copyright © 2012 HASH Consulting Corp. 60
61.
対策 • script要素からのリクエストにはレスポンスを返さない
ようにする – XMLHttpRequestからのリクエストに特別なヘッダを入れてお き、JSON提供側でチェックするなど Jqueryの以下のヘッダを使っても良いかも X-Requested-With: XMLHttpRequest – POSTにのみ応答(個人的には好みません) • JSONデータを、JavaScriptとして実行できない形にする – 1行目に for(;;) ; を置く(個人的には好みません) – JSONデータをJavaScriptとして実行できない形にする(同 上) • JSONハイジャック可能なブラウザを使わない(利用者 側でとれる対策) Copyright © 2012 HASH Consulting Corp. 61
62.
まとめ • HTML5の話題が盛り上がる中、HTML4のAjaxのセキュ
リティが当たり前になっていない • 分かっている人と分かってない人の二極化が進んでい る? • どうすればよいか、よく考えよう • CSRF等もふつーに発生するので、ふつーに対策するこ と Copyright © 2012 HASH Consulting Corp. 62
63.
ドリランド カード増殖祭りはこうし ておこった…かも?
Copyright © 2012 HASH Consulting Corp. 63
64.
64 https://help.gree.jp/app/answers/detail/a_id/3231 より引用
65.
こんな感じだった? 必要なもの 携帯もしくはPCを二台 gleeアカウント二つ 二台の機器でそれぞれのgleeアカウントでログインしてドリ ランド起動後お互いでトレードさせる トレード(受け取りはしない)が終わったら片方の機器はログア ウトして二つの機器のアカウントを同じにする それぞれトレード品受け取り画面にして受け取るボタン同時 押し カード毎にID振って無いのかよ。。。。 馬鹿じゃねぇの? >>277 ちゃんとふってあるけど、トレード時にトレードされる側と する側で ちゃんとアイテムIDが変わる仕様だったw
65 http://jin115.com/archives/51849925.html より引用
66.
こんな感じだった? DBからトレード元のカードのデータを読み取る 新しいIDをつけてトレード先に保存する トレード元のデータを削除する
http://bakera.jp/ebi/topic/4722 より引用 66
67.
作ってみた // トレードするカードのidと新オーナーのidがパラメータ $item_id =
(int)$_GET['item_id']; $newowner = (int)$_GET['newowner']; // カード情報を取得 $stmt = $pdo->query( "SELECT * FROM cards WHERE item_id=$item_id"); $row = $stmt->fetch(PDO::FETCH_ASSOC); $kind = $row['kind']; $owner_id = $row['owner_id']; // トレード後のカードを作成 $stmt = $pdo->exec("INSERT INTO cards VALUES (NULL, $kind,". "$newowner, $item_id, $owner_id, NOW())"); // 元のカードを削除 $stmt = $pdo->exec( "DELETE FROM cards WHERE item_id= $item_id "); ※デモスクリプトはプレースホルダをちゃんと使っています! Copyright © 2012 HASH Consulting Corp. 67
68.
DEMO Copyright © 2012
HASH Consulting Corp. 68
69.
中ではこうなった Copyright © 2012
HASH Consulting Corp. 69
70.
対策 • トランザクションを使う –
PDOの場合は、begeinTransaction ~ commit / rollbackの間 • ロック(排他制御) – SELECT … FOR UPDATE など • 上記の両方が必須 – トランザクションを使うだけでは排他制御にならない場合が多 い 厳密にはDB依存 および モードに依存 • 「クリティカルセクション」に注意 – このスクリプトの場合は、SELECT ~ DELETE FROMまでは クリティカルセクションであり、同一カードIDについては並行 動作してはいけない • ちゃんとRDBを基礎から勉強しよう Copyright © 2012 HASH Consulting Corp. 70
71.
トランザクションと行ロックで対策 try {
$pdo->beginTransaction(); $item_id = (int)$_GET['item_id']; $stmt = $pdo->query( "SELECT * FROM cards WHERE item_id=$item_id FOR UPDATE"); $row = $stmt->fetch(PDO::FETCH_ASSOC); if (! $row) throw new DataNotFoundException(); $kind = $row['kind']; $owner_id = $row['owner_id']; $stmt = $pdo->exec("INSERT INTO cards VALUES (NULL, $kind,". "$newowner, $item_id, $owner_id, NOW())"); $stmt = $pdo->exec( "DELETE FROM cards WHERE item_id=$item_id"); $pdo->commit(); } catch (DataNotFoundException $e) { $pdo->rollback(); } catch (Exception $e) { // …… ※上記は概要でありデモスクリプトはプレースホルダをちゃんと使っています! Copyright © 2012 HASH Consulting Corp. 71
72.
中ではこうなる Copyright © 2012
HASH Consulting Corp. 72
73.
トランザクションを難しくする要因 • NoSQL • Memcached •
データベースのパーティショニング、シャーディング • データベースのレプリケーション • LDAP、ファイル等トランザクション非対応のストレー ジ • … • 完全なロールバックが難しい場合でも、排他制御だけな ら比較的容易に実装できる場合がある Copyright © 2012 HASH Consulting Corp. 73
74.
まとめ • 徳丸本に載っていない脆弱性をいくつか紹介しました • 「徳丸本に載っていることだけやっていればおk」ではない •
プログラミングの基礎(並行処理、トランザクション、etc)を勉 強しよう • そうは言っても、まずは「徳丸本」のマスターから始めよう(宣 伝) Copyright © 2012 HASH Consulting Corp. 74
75.
Thank you!
Copyright © 2012 HASH Consulting Corp. 75