SlideShare ist ein Scribd-Unternehmen logo
1 von 17
1

スマホアプリのSSLサーバ
証明書の検証不備について

谷口 隼祐
2

自己紹介

最近行った、牛久大仏
がんばれ!茨城県
なぜ、今回OWASP Nightで話そうと
思ったのか?

3



とあるアプリの脆弱性がJVN公表された際のコメントがきっかけ



SSL通信周りの脆弱性判断は、判断のブレが大きい印象



現状では「SSLを使ってない=脆弱性」とは言い難い(個人見解)



ただし、スマホ周りを取り巻く環境の変化によって、脆弱性判断
も変わっていくかもしれない…



この発表が、脆弱性判断の議論の材料になればいいな
4

いざ勢いで申し込んだものの

_人人人人人人人人人人人_
> 大御所に挟まれてる! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄

_人人人人人人人人人人人_
> まさかのギリギリ補欠!!
<
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
5

SSLで通信しないことは脆弱性か?



SSLは「お・も・て・な・し」



現状では、SSLで通信しないことだけを以って脆弱性とはいえない



SSLで通信の安全性を高めるか否かは、サービス提供者のポリシー
次第 ⇒ 脆弱性対策の実施とはまた別の話



利用者としては、より安全なサービスを使いたいので、サービス
提供者は積極的にセキュリティポリシーを公開するとよいと思う
ここでの脆弱性の定義は、「情報セキュリティ早期警戒パートナーシップガイド
ライン」に準拠することにします。
定義の詳細は、下記ガイドラインを参照ください。
http://www.ipa.go.jp/files/000002991.pdf
では、脆弱性と判断できる例って?
(ウェブサイト編)



セキュリティポリシーに違反している




6

ポリシーでSSLで通信するといいつつ、実際には平文通信

SSLが適切に使われていない


サーバ証明書の有効期限が切れている



オレオレ証明書を使っている



フォームの送信先はSSLを使っている(https)が、フォームの設置
ページにはSSLを使っていない(http)

[ご参考]
HTTPSを使う際に入力フォームのページからそうしないといけない理由はなんですか- QA@IT
http://qa.atmarkit.co.jp/q/2028
では、脆弱性と判断できる例って?
(ソフトウェア編)



セキュリティポリシーに違反している




7

ポリシーでSSLで通信するといいつつ、実際には平文通信

SSLが適切に使われていない


ソフトウェア側でSSLサーバ証明書を適切に検証していない


SSL通信に暗号化のみを求めて、当該処理を実装している可能性



開発時やデバッグ用に一時的にオレオレ証明書を許可していたのを忘
れてリリースしてしまった可能性

接続先のサーバの正当性を確認しなければ、安全な通信
は実現できない
8

SSLサーバ証明書の検証不備とは



不正な SSL サーバ証明書を使用
しているサーバであっても警告
を出さずに接続してしまう問題



中間者攻撃 による通信の盗聴や
改ざんなどが行なわれても、
ユーザが気づけない

出典:JVNDB-2012-000037 - JVN iPedia - 脆弱性対策情報データベー
ス
http://jvndb.jvn.jp/ja/contents/2012/JVNDB-2012-000037.html
9

JVN公表されたアプリ
公開日

JVN番号

アプリ名

アプリ種類

2013/08/19

JVN#75084836

Yahoo!ショッピング

Androidアプリ

2013/08/19

JVN#68156832

ヤフオク!

iOS/Androidアプリ

2013/06/07

JVN#39218538

ピザハット公式アプリ Androidアプリ

2012/05/25

JVN#39707339

Opera

2012/04/26

JVN#82029095

spモードメールアプリ Androidアプリ

2008/04/23

JVN#76788395

mylo COM-2



ブラウザ

組み込みブラウザ

JVN公表されたアプリは対策済み


ベンダが対策してくれたからこそ、JVN公表できている



ベンダ自身が届出をしてくることもある


ベンダ自身が届出をしたのかどうかは、IPAからのメールで判別可能
10

検証環境



スマートフォン


Nexus7(Android4.3)



iPhone5s(iOS7.0.3)

