Android Oreo の Autofill API を使用するパスワード マネージャーはデータ漏洩の可能性があります

Android Oreo の Autofill API には潜在的なセキュリティ上の欠陥があり、パスワード マネージャーがパスワード、住所、クレジット カードなどのデータを漏洩する可能性があります。

自動入力 これは、Android 8.0 Oreo のリリースで導入された最大かつ最も宣伝された新機能の 1 つです。 LastPass など、さまざまなパスワード管理アプリがすでにこの新しい API をアプリケーションに実装しています。 そして、それが証明できる一方で、 かなりの改善 ユーザー補助サービスを使用した以前の自動入力実装とは異なり、考慮すべき潜在的なセキュリティ上の欠陥があります。 先月、ホワイト ペーパーが GitHub に公開され、Android Oreo Autofill API に内在する欠陥が文書化されています。 パスワード マネージャーによって、ユーザーが許可した以上の個人データが漏洩する可能性があります。. Mark Murphy (としてよく知られている) によって書かれたホワイト ペーパーの概要を簡単に説明します。 コモンズウェア) を作成し、2017 年 8 月 8 日に彼の GitHub ページで公開しました。


Android Oreo の Autofill API における潜在的なデータ漏洩の欠陥

欠陥はどのように機能するのでしょうか?

Android Nougat (およびそれ以前のバージョン) および Google Chrome などのブラウザでの自動入力の実装は、非常にシンプルです。 通常、パスワード管理アプリはユーザー補助サービスを使用してログイン ボックスの画面コンテンツをスキャンし、検出された内容に基づいて自動入力データを推奨します。 うまくいきましたが、 かなりの遅延が発生する可能性があります.

Android Oreo では、パスワード アプリが Autofill API で正式にサポートされるようになったため、この動作は少し異なります。 サードパーティのパスワード アプリケーションは、自動入力フレームワークを通じてアプリと通信し、自動入力サービスの役割を果たすことができるため、アクセシビリティ サービスを必要としなくなりました。 ユーザーがウィジェットにフォーカスすると、システムはそのウィジェット/フォームに関する情報をパッケージ化し、自動入力アプリに送信します。 その後、アプリケーションは、パスワード、電子メール、クレジット カード、その他の種類の機密データなどの関連する自動入力データを返します。 Android システムは、データを保存するアプリケーションとそれを要求するアプリケーションの間の仲介者として機能します。

Android 8.0 Oreo の自動入力アプリ

ただし、悪意のあるアプリやマルウェアは、実際には自動入力機能を利用して、より多くのデータを取得する可能性があります。 悪意のあるアクティビティにより、 非表示または非表示のウィジェットを使用して追加の自動入力データを入力するようリクエストします. ユーザーがログイン フォームなどの表示ウィジェットの 1 つに入力することに同意している間、非表示ウィジェットもユーザーが見ることなく追加データを取得します。 漏洩した情報がパスワード、住所、クレジット カードの詳細である場合、これは非常に危険です。

上のスクリーンショットは、このセキュリティ上の欠陥を利用した悪意のあるテスト アプリケーションを示しています。

問題に対する Google の答え

CommonsWare によると、このセキュリティ問題については、Google からまだ公開された解決策が公開されていません。 ただし、Google がこの問題を認識していることはわかっています。 CommonsWare は、Google のエンジニアは非公開の問題追跡レポートに問題が存在することを認めたが、 実際にパッチを適用するのは(不可能ではないにしても)難しいでしょう または修正をロールアウトします。

しかし それは、オートフィルを使用するのが完全に安全ではないという意味ではありません、Googleはデータの安全性を確保するために別のアプローチを採用しているためです。 会社は 自動入力サービス側で問題を処理するよう推進している そのため、自動入力プロバイダーを改善し、より安全なものにするよう開発者への意識を高めようとしています。 いったい何が提案されているのでしょうか?

まず、自動入力プロバイダー データを分割する必要があります. 開発者は、すべての自動入力データを 1 つのプールに保存するのではなく、パーティションに保存されているユーザー データを分割する必要があります。 たとえば、住所/電話のパーティション、クレジット カードのパーティション、パスワード/ユーザー名のパーティションなどです。 自動入力サービスは、フォーカスされたウィジェットに基づいて、一度に 1 つのパーティションのデータのみを返す必要があります。 これはそのうちの 1 つです 公開されているページ 自動入力アプリは、目に見えないウィジェットへのデータ漏洩から自身を保護します。

Googleのエンジニアによると、パスワードマネージャーの開発者がやるべきことは他にもいくつかあるという。 たとえば、自動入力プロバイダーは、最初にデータを提供した特定のアプリにのみデータを返す必要があります。 これは、変更された APK であってもアプリケーションにアクセスできないように、パッケージ名とアプリケーションの公開署名を検証することによって行う必要があります。 もう 1 つは、自動入力アプリが実際にデータを提供する前に認証を必要とすることです。 この認証アクティビティは、要求しているアプリにどのような種類のデータが提供されるかをユーザーに通知します。 このアドバイスには実際には多くの間違いがあり、最も重要な点は、これらのアドバイスが実際には Google によって強制されていないということです。

上記の提案の多くは CommonsWare の非公開の問題追跡レポートから引用されたものであり、Google の公式ドキュメント ページから引用されたものではないことに注意してください。 Autofill API を使用するアプリがこの種の攻撃から自分自身を保護する方法のさらに詳しい技術的な詳細については、次の文書を読むことを強くお勧めします。 CommonsWare による完全なホワイト ペーパー.

この欠陥から安全なアプリは何ですか?

この脆弱性については 1Password、Enpass、LastPass の開発者に連絡しており、これら 3 つのアプリの背後にあるセキュリティ チームは次のことを行っています。 主張した 彼らはそうだということ 安全な、ただし、これらの主張はまだ検証されていません。

上記の記述からわかるように、1Password はデータを入力する前にユーザーの認証を要求し、また、どのようなデータが入力されるのかを事前にユーザーに通知します。 これは、自動入力データを要求するアクティビティごとに認証ポップアップが表示されるため、サイレント入力の問題にも役立ちます。

Enpass は、悪意があるか本物であるかにかかわらず、キーチェーン全体を要求アプリに公開することはありません。 要求元のアプリのパッケージ名と一致する保存済みアイテムのみがユーザーに表示されます。 また、Googleのアドバイスに従ってさらなる対策を講じることも確認した。

さらに、LastPass は、Android Oreo のリリース前にはこの問題について知らなかったものの、アプリでは実際に ユーザーを保護するためのデータ パーティショニングと、エントリに関連付けられたアプリのみに LastPass が入力されることを確認するその他のチェックが行われます。

これら 3 つのアプリケーションを使用してもまったく問題はありませんが、完全にクリアな状態を維持したい場合は、無効にする必要があります。 パスワード マネージャーの開発者にアプリがこの行から安全であることを確認できるまで、携帯電話で完全に自動入力してください。 攻撃。 幸いなことに、これは、[設定] > [システム] > [言語と入力] > [詳細設定] に移動し、[自動入力サービス] 設定を見つけてタップし、[なし] を選択することで簡単に行うことができます。

上で述べたように、Google が実際にこの問題の修正を公開できるかどうかは不明であるため、信頼できるアプリを使用するか、単に機能を無効にすることが安全を保つ唯一の方法です。 この問題とそれに関連するすべての詳細について詳しく知りたい場合は、原文を読んでください。 それを文書化したホワイトペーパー GitHub 上で。


この記事は、LastPass、Enpass、1Password による回答の意味をより正確に反映するために、2017 年 9 月 13 日に更新されました。