脆弱性レポート

【注意喚起】HTTPSで通信するAndroidアプリの開発者は
 SSLサーバー証明書の検証処理の実装を
説明 HTTPS(HTTP over SSL/TLS)でサーバーと通信するAndroidアプリは、HTTPS通信の開始時に通信先から送信されたSSLサーバー証明書が適切か検証する必要があります。本来、HTTPS通信では、利用者とウェブサイトの通信経路上に攻撃者が割り込み、通信内容を盗聴したり改ざんしようとする攻撃(中間者攻撃)を防ぐことができます。しかし、開発者が提供するAndroidアプリが「SSLサーバー証明書を適切に検証」していない場合、中間者攻撃を防ぐことができず、攻撃者にHTTPS通信の内容を盗聴または改ざんされる可能性があります。
概要図
図1:中間者攻撃により不正なSSLサーバー証明書を用いて盗聴されるイメージ
補足 米国のCERT/CCは2014年9月3日(米国時間)、複数のAndroidアプリに「SSL証明書を適切に検証しない脆弱性」があったとの調査結果を発表しました(注意喚起 VU#582497 、日本語版 JVNVU#90369988 )。CERT/CCは本脆弱性があるAndroidアプリ開発者への通知およびリストの公表を行っており、2014年9月18日時点でリストには複数の日本語名のアプリを含む617が記載されています。※
引用元 出典:独立行政法人情報処理推進機構
プレス発表【注意喚起】HTTPSで通信するAndroidアプリの開発者はSSLサーバー証明書の検証処理の実装を
https://www.ipa.go.jp/about/press/20140919_1.html
Copyright(C) IPA, Japan. All rights reserved. 2015
※2015年6月3日時点では、リスト上のアプリ数は23,667件になっています

RiskFinderで今すぐ診断
脆弱性のあるAndroidアプリは速やかに修正を
RiskFinder検出内容 この問題はRiskFinderを用いることで簡単に検出できます。

【RiskFinderで検出できる主なhttps/ssl関連の脆弱性】
  • https通信例外の無視
  • https通信時の証明書検査が行われていません
  • https通信時のホスト名検証が行われていません
他にも様々な通信の問題を検出します。
対応方法 この問題の対応方法は、JSSEC「Androidアプリのセキュア設計・セキュアコーディングガイド」に記載されています。
『Android アプリのセキュア設計・セキュアコーディングガイド』
  • 5.4. HTTPSで通信する

『Android アプリのセキュア設計・セキュアコーディングガイド』の 「5.4.1.2 HTTPSで通信する」「5.4.1.3 プライベート証明書でHTTPS通信する」 に記載されている内容をまとめると、以下がポイントになります。

【正常時にSSLExceptionを発生させない】
以下のいずれかの対応を実施してください。
  • 自社サーバに第三者認証局により署名されたサーバー証明書を設置する
  • プライベート証明書を作成し、サーバ側、Androidアプリに適切に組み込む

【SSLExceptionに対し適切な例外処理を実施】
SSLExceptionが発生した場合は攻撃者による中間者攻撃が発生している可能性があります。
ユーザに通知し、通信させないなどアプリに応じて適切な例外処理を取ることが重要です。

インターネット上で公開されている、証明書検証を無効化するコードは組み込んではいけません。

ページトップヘ