パスワードを忘れた? アカウント作成
12241277 story
Android

中間者攻撃によりSNSアカウント情報などが窃取される可能性のあるAndroidアプリ 46

ストーリー by hylom
とりあえず注意喚起 部門より
headless 曰く、

Android向けセキュリティーツールを提供するAppBugsによると、Androidアプリの中にはSSLの実装に問題があるものも多いという。メジャーなSNSやクラウドサービスのアカウント情報を使用する人気アプリでも、こういった問題を抱えるものが発見されているそうだ(AppBugsSocial Plugin VulnerabilitiesVentureBeat)。

AppBugsのブログ記事でリストアップされているアプリは14本だが、リストは随時更新されており、その後3本が追加されて計17本となっている。これらのアプリはいずれもサーバー証明書を正しく検証しないため、中間者攻撃が可能となる。リストアップされているのは大半が100万ダウンロード以上の人気アプリであり、1億4千万人以上が影響を受ける可能性があるという。

リストアップされているアプリは以下のとおり。なお、既に問題が修正済みのFoxit MobilePDFは除外している。皆さんがご利用のアプリは含まれているだろうか。

  • MeituPic
  • Astro File Manager with Cloud
  • gReader
  • Windows Live Hotmail Push Mail
  • JustUnFollow
  • Brother iPrint & Scan
  • Software Data Cable
  • FriendCaster Chat
  • PrintHand Mobile Print
  • Phone for Google Voice & GTalk
  • Instachat
  • InstaMessage
  • InstaG
  • Wondershare PowerCam
  • ES File Explorer File Manager
  • SkyDrive Assistant
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • Microsoft 製を含む大多数の Android アプリに存在する「脆弱性」であって、HTTP Over TLS の脆弱な実装と合わせて対処すべきだと思うので投稿します。

    最近、ユーザーが、ログイントークン・セッションIDを無効にできない Android アプリ・Webサービスが急増しています。以前は別の端末からログインすると前の端末から自動ログアウトされるサービスが多かったので問題が無かったのですが、マルチデバイスに対応する際に何故か危険な実装となってしまったのだと思います。

    本日、Android に OneDrive (v3.1.1) をインストール・サインインして、検証したところ、

    2015年07月02日 13:22 よりずっと前
    Android アプリで OneDrive にサインイン

    2015年07月02日 13:22
    パソコンから Microsoft アカウント管理ページ (https://account.microsoft.com/) の「セキュリティとプライバシー」→「パスワードの変更」で、パスワードを変更。
    その後、「セキュリティとプライバシー」→「アカウント セキュリティ」→「高度なセキュリティの管理」→「信頼済みデバイス」→「アカウントに関連付けられている信頼済みデバイスをすべて削除する」→「信頼済みデバイスをすべて削除」と操作して、「現在、お客様の Microsoft アカウントには、信頼済みデバイスが関連付けられていません。次回プライバシーにかかわる情報にアクセスしようとすると、セキュリティ コードの入力が求められます。」と表示されることを確認。
    「アクセスが許可されているアプリとサービス」を見ても「アクセスを許可したアプリまたはサービスはまだありません。アクセスを許可すると、ここに表示されます。」と表示されるので、Microsoft 製の OneDrive アプリのログイントークンを個別に無効にすることはできないようだ(サードパーティ製のアプリなら可能)。

    2015年07月02日 13:39
    Android 端末では、OneDrive アプリにサインインされたままの状態で、データの追加・削除が可能な状態であることを確認。

    2015年07月02日 13:43
    Android の再起動を実施してみたが、同様に One Drive アプリでデータの追加・削除が可能な状態のまま。

    2015年07月02日 15:41
    One Drive アプリでデータの追加・削除が可能な状態のまま。

    これは、とっても恐ろしい現実的な脅威です。Android スマホを紛失してしまったことに気が付いたとしても、ログイントークンを無効にできないので、拾った人が OneDrive アプリでデータのダウンロード・追加・削除がし放題な状況が続きます。上記のように、パスワードを変更しても駄目で、ログイントークンを無効にする手段が存在しないことから、速やかにアカウントのデータを削除して、新たなアカウントを作り直すしかありません。Android 端末は初期化をしてもログイントークンが復元できることが多い [security.srad.jp]ので、古くなって使わなくなった端末を手放すのも危険といえます。

    一方、Goolge は、Google 製のアプリを含めて Web上の管理ページからログイントークンを個別に無効にすることが可能で、またパスワードを変更することで全てのログイントークン・セッションIDが無効になるという安全な仕様となっています。他社も Google を見習うべきです。

    • 新たな事実が判明したので追記します。

      2015年07月04日 00:49
      OneDrive アプリ起動時にエラーが表示されて、
      Microsoft アカウントのIDとパスワードを入力する画面に飛ばされた。
      (ID 部分のみが自動入力済みの状態)

      2015年07月02日 13:22 に行った、「パスワードの変更」または「信頼済みデバイスをすべて削除」から、時間的にかなり遅れて、ログイントークンが無効になったようです。

      なお、エラーメッセージが表示されて1秒未満でパスワード入力画面に飛ばされたので(自動リダイレクトになっていたのか誤タップしたのかのどちらか)、メッセージの内容を正確に読み取ることはできませんでしたが、ログインが無効になったことを示すような内容でした。

      原因としては、ログイントークンの無効化の処理に時間がかかるようになっているのか、ログイントークンを一定時間ごとに自動更新する仕様となっており「パスワードの変更」または「信頼済みデバイスをすべて削除」によって自動更新でエラーとなった可能性が考えられます。

      なお、エラーメッセージが表示されて1秒未満でパスワード入力画面に飛ばされたので(自動リダイレクトになっていたのか誤タップしたのかのどちらか)、メッセージの内容を正確に読み取ることはできませんでしたが、ログインが無効になったことを示すような内容でした。

      「拾った人が OneDrive アプリでデータのダウンロード・追加・削除がし放題な状況が続きます。」の「し放題な状況が続きます」を「約1日程度し放題な状況が続きます」に訂正します。

      ただ、ログイントークンの無効化が行われるまで結構な時間があるので、端末を拾った人が OneDrive アプリでデータのダウンロード・追加・削除が行える時間的な猶予があり「脆弱性があるといえる状態」なことには変わりありません。

      親コメント
      • by Anonymous Coward

        特定のデバイスの表示と全体の状況を同じと思った理由はありますか?

    • by Anonymous Coward

      MACアドレスとか端末IDをログイントークンにしているサービスもあります。
      仮想OSの検証時にそこらへんを0埋めしていると他人のアカウントにログインされたりで驚きます。

      • by Anonymous Coward

        「簡単ログイン」の悪夢がより悪化して跳ね返ってきてるというか、
        偽クライアント用意すれば偽装し放題な自主申告の項目で認証している上に、
        その項目自体全く秘匿されてないってもうどうしようもないレベルのゴミですね…

        驚くというかブチ切れて良いよ、それ。とりあえずIPAか何かに通報したい。

    • by Anonymous Coward

      > とっても恐ろしい現実的な脅威です。
      Google「しょうがないなあ [google.com]」
      現実的って言葉使うならもう少し現実的に考えたほうがいいと思うよ。
      OneDriveがクソなのは同意だよ。

      • Google「しょうがないなあ [google.com]」
        現実的って言葉使うならもう少し現実的に考えたほうがいいと思うよ。

        そう突っ込まれそうだったので、「Android 端末は初期化をしてもログイントークンが復元できることが多い」と書いておいたんですが……。「端末を探す」機能で探せば良いという意味だとしたら、GPSが有効になっていないと機能しないという糞仕様なので、難しいと思います。GPSを常に有効にしているとバッテリー消費が激しいので、マップアプリを使うときなど以外は無効にしている人が多いのでは? 統計を取ったわけではありませんが、私の周囲の人はWiFiやGPSは使うときだけ有効にしています。

        Android のデータ削除機能はデータの管理領域を削除(削除フラグが立っているようなもの)しているだけ [security.srad.jp]なので、パソコンでマウントしてから、量販店で売っている「データ復旧ソフト」を使うだけで復元できます。root 化が必要な場合も、ワンクリックで root化するアプリがネットに流れています。データ復旧には市販のソフトを使うだけでよく、ご丁寧に Android ではアプリ毎にデータが保存されるディレクトリが決まっていますから、ログイントークンをそのままコピーすることも簡単です。(Android 5 で改善されたかどうかは検証していないのでわかりません)

        ということで、十分に現実的な危険だと思います。ちなみに、通信内容を改ざんして中間者攻撃を行うには、Androidからログイントークンを取り出すのよりも、はるかに高度で専門的な知識が必要です。

        親コメント
        • by Anonymous Coward

          紛失した端末を鳴らす、ロックする、データを消去する
          言いたかったのはここ。

          > GPSを常に有効にしているとバッテリー消費が激しいので
          最近は現実的にそれほど問題ではない。

          • 紛失した端末を鳴らす、ロックする、データを消去する

            「ロック」された状態であっても、スマホの電源を切ってから、「電源ボタン」+「音量上げボタン」+「音量下げボタン」を同時長押しすると、「Android system recovery」という画面になって「wipe data/factory reset」ができます。これには、Google アカウントのID・パスワードも、ロック解除コードも必要ありません。

            これをすると「端末の初期化」機能を使った後の状態となるので、#2840952 [security.srad.jp] で書いたのと同様のことができてしまいます。

            操作手順は、リカバリモードで端末をリセットする [google.com]にある通りです。ただし、Android 5.1 以降 では「リカバリ メニューを使用して端末をリセットする場合は、セットアップ処理の際に端末に関連付けられている Google ユーザー名とパスワードを入力する必要があります」 [google.com]とのことで、この方法は使えないようです。

            最近は現実的にそれほど問題ではない。

            確かに昔と比べるとGPSの電池消費量は減っているようですね。

            親コメント
            • by Anonymous Coward

              ロックを解除しないで工場出荷状態に戻した場合にどれだけ工場出荷前のアプリをインストールできるの?

              • by Anonymous Coward

                「工場出荷前のアプリ」とはプリインストールアプリ?
                工場出荷状態なんだからインストール状態になると思うんですが、ロック状態からだと何か違ったりするんですかね?
                でも、どっちにせよマウントさえ出来ればよいので関係ない話と思いますが。

              • by Anonymous Coward

                ストレージの痕跡抹消(乱数書き込みや0フィル)までやってないから、
                出荷時状態まで戻しても管理権限さえ得られればファイルの復元が可能。

                そもそもユーザーデータ領域の痕跡を掘り出すのが目的だから入ってたアプリを入れ直す必要なんて無い。
                # 究極では分解してeMMC端子を引き出してSDカードリーダーに繋げば端末リセットも不要だが、工作的な難易度はちと高いか

              • by Anonymous Coward

                ファクトリリセットしても、ファイルシステム上の管理情報上消えてないってことで合ってる?
                (生ストレージとしてみればデータの残骸があることは理解できる)

                そこまで調査されるような動機を持たれるようなら、もうロックもファクトリリセットも関係ないと思う。

    • by Anonymous Coward

      MSのヘルプの方では、「信頼済みとして指定したデバイスにアクセスできなくなった場合 (ノート PC を紛失したり、盗まれたりした場合)、アカウントのセキュリティ保護のため、Microsoft アカウントからすべての信頼済みデバイスを削除することをお勧めします」と書かれているので、それってヤバイバグか(仕様上の)不具合なんじゃない?スラドだけじゃなくてMS公式のサポート掲示板にも、アプリやOSバージョン等の詳しい情報を添えて投稿してみた方がいいんじゃないかな…。

  •  多くの解説サイトや書籍が、TLS (や既に過去の遺物である SSL) と HTTP Over TLS [ietf.org] (所謂 https) というレイヤーの全く違う規格を混同した記事を書いているせいか、誤解している人が多いようですが、 TLS として正しく「サーバ証明書の検証」 [wikipedia.org] したとしても HTTP Over TLS における成り済まし攻撃は防げません。

     もっと具体的にいうと、OpenSSL を使っているならSSL_CTX_set_verify [openssl.org] で、TLS としての「サーバ証明書の検証」ができますし、これで TLS としての「サーバ証明書」の検証が終わったことになりますが、それだけでは不十分なのです。何故ならば、通信を改ざんした悪意のある第三者が、別の証明書(悪意のある第三者がCAから正規に購入した別の証明書、つまりクラッカーが秘密鍵を持っている正規CA発行の証明書)にすり替えたとしても検証(RFC上正しいTLSとしての検証でも)に通ってしまうからです。

     TLS を http で用いる場合(HTTP Over TLS)には、RFC [ietf.org] によると、subjectAltName か Common Name を検証しなくてはなりません。

    If a subjectAltName extension of type dNSName is present, that MUST
    be used as the identity. Otherwise, the (most specific) Common Name
    field in the Subject field of the certificate MUST be used. Although
    the use of the Common Name is existing practice, it is deprecated and
    Certification Authorities are encouraged to use the dNSName instead.

     これは結構鬼門でして、コモンネームの位置づけ The (soon to be) not-so Common Name [globalsign.com] を読んでいただくと分かりやすいですが、ブラウザ等の実装を考えますと今のところは subjectAltName ではなく Common Name を使わざるを得ない現状です。

     Common Name の検証は、多くの TLSライブラリ(OpenSSL も含む)ではできません。従って、プログラマーが自前で Common Name を検証するためのコードを用意する必要がある ケースが多いと思います。Android SDK の場合は Warnings About Using SSLSocket Directly [android.com] を参考にして下さい。

  • 「アプリの名前だけ並べられてもわかんねえよ!!せめてアイコン並べれば気がつくよ」
    「アイコン後で変えられたらどうする?」
    「もういいよ!!Google様がリスト作ってチェックしてくれよ!!
     金はいいからアンインストールするかどうかはこっちで決めっからよ!!」

    散歩してたら、なんか大声でしゃべっている人がいたのが聞こえた。
    #幻聴が出た覚えがないな

    --
    #存在自体がホラー
  • by Anonymous Coward on 2015年07月02日 13時20分 (#2840734)

    このアプリ全部がSSLを0から実装したとは思えないので
    SSL/TLSの実装にどんなライブラリを使っていたのか気になります

    • by Anonymous Coward

      http://stackoverflow.com/questions/19723415/java-overriding-function-t... [stackoverflow.com]

      こんな感じの開発用コードを入れたままリリースしてしまったか、そもそも証明書を買う金をけちったか。

      • by Anonymous Coward

        ルート証明書は購入しなくても手に入るでしょ
        端末にあらかじめ入ってるルート証明書を利用する手だってあるわけで

        • by Anonymous Coward

          証明書について理解してるのかとても不安になるコメントだ…

      • by Anonymous Coward

        証明書なんて買わなくても問題ない。
        オレオレ証明書で問題なのは誰の証明書かわからないってことで、アプリでは分かってるんだから、それをチェックすれば問題ない。
        そのチェックをしないことが問題になってるんでしょ?

  • by Anonymous Coward on 2015年07月02日 13時21分 (#2840735)

    魍魎跋扈するアプリストアにおいて、公式ベンダ以外のアプリに認証情報晒すって時点でかなりキツイ。
    実は毒入りなアプリを踏むリスクと、中間者攻撃を受けるリスク、どっちが上かな?

  • by Anonymous Coward on 2015年07月02日 13時57分 (#2840771)

    ファイルマネージャーに認証情報なんか必要だったっけ?

    • by Anonymous Coward

      え?使ってないの?マジ?

      普通は使ってるもんだけど。

    • by Anonymous Coward

      クラウドストレージに直接アクセスする機能がありますよ
      その際にクラウドストレージにログインします

    • by Anonymous Coward

      ES File Explorer File Managerって
      オラインストレージも対応しているから必要でしょ

  • by Anonymous Coward on 2015年07月02日 14時08分 (#2840779)

    建前上は対策しなきゃならんのだろうけど
    穴だらけのスマホの時点で
    セキュリティなんて気にするだけ無駄なんじゃないかな
     
    むしろセキュリティきにせずに
    カジュアルに使う専用って割り切った方が楽
     
    セキュリティ気にする用途の時だけ
    ガチガチに固めたPC使うっていうような
    用途別の使い分けでさ

    • by StandardIO (47182) on 2015年07月02日 14時32分 (#2840792) 日記
      サーバ以外のセキュリティなんてバカらしくてやってられんです。
      親コメント
    • by Anonymous Coward

      無数のアプリが穴を開けまくるので、収拾がつかないので諦める。
      と言っているように思えるんだけど、それでいいんだろうか。

      Googleがアプリの審査時にチェックすべきじゃないのかな。

      スマホって意外とPC以上に個人情報を持っていたりするので、それのセキュリティを諦めるという人とはお付き合いしたくないな。

      かくいう自分もAndroidユーザなんだが、セキュリティが高いことで評判のあるWindows Phoneに乗り換えたい。
      MSから本気のLumiaが出るという噂もあるので期待してるが、日本はまた蚊帳の外かもしれない。

      • by Anonymous Coward

        逆じゃね?
        スマホに個人情報入れるような無責任な人と距離置いたほうがいい
        仕事なら仕方ないけどプライベートは切り分けたほうがいい
         
        # スマホはSIMなしWi-Fiかもしくはお手軽SIM別買いで

        • by Anonymous Coward

          スマホに個人情報入れずに何に使っているんだろうか…

          • by Anonymous Coward

            通話とメールはガラケー
            ネット専用でMVNOでスマホとかじゃないの
            自分も安く買ったスマホをネット閲覧や地図ぐらいにしか使ってないな

typodupeerror

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

読み込み中...