プロキシ(ノートPC)経由で無線LAN接続する



ノートPC


Fiddler

リモートからのFiddlerへのアクセスを許可
HTTPSをキャプチャする
11

アプリの挙動(証明書検証不備)



キャプチャした通信に、HTTPS通信が混じっている



エラーが発生せずに、いつも通りにアプリが使える
12

アプリの挙動(証明書エラー)



証明書に関するエラーを表示する


アプリ起動時に証明書に関するエラー
メッセージを表示し、アプリを終了する



証明書に関するエラーメッセージを表示し、
アクセスするか否かを利用者に選択させる
13

アプリの挙動(その他エラー)


証明書に関するエラーではないものの、通信処理にエラーが発
生した旨をメッセージを表示する


アプリ起動時にエラーメッセージを表示し、アプリを終了する



SSL通信のページのみ表示されない
14

検証した結果



証明書の検証に不備のあるアプリ




約30アプリ中、2アプリに証明書の検証不備があった

証明書を検証するアプリ


証明書を検証し、問題があればエラーメッセージを出すアプリは多いものの、
証明書に問題があることを通知するアプリは少なかった



エラーメッセージの内容によっては、電波が悪かったり、サーバメンテナンス
等の問題と捉えられかねないものもあった

(攻撃は防ぐことはできているが)利用者は攻撃されている可能性に気
づけない。メッセージ内容はこれでいいのか?
15

スマホアプリを取り巻く状況



公衆無線LANサービスの利用が一般的になってきた




信用のおけない無線LANアクセスポイントに接続するリスクが増えた

スマホアプリにはアドレスバーがないものが多い





利用者が能動的に接続先や接続プロトコルを確かめることが困難である
利用しているスマホアプリを信用するしかない

常時SSLを提供するサービスが増えてきた


そのようなサービス用のクライアントアプリは対応が必須

冒頭で、SSLは「お・も・て・な・し」と言いましたが、こと
スマホアプリにおいては、必須になっていくかもしれません
16

ご参考

出典:ソニーデジタルネットワークアプリケーションズ株式会社
Android アプリ脆弱性調査レポート 2013年10月版(pdf)
http://www.sonydna.com/sdna/solution/android_vulnerability_report_201310.pdf
17

まとめ



SSLを使用するならば、適切に使用しましょう



スマホアプリを取り巻く状況を鑑み、積極的にSSLを使用してい
きましょう



証明書に関するエラーを表示する際には、どのようなメッセー
ジがよいのか意見募集中


利用者が安全でない環境でネットワーク接続している可能性を伝えるとよ
い?それとも、単純にエラーが出た旨だけ伝えるほうがよい?

って今日の話、1年以上前に徳丸さんが日記にほぼ書いてますやん
orz
スマートフォンアプリケーションでSSLを使わないのは脆弱性か | 徳丸浩
の日記
http://blog.tokumaru.org/2012/02/is-smartphone-application-without-ssl.html

Weitere ähnliche Inhalte

Was ist angesagt?

Rancher と GitLab を使う3つの理由
Rancher と GitLab を使う3つの理由Rancher と GitLab を使う3つの理由
Rancher と GitLab を使う3つの理由Tetsurou Yano
 
Keycloak拡張入門
Keycloak拡張入門Keycloak拡張入門
Keycloak拡張入門Hiroyuki Wada
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
分かったうえではじめるCI/CD
分かったうえではじめるCI/CD分かったうえではじめるCI/CD
分かったうえではじめるCI/CDYuta Matsumura
 
セキュアエレメントとIotデバイスセキュリティ2
セキュアエレメントとIotデバイスセキュリティ2セキュアエレメントとIotデバイスセキュリティ2
セキュアエレメントとIotデバイスセキュリティ2Kentaro Mitsuyasu
 
初心者向けWebinar AWSで開発環境を構築しよう
初心者向けWebinar AWSで開発環境を構築しよう初心者向けWebinar AWSで開発環境を構築しよう
初心者向けWebinar AWSで開発環境を構築しようAmazon Web Services Japan
 
Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析政雄 金森
 
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るbacklogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るTakeru Maehara
 
Azureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流についてAzureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流について真吾 吉田
 
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜Masaru Kurahayashi
 
最近のやられアプリを試してみた
最近のやられアプリを試してみた最近のやられアプリを試してみた
最近のやられアプリを試してみたzaki4649
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜Yoshiki Nakagawa
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)Kuniyasu Suzaki
 
15分で分かる NoOps
15分で分かる NoOps15分で分かる NoOps
15分で分かる NoOpsHiromasa Oka
 
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)Kuniyasu Suzaki
 

Was ist angesagt? (20)

Rancher と GitLab を使う3つの理由
Rancher と GitLab を使う3つの理由Rancher と GitLab を使う3つの理由
Rancher と GitLab を使う3つの理由
 
Keycloak拡張入門
Keycloak拡張入門Keycloak拡張入門
Keycloak拡張入門
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
WayOfNoTrouble.pptx
WayOfNoTrouble.pptxWayOfNoTrouble.pptx
WayOfNoTrouble.pptx
 
分かったうえではじめるCI/CD
分かったうえではじめるCI/CD分かったうえではじめるCI/CD
分かったうえではじめるCI/CD
 
セキュアエレメントとIotデバイスセキュリティ2
セキュアエレメントとIotデバイスセキュリティ2セキュアエレメントとIotデバイスセキュリティ2
セキュアエレメントとIotデバイスセキュリティ2
 
Keycloak開発入門
Keycloak開発入門Keycloak開発入門
Keycloak開発入門
 
初心者向けWebinar AWSで開発環境を構築しよう
初心者向けWebinar AWSで開発環境を構築しよう初心者向けWebinar AWSで開発環境を構築しよう
初心者向けWebinar AWSで開発環境を構築しよう
 
Keycloakのステップアップ認証について
Keycloakのステップアップ認証についてKeycloakのステップアップ認証について
Keycloakのステップアップ認証について
 
入門!Jenkins
入門!Jenkins入門!Jenkins
入門!Jenkins
 
Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析
 
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るbacklogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
 
Azureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流についてAzureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流について
 
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
 
最近のやられアプリを試してみた
最近のやられアプリを試してみた最近のやられアプリを試してみた
最近のやられアプリを試してみた
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
 
15分で分かる NoOps
15分で分かる NoOps15分で分かる NoOps
15分で分かる NoOps
 
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)
 
Oss貢献超入門
Oss貢献超入門Oss貢献超入門
Oss貢献超入門
 

Andere mochten auch

脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)JPCERT Coordination Center
 
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)JPCERT Coordination Center
 
OpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルOpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルMasaru Kurahayashi
 
Fiddler Scriptデモ
Fiddler ScriptデモFiddler Scriptデモ
Fiddler Scriptデモhagurese
 
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Tokuhiro Matsuno
 
今から始めるFiddler script
今から始めるFiddler script今から始めるFiddler script
今から始めるFiddler script彰 村地
 
今更聞けないOAuth2.0
今更聞けないOAuth2.0今更聞けないOAuth2.0
今更聞けないOAuth2.0Takahiro Sato
 
これからのネイティブアプリにおけるOpenID Connectの活用
これからのネイティブアプリにおけるOpenID Connectの活用これからのネイティブアプリにおけるOpenID Connectの活用
これからのネイティブアプリにおけるOpenID Connectの活用Masaru Kurahayashi
 

Andere mochten auch (8)

脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
 
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
 
OpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルOpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクル
 
Fiddler Scriptデモ
Fiddler ScriptデモFiddler Scriptデモ
Fiddler Scriptデモ
 
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用
 
今から始めるFiddler script
今から始めるFiddler script今から始めるFiddler script
今から始めるFiddler script
 
今更聞けないOAuth2.0
今更聞けないOAuth2.0今更聞けないOAuth2.0
今更聞けないOAuth2.0
 
これからのネイティブアプリにおけるOpenID Connectの活用
これからのネイティブアプリにおけるOpenID Connectの活用これからのネイティブアプリにおけるOpenID Connectの活用
これからのネイティブアプリにおけるOpenID Connectの活用
 

スマホアプリのSSLサーバ証明書の検証不備について