アカウント名:
パスワード:
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:39Android 端末では、OneDrive アプリにサインインされたままの状態で、データの追加・削除が可能な状態であることを確認。 2015年07月02日 13:43Android の再起動を実施してみたが、同様に One Drive アプリでデータの追加・削除が可能な状態のまま。 2015年07月02日 15:41One Drive アプリでデータの追加・削除が可能な状態のまま。
これは、とっても恐ろしい現実的な脅威です。Android スマホを紛失してしまったことに気が付いたとしても、ログイントークンを無効にできないので、拾った人が OneDrive アプリでデータのダウンロード・追加・削除がし放題な状況が続きます。上記のように、パスワードを変更しても駄目で、ログイントークンを無効にする手段が存在しないことから、速やかにアカウントのデータを削除して、新たなアカウントを作り直すしかありません。Android 端末は初期化をしてもログイントークンが復元できることが多い [security.srad.jp]ので、古くなって使わなくなった端末を手放すのも危険といえます。
一方、Goolge は、Google 製のアプリを含めて Web上の管理ページからログイントークンを個別に無効にすることが可能で、またパスワードを変更することで全てのログイントークン・セッションIDが無効になるという安全な仕様となっています。他社も Google を見習うべきです。
新たな事実が判明したので追記します。
2015年07月04日 00:49OneDrive アプリ起動時にエラーが表示されて、Microsoft アカウントのIDとパスワードを入力する画面に飛ばされた。(ID 部分のみが自動入力済みの状態)
2015年07月02日 13:22 に行った、「パスワードの変更」または「信頼済みデバイスをすべて削除」から、時間的にかなり遅れて、ログイントークンが無効になったようです。
なお、エラーメッセージが表示されて1秒未満でパスワード入力画面に飛ばされたので(自動リダイレクトになっていたのか誤タップしたのかのどちらか)、メッセージの内容を正確に読み取ることはできませんでしたが、ログインが無効になったことを示すような内容でした。
原因としては、ログイントークンの無効化の処理に時間がかかるようになっているのか、ログイントークンを一定時間ごとに自動更新する仕様となっており「パスワードの変更」または「信頼済みデバイスをすべて削除」によって自動更新でエラーとなった可能性が考えられます。
「拾った人が OneDrive アプリでデータのダウンロード・追加・削除がし放題な状況が続きます。」の「し放題な状況が続きます」を「約1日程度し放題な状況が続きます」に訂正します。
ただ、ログイントークンの無効化が行われるまで結構な時間があるので、端末を拾った人が OneDrive アプリでデータのダウンロード・追加・削除が行える時間的な猶予があり「脆弱性があるといえる状態」なことには変わりありません。
特定のデバイスの表示と全体の状況を同じと思った理由はありますか?
MACアドレスとか端末IDをログイントークンにしているサービスもあります。仮想OSの検証時にそこらへんを0埋めしていると他人のアカウントにログインされたりで驚きます。
「簡単ログイン」の悪夢がより悪化して跳ね返ってきてるというか、偽クライアント用意すれば偽装し放題な自主申告の項目で認証している上に、その項目自体全く秘匿されてないってもうどうしようもないレベルのゴミですね…
驚くというかブチ切れて良いよ、それ。とりあえずIPAか何かに通報したい。
> とっても恐ろしい現実的な脅威です。Google「しょうがないなあ [google.com]」現実的って言葉使うならもう少し現実的に考えたほうがいいと思うよ。OneDriveがクソなのは同意だよ。
Google「しょうがないなあ [google.com]」 現実的って言葉使うならもう少し現実的に考えたほうがいいと思うよ。
そう突っ込まれそうだったので、「Android 端末は初期化をしてもログイントークンが復元できることが多い」と書いておいたんですが……。「端末を探す」機能で探せば良いという意味だとしたら、GPSが有効になっていないと機能しないという糞仕様なので、難しいと思います。GPSを常に有効にしているとバッテリー消費が激しいので、マップアプリを使うときなど以外は無効にしている人が多いのでは? 統計を取ったわけではありませんが、私の周囲の人はWiFiやGPSは使うときだけ有効にしています。
Android のデータ削除機能はデータの管理領域を削除(削除フラグが立っているようなもの)しているだけ [security.srad.jp]なので、パソコンでマウントしてから、量販店で売っている「データ復旧ソフト」を使うだけで復元できます。root 化が必要な場合も、ワンクリックで root化するアプリがネットに流れています。データ復旧には市販のソフトを使うだけでよく、ご丁寧に Android ではアプリ毎にデータが保存されるディレクトリが決まっていますから、ログイントークンをそのままコピーすることも簡単です。(Android 5 で改善されたかどうかは検証していないのでわかりません)
ということで、十分に現実的な危険だと思います。ちなみに、通信内容を改ざんして中間者攻撃を行うには、Androidからログイントークンを取り出すのよりも、はるかに高度で専門的な知識が必要です。
紛失した端末を鳴らす、ロックする、データを消去する言いたかったのはここ。
> GPSを常に有効にしているとバッテリー消費が激しいので最近は現実的にそれほど問題ではない。
紛失した端末を鳴らす、ロックする、データを消去する
「ロック」された状態であっても、スマホの電源を切ってから、「電源ボタン」+「音量上げボタン」+「音量下げボタン」を同時長押しすると、「Android system recovery」という画面になって「wipe data/factory reset」ができます。これには、Google アカウントのID・パスワードも、ロック解除コードも必要ありません。
これをすると「端末の初期化」機能を使った後の状態となるので、#2840952 [security.srad.jp] で書いたのと同様のことができてしまいます。
操作手順は、リカバリモードで端末をリセットする [google.com]にある通りです。ただし、Android 5.1 以降 では「リカバリ メニューを使用して端末をリセットする場合は、セットアップ処理の際に端末に関連付けられている Google ユーザー名とパスワードを入力する必要があります」 [google.com]とのことで、この方法は使えないようです。
最近は現実的にそれほど問題ではない。
確かに昔と比べるとGPSの電池消費量は減っているようですね。
ロックを解除しないで工場出荷状態に戻した場合にどれだけ工場出荷前のアプリをインストールできるの?
「工場出荷前のアプリ」とはプリインストールアプリ?工場出荷状態なんだからインストール状態になると思うんですが、ロック状態からだと何か違ったりするんですかね?でも、どっちにせよマウントさえ出来ればよいので関係ない話と思いますが。
ストレージの痕跡抹消(乱数書き込みや0フィル)までやってないから、出荷時状態まで戻しても管理権限さえ得られればファイルの復元が可能。
そもそもユーザーデータ領域の痕跡を掘り出すのが目的だから入ってたアプリを入れ直す必要なんて無い。# 究極では分解してeMMC端子を引き出してSDカードリーダーに繋げば端末リセットも不要だが、工作的な難易度はちと高いか
ファクトリリセットしても、ファイルシステム上の管理情報上消えてないってことで合ってる?(生ストレージとしてみればデータの残骸があることは理解できる)
そこまで調査されるような動機を持たれるようなら、もうロックもファクトリリセットも関係ないと思う。
MSのヘルプの方では、「信頼済みとして指定したデバイスにアクセスできなくなった場合 (ノート PC を紛失したり、盗まれたりした場合)、アカウントのセキュリティ保護のため、Microsoft アカウントからすべての信頼済みデバイスを削除することをお勧めします」と書かれているので、それってヤバイバグか(仕様上の)不具合なんじゃない?スラドだけじゃなくてMS公式のサポート掲示板にも、アプリやOSバージョン等の詳しい情報を添えて投稿してみた方がいいんじゃないかな…。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall
OneDrive など ログイントークンを無効にできない Android アプリもなんとかすべき (スコア:5, 興味深い)
Microsoft 製を含む大多数の Android アプリに存在する「脆弱性」であって、HTTP Over TLS の脆弱な実装と合わせて対処すべきだと思うので投稿します。
最近、ユーザーが、ログイントークン・セッションIDを無効にできない Android アプリ・Webサービスが急増しています。以前は別の端末からログインすると前の端末から自動ログアウトされるサービスが多かったので問題が無かったのですが、マルチデバイスに対応する際に何故か危険な実装となってしまったのだと思います。
本日、Android に OneDrive (v3.1.1) をインストール・サインインして、検証したところ、
これは、とっても恐ろしい現実的な脅威です。Android スマホを紛失してしまったことに気が付いたとしても、ログイントークンを無効にできないので、拾った人が OneDrive アプリでデータのダウンロード・追加・削除がし放題な状況が続きます。上記のように、パスワードを変更しても駄目で、ログイントークンを無効にする手段が存在しないことから、速やかにアカウントのデータを削除して、新たなアカウントを作り直すしかありません。Android 端末は初期化をしてもログイントークンが復元できることが多い [security.srad.jp]ので、古くなって使わなくなった端末を手放すのも危険といえます。
一方、Goolge は、Google 製のアプリを含めて Web上の管理ページからログイントークンを個別に無効にすることが可能で、またパスワードを変更することで全てのログイントークン・セッションIDが無効になるという安全な仕様となっています。他社も Google を見習うべきです。
OneDrive 脆弱性の件 - 追記・訂正1 (スコア:2)
新たな事実が判明したので追記します。
2015年07月02日 13:22 に行った、「パスワードの変更」または「信頼済みデバイスをすべて削除」から、時間的にかなり遅れて、ログイントークンが無効になったようです。
なお、エラーメッセージが表示されて1秒未満でパスワード入力画面に飛ばされたので(自動リダイレクトになっていたのか誤タップしたのかのどちらか)、メッセージの内容を正確に読み取ることはできませんでしたが、ログインが無効になったことを示すような内容でした。
原因としては、ログイントークンの無効化の処理に時間がかかるようになっているのか、ログイントークンを一定時間ごとに自動更新する仕様となっており「パスワードの変更」または「信頼済みデバイスをすべて削除」によって自動更新でエラーとなった可能性が考えられます。
なお、エラーメッセージが表示されて1秒未満でパスワード入力画面に飛ばされたので(自動リダイレクトになっていたのか誤タップしたのかのどちらか)、メッセージの内容を正確に読み取ることはできませんでしたが、ログインが無効になったことを示すような内容でした。
「拾った人が OneDrive アプリでデータのダウンロード・追加・削除がし放題な状況が続きます。」の「し放題な状況が続きます」を「約1日程度し放題な状況が続きます」に訂正します。
ただ、ログイントークンの無効化が行われるまで結構な時間があるので、端末を拾った人が OneDrive アプリでデータのダウンロード・追加・削除が行える時間的な猶予があり「脆弱性があるといえる状態」なことには変わりありません。
Re: (スコア:0)
特定のデバイスの表示と全体の状況を同じと思った理由はありますか?
もっとひどいのは (スコア:0)
MACアドレスとか端末IDをログイントークンにしているサービスもあります。
仮想OSの検証時にそこらへんを0埋めしていると他人のアカウントにログインされたりで驚きます。
Re: (スコア:0)
「簡単ログイン」の悪夢がより悪化して跳ね返ってきてるというか、
偽クライアント用意すれば偽装し放題な自主申告の項目で認証している上に、
その項目自体全く秘匿されてないってもうどうしようもないレベルのゴミですね…
驚くというかブチ切れて良いよ、それ。とりあえずIPAか何かに通報したい。
Re: (スコア:0)
> とっても恐ろしい現実的な脅威です。
Google「しょうがないなあ [google.com]」
現実的って言葉使うならもう少し現実的に考えたほうがいいと思うよ。
OneDriveがクソなのは同意だよ。
Android デバイス マネージャーはあてにならない (スコア:2)
そう突っ込まれそうだったので、「Android 端末は初期化をしてもログイントークンが復元できることが多い」と書いておいたんですが……。「端末を探す」機能で探せば良いという意味だとしたら、GPSが有効になっていないと機能しないという糞仕様なので、難しいと思います。GPSを常に有効にしているとバッテリー消費が激しいので、マップアプリを使うときなど以外は無効にしている人が多いのでは? 統計を取ったわけではありませんが、私の周囲の人はWiFiやGPSは使うときだけ有効にしています。
Android のデータ削除機能はデータの管理領域を削除(削除フラグが立っているようなもの)しているだけ [security.srad.jp]なので、パソコンでマウントしてから、量販店で売っている「データ復旧ソフト」を使うだけで復元できます。root 化が必要な場合も、ワンクリックで root化するアプリがネットに流れています。データ復旧には市販のソフトを使うだけでよく、ご丁寧に Android ではアプリ毎にデータが保存されるディレクトリが決まっていますから、ログイントークンをそのままコピーすることも簡単です。(Android 5 で改善されたかどうかは検証していないのでわかりません)
ということで、十分に現実的な危険だと思います。ちなみに、通信内容を改ざんして中間者攻撃を行うには、Androidからログイントークンを取り出すのよりも、はるかに高度で専門的な知識が必要です。
Re: (スコア:0)
紛失した端末を鳴らす、ロックする、データを消去する
言いたかったのはここ。
> GPSを常に有効にしているとバッテリー消費が激しいので
最近は現実的にそれほど問題ではない。
Android 5.1 以外ならばロック状態で初期化可能 (スコア:2)
「ロック」された状態であっても、スマホの電源を切ってから、「電源ボタン」+「音量上げボタン」+「音量下げボタン」を同時長押しすると、「Android system recovery」という画面になって「wipe data/factory reset」ができます。これには、Google アカウントのID・パスワードも、ロック解除コードも必要ありません。
これをすると「端末の初期化」機能を使った後の状態となるので、#2840952 [security.srad.jp] で書いたのと同様のことができてしまいます。
操作手順は、リカバリモードで端末をリセットする [google.com]にある通りです。ただし、Android 5.1 以降 では「リカバリ メニューを使用して端末をリセットする場合は、セットアップ処理の際に端末に関連付けられている Google ユーザー名とパスワードを入力する必要があります」 [google.com]とのことで、この方法は使えないようです。
確かに昔と比べるとGPSの電池消費量は減っているようですね。
Re: (スコア:0)
ロックを解除しないで工場出荷状態に戻した場合にどれだけ工場出荷前のアプリをインストールできるの?
Re: (スコア:0)
「工場出荷前のアプリ」とはプリインストールアプリ?
工場出荷状態なんだからインストール状態になると思うんですが、ロック状態からだと何か違ったりするんですかね?
でも、どっちにせよマウントさえ出来ればよいので関係ない話と思いますが。
Re: (スコア:0)
ストレージの痕跡抹消(乱数書き込みや0フィル)までやってないから、
出荷時状態まで戻しても管理権限さえ得られればファイルの復元が可能。
そもそもユーザーデータ領域の痕跡を掘り出すのが目的だから入ってたアプリを入れ直す必要なんて無い。
# 究極では分解してeMMC端子を引き出してSDカードリーダーに繋げば端末リセットも不要だが、工作的な難易度はちと高いか
Re: (スコア:0)
ファクトリリセットしても、ファイルシステム上の管理情報上消えてないってことで合ってる?
(生ストレージとしてみればデータの残骸があることは理解できる)
そこまで調査されるような動機を持たれるようなら、もうロックもファクトリリセットも関係ないと思う。
Re: (スコア:0)
MSのヘルプの方では、「信頼済みとして指定したデバイスにアクセスできなくなった場合 (ノート PC を紛失したり、盗まれたりした場合)、アカウントのセキュリティ保護のため、Microsoft アカウントからすべての信頼済みデバイスを削除することをお勧めします」と書かれているので、それってヤバイバグか(仕様上の)不具合なんじゃない?スラドだけじゃなくてMS公式のサポート掲示板にも、アプリやOSバージョン等の詳しい情報を添えて投稿してみた方がいいんじゃないかな…。