Skip to main content
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
EN
Upload
Download free for 30 days
Sign in
JC
Uploaded by
JPCERT Coordination Center
PPTX, PDF
4,876 views
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
JVNVU#99757346 に関する説明資料 JVNVU#99757346 のアドバイザリリンク URL を修正 (7 of 65)
Software
◦
Read more
4
Save
Share
Embed
Save to Drive
Download now
Download to read offline
1
/ 65
2
/ 65
3
/ 65
4
/ 65
5
/ 65
6
/ 65
7
/ 65
8
/ 65
9
/ 65
10
/ 65
11
/ 65
12
/ 65
13
/ 65
14
/ 65
15
/ 65
16
/ 65
17
/ 65
18
/ 65
19
/ 65
20
/ 65
More Related Content
PDF
クロスサイトリクエストフォージェリ(CSRF)とその対策
by
JPCERT Coordination Center
104 slides
18.7K views
PDF
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
by
JPCERT Coordination Center
41 slides
6.7K views
PDF
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
by
JPCERT Coordination Center
34 slides
1.4K views
PDF
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
by
JPCERT Coordination Center
22 slides
3.3K views
PDF
Apache Axis2におけるXML署名検証不備
by
JPCERT Coordination Center
34 slides
2.5K views
PDF
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
by
JPCERT Coordination Center
54 slides
4.4K views
PDF
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
by
JPCERT Coordination Center
61 slides
2.1K views
PDF
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
by
JPCERT Coordination Center
47 slides
11.5K views
クロスサイトリクエストフォージェリ(CSRF)とその対策
by
JPCERT Coordination Center
104 slides
18.7K views
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
by
JPCERT Coordination Center
41 slides
6.7K views
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
by
JPCERT Coordination Center
34 slides
1.4K views
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
by
JPCERT Coordination Center
22 slides
3.3K views
Apache Axis2におけるXML署名検証不備
by
JPCERT Coordination Center
34 slides
2.5K views
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
by
JPCERT Coordination Center
54 slides
4.4K views
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
by
JPCERT Coordination Center
61 slides
2.1K views
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
by
JPCERT Coordination Center
47 slides
11.5K views
What's hot
PDF
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
by
JPCERT Coordination Center
33 slides
1.5K views
PDF
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
by
JPCERT Coordination Center
29 slides
3.1K views
PDF
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
by
JPCERT Coordination Center
44 slides
1.3K views
PDF
MySQL Connector/J における SQL インジェクションの脆弱性
by
JPCERT Coordination Center
36 slides
1.3K views
PDF
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
by
JPCERT Coordination Center
45 slides
2.4K views
PDF
Apache Struts2 における任意の Java メソッド実行の脆弱性
by
JPCERT Coordination Center
35 slides
3.4K views
PDF
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
by
JPCERT Coordination Center
41 slides
3.7K views
PDF
Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性
by
JPCERT Coordination Center
34 slides
805 views
PDF
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
by
JPCERT Coordination Center
56 slides
3.3K views
PDF
DLL読み込みの問題を読み解く
by
JPCERT Coordination Center
48 slides
8.3K views
PDF
[デブサミ2012]趣味と実益の脆弱性発見
by
Yosuke HASEGAWA
69 slides
6.8K views
PPTX
Klocwork カスタムチェッカー紹介
by
Masaru Horioka
22 slides
891 views
PPT
Struts2を始めよう!
by
Shinpei Ohtani
41 slides
7.2K views
PDF
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
by
Hiroshi Tokumaru
99 slides
14.7K views
PPTX
Klocwork 2017.1アップデート
by
Masaru Horioka
27 slides
551 views
PDF
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
by
Sen Ueno
56 slides
2.4K views
PDF
Microblaze loader
by
Takefumi MIYOSHI
27 slides
3.5K views
PDF
Head toward Java 16 (Night Seminar Edition)
by
Yuji Kubota
32 slides
553 views
PDF
第32回Websig会議「クラウドは○○を共有するサービス」
by
Sen Ueno
37 slides
1.2K views
PPTX
静的解析ツールKlocwork によるCERT-C/CWE対応
by
Masaru Horioka
30 slides
1.1K views
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
by
JPCERT Coordination Center
33 slides
1.5K views
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
by
JPCERT Coordination Center
29 slides
3.1K views
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
by
JPCERT Coordination Center
44 slides
1.3K views
MySQL Connector/J における SQL インジェクションの脆弱性
by
JPCERT Coordination Center
36 slides
1.3K views
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
by
JPCERT Coordination Center
45 slides
2.4K views
Apache Struts2 における任意の Java メソッド実行の脆弱性
by
JPCERT Coordination Center
35 slides
3.4K views
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
by
JPCERT Coordination Center
41 slides
3.7K views
Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性
by
JPCERT Coordination Center
34 slides
805 views
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
by
JPCERT Coordination Center
56 slides
3.3K views
DLL読み込みの問題を読み解く
by
JPCERT Coordination Center
48 slides
8.3K views
[デブサミ2012]趣味と実益の脆弱性発見
by
Yosuke HASEGAWA
69 slides
6.8K views
Klocwork カスタムチェッカー紹介
by
Masaru Horioka
22 slides
891 views
Struts2を始めよう!
by
Shinpei Ohtani
41 slides
7.2K views
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
by
Hiroshi Tokumaru
99 slides
14.7K views
Klocwork 2017.1アップデート
by
Masaru Horioka
27 slides
551 views
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
by
Sen Ueno
56 slides
2.4K views
Microblaze loader
by
Takefumi MIYOSHI
27 slides
3.5K views
Head toward Java 16 (Night Seminar Edition)
by
Yuji Kubota
32 slides
553 views
第32回Websig会議「クラウドは○○を共有するサービス」
by
Sen Ueno
37 slides
1.2K views
静的解析ツールKlocwork によるCERT-C/CWE対応
by
Masaru Horioka
30 slides
1.1K views
Viewers also liked
PDF
脆弱性情報はこうしてやってくる
by
JPCERT Coordination Center
25 slides
3.9K views
PPTX
ngCore engine for mobage platform
by
Toru Yamaguchi
44 slides
9.8K views
PDF
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
by
JPCERT Coordination Center
45 slides
1.4K views
PDF
OWASP ZAP(など)で挑む SECCON
by
Jun Matsumoto
82 slides
685 views
PPTX
[CB16] 機械学習でWebアプリケーションの脆弱性を見つける方法 by 高江須 勲
by
CODE BLUE
177 slides
2.1K views
PDF
Blojsom におけるクロスサイトスクリプティングの脆弱性
by
JPCERT Coordination Center
28 slides
1.1K views
PDF
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
by
JPCERT Coordination Center
74 slides
2K views
PDF
自分よりも技術力の高い会社に入社して感じたこと
by
Suzuki Masayuki
247 slides
4.3K views
PDF
Devsumi2015_20E1 エンジニアが知っておきたいお金の話
by
Akio Doi
46 slides
35.6K views
PDF
とある診断員と色々厄介な脆弱性達
by
zaki4649
37 slides
27.5K views
PDF
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
by
teapipin
75 slides
1.3M views
PPTX
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
by
Hiroshi Tokumaru
49 slides
75.7K views
PDF
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
by
Shinichi Hirauchi
48 slides
224.9K views
脆弱性情報はこうしてやってくる
by
JPCERT Coordination Center
25 slides
3.9K views
ngCore engine for mobage platform
by
Toru Yamaguchi
44 slides
9.8K views
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
by
JPCERT Coordination Center
45 slides
1.4K views
OWASP ZAP(など)で挑む SECCON
by
Jun Matsumoto
82 slides
685 views
[CB16] 機械学習でWebアプリケーションの脆弱性を見つける方法 by 高江須 勲
by
CODE BLUE
177 slides
2.1K views
Blojsom におけるクロスサイトスクリプティングの脆弱性
by
JPCERT Coordination Center
28 slides
1.1K views
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
by
JPCERT Coordination Center
74 slides
2K views
自分よりも技術力の高い会社に入社して感じたこと
by
Suzuki Masayuki
247 slides
4.3K views
Devsumi2015_20E1 エンジニアが知っておきたいお金の話
by
Akio Doi
46 slides
35.6K views
とある診断員と色々厄介な脆弱性達
by
zaki4649
37 slides
27.5K views
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
by
teapipin
75 slides
1.3M views
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
by
Hiroshi Tokumaru
49 slides
75.7K views
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
by
Shinichi Hirauchi
48 slides
224.9K views
Similar to Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
PDF
AndroidでWebSocket
by
Kohei Kadowaki
40 slides
10.9K views
PDF
[Ps11]ネットワーク第4回
by
Yukiko Kato
16 slides
777 views
DOCX
ネットワーク第5回
by
Yukiko Kato
16 slides
498 views
PPTX
もしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したら
by
abend_cve_9999_0001
57 slides
8.9K views
PDF
OAuth 2.0 MAC Authentication
by
Ryo Ito
27 slides
1.9K views
PDF
HTTP2 時代の Web - web over http2
by
Jxck Jxck
80 slides
48.9K views
PDF
HTTP2入門
by
Sota Sugiura
63 slides
1.1K views
PDF
20120423 hbase勉強会
by
Toshiaki Toyama
53 slides
2.9K views
PDF
Stuart attacking http2 implementations truefinal-jp
by
PacSecJP
33 slides
603 views
PDF
GDG Shikoku 2013
by
Takashi EGAWA
45 slides
1.2K views
PPTX
Akka HTTP
by
TanUkkii
34 slides
2.8K views
PDF
API通信周りの継続的なテストの仕組み~SideCIでの実践~
by
Koichiro Sumi
24 slides
621 views
PDF
Janogia20120921 yoshinotakeshi
by
Keisuke Ishibashi
25 slides
2.2K views
PDF
IETF91 Honolulu httpbis WG Report
by
Kaoru Maeda
25 slides
1.4K views
PDF
女子中高生とTwitter4J #twtr_hack
by
Itsuki Kuroda
63 slides
3.6K views
PPTX
[CB16] 難解なウェブアプリケーションの脆弱性 by Andrés Riancho
by
CODE BLUE
50 slides
1.3K views
PPTX
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
by
removed_96f4639f4009e61a478bf38f188e8404
18 slides
18.9K views
PDF
IETF90 Web関連WG報告 #isocjp
by
Kaoru Maeda
33 slides
1.7K views
PDF
Outsmarting Smartphone Apps 2
by
Takahiro Yoshimura
83 slides
363 views
PDF
Basics: OAuth and OpenID Connect #fapisum - Japan/UK Open Banking and APIs Su...
by
FinTechLabs.io
76 slides
3.7K views
AndroidでWebSocket
by
Kohei Kadowaki
40 slides
10.9K views
[Ps11]ネットワーク第4回
by
Yukiko Kato
16 slides
777 views
ネットワーク第5回
by
Yukiko Kato
16 slides
498 views
もしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したら
by
abend_cve_9999_0001
57 slides
8.9K views
OAuth 2.0 MAC Authentication
by
Ryo Ito
27 slides
1.9K views
HTTP2 時代の Web - web over http2
by
Jxck Jxck
80 slides
48.9K views
HTTP2入門
by
Sota Sugiura
63 slides
1.1K views
20120423 hbase勉強会
by
Toshiaki Toyama
53 slides
2.9K views
Stuart attacking http2 implementations truefinal-jp
by
PacSecJP
33 slides
603 views
GDG Shikoku 2013
by
Takashi EGAWA
45 slides
1.2K views
Akka HTTP
by
TanUkkii
34 slides
2.8K views
API通信周りの継続的なテストの仕組み~SideCIでの実践~
by
Koichiro Sumi
24 slides
621 views
Janogia20120921 yoshinotakeshi
by
Keisuke Ishibashi
25 slides
2.2K views
IETF91 Honolulu httpbis WG Report
by
Kaoru Maeda
25 slides
1.4K views
女子中高生とTwitter4J #twtr_hack
by
Itsuki Kuroda
63 slides
3.6K views
[CB16] 難解なウェブアプリケーションの脆弱性 by Andrés Riancho
by
CODE BLUE
50 slides
1.3K views
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
by
removed_96f4639f4009e61a478bf38f188e8404
18 slides
18.9K views
IETF90 Web関連WG報告 #isocjp
by
Kaoru Maeda
33 slides
1.7K views
Outsmarting Smartphone Apps 2
by
Takahiro Yoshimura
83 slides
363 views
Basics: OAuth and OpenID Connect #fapisum - Japan/UK Open Banking and APIs Su...
by
FinTechLabs.io
76 slides
3.7K views
More from JPCERT Coordination Center
PDF
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
by
JPCERT Coordination Center
63 slides
899 views
PDF
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
by
JPCERT Coordination Center
16 slides
588 views
PDF
ソフトウェアセキュリティ保証成熟度モデル
by
JPCERT Coordination Center
96 slides
718 views
PDF
Android Secure Coding
by
JPCERT Coordination Center
259 slides
9K views
PDF
Javaセキュアコーディングセミナー東京第2回演習の解説
by
JPCERT Coordination Center
18 slides
572 views
PDF
Javaセキュアコーディングセミナー東京第4回演習の解説
by
JPCERT Coordination Center
27 slides
449 views
PDF
Javaセキュアコーディングセミナー東京第4回講義
by
JPCERT Coordination Center
60 slides
958 views
PDF
Javaセキュアコーディングセミナー東京第3回演習
by
JPCERT Coordination Center
8 slides
372 views
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
by
JPCERT Coordination Center
63 slides
899 views
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
by
JPCERT Coordination Center
16 slides
588 views
ソフトウェアセキュリティ保証成熟度モデル
by
JPCERT Coordination Center
96 slides
718 views
Android Secure Coding
by
JPCERT Coordination Center
259 slides
9K views
Javaセキュアコーディングセミナー東京第2回演習の解説
by
JPCERT Coordination Center
18 slides
572 views
Javaセキュアコーディングセミナー東京第4回演習の解説
by
JPCERT Coordination Center
27 slides
449 views
Javaセキュアコーディングセミナー東京第4回講義
by
JPCERT Coordination Center
60 slides
958 views
Javaセキュアコーディングセミナー東京第3回演習
by
JPCERT Coordination Center
8 slides
372 views
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
1.
Android Platform の URLConnection
クラスに HTTP ヘッダインジェクション の脆弱性 JPCERT コーディネーションセンター 情報流通対策グループ 佐藤 裕二
2.
Copyright©2016 JPCERT/CC All
rights reserved. 目次 1 前半 – 脆弱性の調査 —脆弱性調査の経緯 —HTTP ヘッダインジェクションの概要 —脆弱な URLConnection クラス —Proof of Concept code —脆弱性の影響を受ける Android バージョン
3.
Copyright©2016 JPCERT/CC All
rights reserved. 目次 2 後半 – ソースコードの詳細調査 —Android Platform が提供している Java 実行環境 —正しい URLConnection クラスの実装 (OpenJDK) —脆弱な URLConnection クラスの実装 (Android 6.0) —修正された URLConnection クラスの実装 (master ブランチ) まとめ 参考情報 謝辞
4.
Copyright©2016 JPCERT/CC All
rights reserved. 前半 - 脆弱性の調査 3
5.
Copyright©2016 JPCERT/CC All
rights reserved. 目次 4 前半 – 脆弱性の調査 —脆弱性調査の経緯 —HTTP ヘッダインジェクションの概要 —脆弱なURLConnection クラス —Proof of Concept code —脆弱性の影響を受ける Android バージョン
6.
Copyright©2016 JPCERT/CC All
rights reserved. 脆弱性調査の経緯 5 Apache Cordova プラグイン cordova-plugin-file-transfer における HTTP ヘッダインジェクションの脆弱性 —https://jvn.jp/jp/JVN21612597/ 上記の Apache Cordova プラグインの脆弱性報告者であ る西村 宗晃 氏より、脆弱性の根本原因は Apache Cordova プラグインではなく、Android Platform の Java 標準API の URLConnection クラスにあるとの追加報告 を受けた
7.
Copyright©2016 JPCERT/CC All
rights reserved. JPCERT/CC の調査と調整 6 西村氏からの脆弱性報告をもとに Android Platform の URLConnection クラスの 脆弱性を調査した Android Security Team とアドバイザリ公開に向けた調整 を実施した (JVNVU#99757346) —https://jvn.jp/vu/JVNVU99757346/index.html Android Security Team から将来の Android バージョンで の修正が明言された —既存 Android バージョンへの対応は言及なし —Android Security Team からの返信内容 Hi, I discussed this with our engineering team and the fix in AOSP is here: https://android-review.googlesource.com/#/c/171350/1 This will be part of a future release (most likely Android 7) and not part of Android 6 or below.
8.
Copyright©2016 JPCERT/CC All
rights reserved. 目次 7 前半 – 脆弱性の調査 —脆弱性調査の経緯 —HTTP ヘッダインジェクションの概要 —脆弱な URLConnection クラス —Proof of Concept code —脆弱性の影響を受ける Android のバージョン
9.
Copyright©2016 JPCERT/CC All
rights reserved. HTTP ヘッダインジェクションの概要 8 安全なウェブサイトの作り方 —http://www.ipa.go.jp/files/000017316.pdf ウェブアプリケーションの中には、リクエストに対して出力する HTTP レスポンスヘッダのフィールド値を、外部から渡されるパラ メータの値等を利用して動的に生成するものがあります。 たとえば、HTTP リダイレクションの実装として、パラメータから 取得したジャンプ先の URL 情報を、Location ヘッダのフィールド 値に使用する場合や、掲示板等において入力された名前等を Set- Cookie ヘッダのフィールド値に使用する場合等が挙げられます。 このようなウェブアプリケーションで、HTTP レスポンスヘッダの 出力処理に問題がある場合、攻撃者は、レスポンス内容に任意の ヘッダフィールドを追加したり、任意のボディを作成したり、複数 のレスポンスを作り出すような攻撃を仕掛ける場合があります。 このような問題を「HTTP ヘッダ・インジェクションの脆弱性」と 呼び、この問題を悪用した攻撃手法は「HTTP ヘッダ・インジェク ション攻撃」と呼びます。
10.
Copyright©2016 JPCERT/CC All
rights reserved. HTTP ヘッダインジェクションの概要 9
11.
Copyright©2016 JPCERT/CC All
rights reserved. 目次 10 前半 – 脆弱性の調査 —脆弱性調査の経緯 —HTTP ヘッダインジェクションの概要 —脆弱な URLConnection クラス —Proof of Concept code —脆弱性の影響を受ける Android バージョン
12.
Copyright©2016 JPCERT/CC All
rights reserved. 脆弱な URLConnection クラス 11 脆弱な URLConnection クラス —http://developer.android.com/intl/ja/reference/java/net/URL Connection.html —A connection to a URL for reading or writing. For HTTP connections, see HttpURLConnection for documentation of HTTP-specific features.
13.
Copyright©2016 JPCERT/CC All
rights reserved. 脆弱な URLConnection クラス 12 脆弱性なメソッド —public void addRequestProperty (String field, String newValue) Adds the given property to the request header. Existing properties with the same name will not be overwritten by this method. —public void setRequestProperty (String field, String newValue) Sets the value of the specified request header field. The value will only be used by the current URLConnection instance. This method can only be called before the connection is established. HTTP ヘッダを設定するクラスのメソッド で引数の入力値検査を行っていないため、 改行コードを注入可能な脆弱性を持つ ※ 以下、addRequestProperty() は冗長なので記載を省く
14.
Copyright©2016 JPCERT/CC All
rights reserved. 目次 13 前半 – 脆弱性の調査 —脆弱性調査の経緯 —HTTP ヘッダインジェクションの概要 —脆弱な URLConnection クラス —Proof of Concept code —脆弱性の影響を受ける Android バージョン
15.
Copyright©2016 JPCERT/CC All
rights reserved. Proof of Concept code 14 ・改行コード による意図しない改行の挿入 この例では開発者が意図しない改行コードと Cookie の値を設定するコードを挿入 ・入力値検査を行っていない脆弱なクラスメソッド 入力値検査を行っていないため、意図しない Cookie を設定されてしまう
16.
Copyright©2016 JPCERT/CC All
rights reserved. 目次 15 前半 – 脆弱性の調査 —脆弱性調査の経緯 —HTTP ヘッダインジェクションの概要 —脆弱な URLConnection クラス —Proof of Concept code —脆弱性の影響を受ける Android バージョン
17.
Copyright©2016 JPCERT/CC All
rights reserved. 脆弱性の影響を受ける Android バージョン 16 影響範囲の調査 —Android 2.3.3 ~ 6.0 (エミュレータ) で検証コードの動作確認を 実施した (実行結果のスクリーンショットは次々ページ) —Obsolete 扱いの Android バージョンは対象外 バージョン ニックネーム API Level 2.3.3 Gingerbread 10 4.0.3 IceCreamSandwich 15 4.3.1 Jelly Bean 18 4.4.2 KitKat 19 5.1.1 Lollipop 22 6.0 Marshmallow 23
18.
Copyright©2016 JPCERT/CC All
rights reserved. 影響範囲調査の結果 17 6.0 まで全ての Android バージョンが影響を受ける —脆弱性報告のとおり Android Platform の URLConnection クラス に HTTP ヘッダインジェクションの脆弱性がある OpenJDK や OracleJDK では改行コードを挿入しようと すると例外がスローされ、脆弱性は存在しなかった —OracleJDK バージョン : “1.8.0_72” で確認
19.
Copyright©2016 JPCERT/CC All
rights reserved. 検証コード実行結果のスクリーンショット 18 Android 2.3.3 Gingerbread (API Level 10) Android 4.0.3 IceCreamSandwich (API Level 15)
20.
Copyright©2016 JPCERT/CC All
rights reserved. 検証コード実行結果のスクリーンショット 19 Android 4.3.1 Jelly Bean (API Level 18) Android 4.4.2 KitKat (API Level 19)
21.
Copyright©2016 JPCERT/CC All
rights reserved. 検証コード実行結果のスクリーンショット 20 Android 5.1.1 Lollipop (API Level 22) Android 6.0 Marshmallow (API Level 23)
22.
Copyright©2016 JPCERT/CC All
rights reserved. 後半 - ソースコードの詳細調査 21
23.
Copyright©2016 JPCERT/CC All
rights reserved. 前半 – 脆弱性の調査を踏まえ Android Platform の URLConnection クラスにどのよう な問題があり、どのように修正されたのかを確認した 22
24.
Copyright©2016 JPCERT/CC All
rights reserved. 目次 23 後半 – ソースコードの詳細調査 —Android Platform が提供している Java 実行環境 —正しい URLConnection クラスの実装 (OpenJDK) —脆弱な URLConnection クラスの実装 (Android 6.0) —修正された URLConnection クラスの実装 (master ブランチ) まとめ 参考情報 謝辞
25.
Copyright©2016 JPCERT/CC All
rights reserved. Android Platform が提供している Java 実行環境 24 中身は他のオープンソースから移植や独自実装が混在 URLConnection クラスは Android バージョンにより実装 が異なる (詳細は次ページ) Oracle Java Google Android Java OpenJDK (リファレンス) Java Apache Harmony etc JAVA ほぼ同一実装 オープンソースから移植 or 独自実装 Apache Harmony etc Java
26.
Copyright©2016 JPCERT/CC All
rights reserved. Android Platform の URLConnection クラス 25 Android バージョンによる実装の違い Android 2.2 ~ Apache Harmony Android 4.4.2~ OkHttp Android 4.0.3 ~ 独自実装? 標準 API 準拠の抽象クラス
27.
Copyright©2016 JPCERT/CC All
rights reserved. Android Platform の URLConnection クラス 26 Android バージョンによる実装の違い Android 2.2 ~ Apache Harmony Android 4.4.2~ OkHttp Android 4.0.3 ~ 独自実装? 標準 API 準拠の抽象クラス デザインパターン? Strategy? いえいえ、ベタっと実装してますちょっと読みづらい 全ての Android バージョンの URLConnection クラスの実装で脆弱性が 存在している Apache Harmony も OkHttp も同じ脆弱性を持っていたんですね これらを踏まえて URLConnection クラス の実装を確認してみましょう
28.
Copyright©2016 JPCERT/CC All
rights reserved. 目次 27 後半 – ソースコードの詳細調査 —Android Platform が提供している Java 実行環境 —正しい URLConnection クラスの実装 (OpenJDK) —脆弱な URLConnection クラスの実装 (Android 6.0) —修正された URLConnection クラスの実装 (master ブランチ) まとめ 参考情報 謝辞
29.
Copyright©2016 JPCERT/CC All
rights reserved. 正しい URLConnection の実装 (OpenJDK) 28 脆弱性を持つ Android Platform の URLConnection クラ スを確認する前に、脆弱性のない Java のリファレンス 実装である OpenJDK の正しい実装を確認する —URLConnection クラスと関連クラス図 —HTTP ヘッダを設定する処理のシーケンス図 —HTTP ヘッダ設定時に実施される入力値検査 —RFC との整合性
30.
Copyright©2016 JPCERT/CC All
rights reserved. URLConnection クラスと関連クラス図 29
31.
Copyright©2016 JPCERT/CC All
rights reserved. URLConnection クラスと関連クラス図 (抽象クラス) 30 アプリケーションの 実装者が扱う抽象クラス (Java 標準 API 準拠)
32.
Copyright©2016 JPCERT/CC All
rights reserved. URLConnection クラスと関連クラス図 (実装クラス) 31 Java 標準 API の URLConnection クラスを 継承し setRequestProperty() を実装している HttpURLConnection クラス HTTP ヘッダのキーと 値を保持するクラス Sun のパッケージって残ってたんですね
33.
Copyright©2016 JPCERT/CC All
rights reserved. HTTP ヘッダを設定する処理のシーケンス図 32 HttpURLConnection.checkMessageHeader() で改行 コードの入力値検査を行っている
34.
Copyright©2016 JPCERT/CC All
rights reserved. HTTP ヘッダ設定時に実施される入力値検査 33 改行コード LF (‘n’) の後が スペースまたは水平タブなら OK 条件を満たさなければ IllegalArgumentException を スローする実装になっている
35.
Copyright©2016 JPCERT/CC All
rights reserved. RFC との整合性 34 改行コード LF (‘n’) の後がスペースまたは水平タブなら OK — RFC2616 で定義されている内容と一致する RFC 2616 とは
36.
Copyright©2016 JPCERT/CC All
rights reserved. RFC 2616 (2.2 Basic Rule) 35 RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1 June 1999 —https://www.ietf.org/rfc/rfc2616.txt —1999 年に RFC で公開された HTTP 1.1 の仕様 —改行コードの扱いは 2.2 Basic Rule で定義 改行コード後のスペースと水平タブを許可 いわゆる「継続行」を許可している
37.
Copyright©2016 JPCERT/CC All
rights reserved. RFC 2616 から RFC 723x へ 36 RCF 2616 Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234 and RFC7235 2014年に HTTP に関する RFC が更新 —RFC7230 HTTP/1.1 Message Syntax and Routing —RFC7231 HTTP/1.1 Semantics and Content —RFC7232 HTTP/1.1 Conditional Requests —RFC7233 HTTP/1.1 Range Requests —RFC7234 HTTP/1.1 Caching —RFC7235 HTTP/1.1 Authentication 改行コードや LWS の扱いはどう変わったか?
38.
Copyright©2016 JPCERT/CC All
rights reserved. RFC 7230 (3.2 Header Fields) 37 RFC 7230 HTTP/1.1 Message Syntax and Routing June 2014 —https://www.ietf.org/rfc/rfc7230.txt —3.2 Header Fields 改行後のスペースと水平タブも禁止に つまり継続行は廃止された
39.
Copyright©2016 JPCERT/CC All
rights reserved. RFC 7230 (3.2.4 Field Parsing) 38 RFC 7230 HTTP/1.1 Message Syntax and Routing June 2014 —https://www.ietf.org/rfc/rfc7230.txt —3.2.4 Field Parsing 全面的に継続行の廃止ではなく、例外として message / http media type では有効となっている
40.
Copyright©2016 JPCERT/CC All
rights reserved. OpenJDK の URLConnection クラスの実装まとめ 39 RFC 2616 に準拠した実装になっている 改行コード後にスペースか水平タブ以外の値を設定する と例外 (IllegalArgumentException) をスローする Android Platform の URLConnection クラスではどうなっ ているのか?
41.
Copyright©2016 JPCERT/CC All
rights reserved. 目次 40 後半 – ソースコードの詳細調査 —Android Platform が提供している Java 実行環境 —正しい URLConnection クラスの実装 (OpenJDK) —脆弱な URLConnection クラスの実装 (Android 6.0) —修正された URLConnection クラスの実装 (master ブランチ) まとめ 参考情報 謝辞
42.
Copyright©2016 JPCERT/CC All
rights reserved. 脆弱な URLConnection クラスの実装 41 Android Platform の 脆弱な URLConnection クラスの実 装を確認する 本稿では Android 6.0 を対象に実装の確認を行う —Android バージョンによる実装の違い —URLConnection クラスと関連クラス図 —HTTP ヘッダを設定する処理のシーケンス図 —HTTP ヘッダ設定時に実施される入力値検査 —RFC との整合性
43.
Copyright©2016 JPCERT/CC All
rights reserved. Android バージョンによる実装の違い 42 Android 6.0 では OkHttp のソースコードを使用している Android 2.2 ~ Apache Harmony Android 4.4.2~ OkHttp Android 4.0.3 ~ 独自実装? 標準 API 準拠の抽象クラス Android 6.0 では OkHttp のソースコードが使用されている しかし取り込んだバージョンの OkHttpに HTTP ヘッダイン ジェクションの脆弱性が存在した
44.
Copyright©2016 JPCERT/CC All
rights reserved. OkHttp とは 43 OkHttp —http://square.github.io/okhttp/ —Apache License, Version 2.0 の HTTP & HTTP/2 クライア ントライブラリ —Android Platform の URLConnection の実装に OkHttp (version 2.5 より前) のソースコードが取り込まれている Andorid 6.0 の URLConnection クラスの実装 (OkHttp か ら取り込んだ実装)を示す
45.
Copyright©2016 JPCERT/CC All
rights reserved. URLConnection クラスと関連クラス図 44
46.
Copyright©2016 JPCERT/CC All
rights reserved. URLConnection クラスと関連クラス図 (抽象クラス) 45 アプリケーションの 実装者が扱う抽象クラス (Java 標準 API 準拠)
47.
Copyright©2016 JPCERT/CC All
rights reserved. URLConnection クラスと関連クラス図 (実装クラス) 46 HTTP ヘッダのキーと 値を保持するクラス Java 標準 API の URLConnection クラスを 継承し setRequestProperty() を実装している HttpURLConnectionImp クラス
48.
Copyright©2016 JPCERT/CC All
rights reserved. HTTP ヘッダを設定する処理のシーケンス図 47 Android Platform では HTTP ヘッダの設定に関わる全て のクラスとメソッドで入力値検査をしていないのか? これらのクラスとメソッドで入力値検査をしているか確認した
49.
Copyright©2016 JPCERT/CC All
rights reserved. HTTP ヘッダ設定時に実施される入力値検査 48 ] 引数に対する Null Check はされているが・・・
50.
Copyright©2016 JPCERT/CC All
rights reserved. HTTP ヘッダ設定時に実施される入力値検査 49 内部メソッドを呼び出してるだけ
51.
Copyright©2016 JPCERT/CC All
rights reserved. HTTP ヘッダ設定時に実施される入力値検査 50 ヘッダフィールド名が既に存在していたら上書き 配列の偶数要素がフィールド名で、奇数要素が値・・・
52.
Copyright©2016 JPCERT/CC All
rights reserved. HTTP ヘッダ設定時に実施される入力値検査 51 2度目の Null Check をしているが、改行コードが含まれるか 入力値検査は行われていない
53.
Copyright©2016 JPCERT/CC All
rights reserved. RFC との整合性 52 Android Platform の URLConnection クラス —RFC 2616 に準拠した入力値検査を実施していない —また、RFC 7230 にも準拠していない —OkHttp は version 2.5 で RFC 7230 に準拠した修正を 行いリリース済 Android Platform も OkHttp の修正を master ブランチに取り 込んだ https://android.googlesource.com/platform/external/okhttp/+/7 1b9f47b26fb57ac3e436a19519c6e3ec70e86eb Android Platform の master ブランチでは、どのように修 正されたのか?
54.
Copyright©2016 JPCERT/CC All
rights reserved. 目次 53 後半 – ソースコードの詳細調査 —Android Platform が提供している Java 実行環境 —正しい URLConnection クラスの実装 (OpenJDK) —脆弱な URLConnection クラスの実装 (Android 6.0) —修正された URLConnection クラスの実装 (master ブランチ) まとめ 参考情報 謝辞
55.
Copyright©2016 JPCERT/CC All
rights reserved. 修正された URLConnection クラスの実装 54 master ブランチに取り込まれた URLConnection クラス の実装を確認する —URLConnection クラスと関連クラス図 —HTTP ヘッダを設定する処理のシーケンス図 —HTTP ヘッダ設定時に実施される入力値検査 —RFC との整合性
56.
Copyright©2016 JPCERT/CC All
rights reserved. URLConnection クラスと関連クラス図 55 checkNameAndValue() が追加された
57.
Copyright©2016 JPCERT/CC All
rights reserved. HTTP ヘッダを設定する処理のシーケンス図 56 checkNameAndValue() で入力値検査を実施
58.
Copyright©2016 JPCERT/CC All
rights reserved. HTTP ヘッダ設定時に実施される入力値検査 57 HTTP ヘッダフィルード名、値ともにアスキーコードの 0x1f 以下、及び 0x7f 以上が含まれていたら IllegalArgumentException をスローする
59.
Copyright©2016 JPCERT/CC All
rights reserved. RFC との整合性 58 改行コードを含む制御文字が全て禁止され RFC 7230 に準拠した修 正が行われた — IT 用語辞典 e-Words より ASCII 文字コード表を引用 — http://e-words.jp/p/r-ascii.html 修正で禁止された制御文字
60.
Copyright©2016 JPCERT/CC All
rights reserved. 目次 59 後半 – ソースコードの詳細調査 —Android Platform が提供している Java 実行環境 —正しい URLConnection クラスの実装 (OpenJDK) —脆弱な URLConnection クラスの実装 (Android 6.0) —修正された URLConnection クラスの実装 (master ブランチ) まとめ 参考情報 謝辞
61.
Copyright©2016 JPCERT/CC All
rights reserved. まとめ 60 誰が本脆弱性の影響を受けるか —HTTP ヘッダフィールドを外部入力として受け取る Android アプリ 対策 1. master ブランチの checkNameAndValue() を Android アプリに移植して、HTTP ヘッダの入力値検査を行うよ うに修正する (推奨) 2. 脆弱性が修正されている OkHttp version 2.5 以降を使い アプリケーションを実装し直す (大変) 全ての開発者が注意すべきこと —セキュアコーディングの原則として、信頼境界の外から受 け取るパラメータを信用せず入力値検査を行う
62.
Copyright©2016 JPCERT/CC All
rights reserved. 目次 61 後半 – ソースコードの詳細調査 —Android Platform が提供している Java 実行環境 —正しい URLConnection クラスの実装 (OpenJDK) —脆弱な URLConnection クラスの実装 (Android 6.0) —修正された URLConnection クラスの実装 (master ブランチ) まとめ 参考情報 謝辞
63.
Copyright©2016 JPCERT/CC All
rights reserved. 参考情報 62 本稿では Android Platform の HTTP ヘッダインジェクションについて取り 上げたが、他言語・フレームワークでも同じ脆弱性が存在する可能性があ る PHP の HTTP ヘッダインジェクションについて、2015年に話題になった ことがあるので参考までに紹介する — 2015年 7月 寺田 健 氏 (三井物産セキュアディレクション株式会社) LWSとHTTPヘッダインジェクション https://www.mbsd.jp/blog/20150730.html 「新RFCにより一転してPHP側の旗色が悪くなった訳ですが、PHPは比較的早くこの状 況に対処しました。具体的には、2015年2月のリリース(PHP 5.4.38, 5.5.22, 5.6.6)で、 LWSを含むヘッダをエラーとして出力できないようにする対処を行いました」 — 2015年 12月 徳丸 浩 氏 (HASHコンサルティング株式会社) PHPにおけるHTTPヘッダインジェクションはまだしぶとく生き残る http://blog.tokumaru.org/2015/12/phphttp.html 「HTTPヘッダインジェクション脆弱性対策については、一応はPHP側の責任と考えた うえで、アプリケーション側でもヘッダ文字列のバリデーション等で対策をしておくこ とを推奨します」
64.
Copyright©2016 JPCERT/CC All
rights reserved. 目次 63 後半 – ソースコードの詳細調査 —Android Platform が提供している Java 実行環境 —正しい URLConnection クラスの実装 (OpenJDK) —脆弱な URLConnection クラスの実装 (Android 6.0) —修正された URLConnection クラスの実装 (master ブランチ) まとめ 参考情報 謝辞
65.
Copyright©2016 JPCERT/CC All
rights reserved. 謝辞 64 JVN#21612597 で公開された Apache Cordova に関する脆弱性の 報告者である、ソニーデジタルネットワークアプリケーションズ株 式会社の西村宗晃氏の追加調査により本脆弱性が存在する事が判明 しました。本脆弱性情報を JPCERT/CC に報告いただいた西村氏に 御礼申し上げます。