OnePlus がルート アクセスへのバックドアとして機能するアプリを誤ってプリインストールしてしまう

OnePlus は、OnePlus 3、3T、および 5 に root アクセスを許可するバックドアとして機能する Qualcomm エンジニアリング テスト アプリを残しました。

更新: OnePlus は、 公式回答 本題に。 今後のアップデートでは、EngineerMode から ADB ルート機能が削除される予定です。

OnePlus が回収していることが判明してから 1 か月あまりが経過しました 分析のための個人識別情報. 同社はすぐに方針を転換し、アップデートでユーザーに明確に提供することで透明性を高めることを約束した。 OxygenOS 分析をオプトアウトするオプション. その大失敗はその後解決したが、今夜別の惨事が醜い頭をもたげている。 Twitter 上で「」という名前のユーザーエリオット・アルダーソン」 (人気テレビ シリーズ「ミスター ロボット」の主人公にちなんで命名) は、OnePlus が次のことを発見しました。 診断テスト アプリケーションを誤って所定の場所に放置した クアルコム製。 このアプリケーションを逆コンパイルした後、彼はそれが可能であることを発見しました。 root アクセスを許可するために悪用され、事実上バックドアとして機能します.

このアプリケーションは「EngineerMode」と呼ばれるもので、本質的にはクアルコム製のシステムアプリケーションです。 OEM がすべてのハードウェア コンポーネントを簡単にテストできるように、OnePlus などの OEM に提供されます。 デバイス。 このアプリケーションは、すべての OnePlus 3、OnePlus 3T、および OnePlus 5 デバイスにプレインストールされており、アプリのすべてのアクティビティがエクスポートされるため、アクティビティ ランチャーから簡単にアクセスできます。

実は私たち このアプリケーションの存在を数か月前に取り上げました、しかし当時はそれが何に使えるのか全く分かりませんでした。 Twitter ユーザーはアプリケーションを逆コンパイルしました (そのソースはオンラインに投稿されました) ここ) DiagEnabled という興味深いアクティビティを見つけました。 特に、アクティビティ内で際立った 1 つのメソッド、escalatedUp が挙げられます。 このメソッドはブール値 (true/false) と文字列を受け入れます。 この文字列は、システム プロパティを設定する前にメソッドによってチェックされるパスワードです。

persist.sys.adbroot そして oem.selinux.reload_policy 1に。

最初のシステム プロパティは、ユーザーが root として ADB を実行できるようにするため、特に興味深いものです。 これにより、ブートローダーのロックを解除することなく、電話機で完全な root アクセスを取得できる可能性がすぐに広がります。 それでは、具体的にはどのようにして EngineerMode アプリにこれらのシステム プロパティを「1」に設定させるのでしょうか?

@fs0c131y は、上で投稿したメソッドのロジックを渡すために、インテントで送信する正しいパスワードを見つける必要がありました。 ただし、このパスワードを見つけるのは簡単な作業ではありません。 彼は、パスワードの生成を担当するライブラリ (libdoor.so と呼ばれる) を逆コンパイルし、パスワード ハッシュがどこにあるかを見つけました。 /data/backup/fpwd. パスワードは、次のようなさまざまなビルド プロパティから生成されます。 ro.product.model そして ro.product.brand リバースエンジニアリングするのは簡単ではありません。

幸いにも助けがあったので デビッド・ワインスタイン そして 安全になりました Twitter で、ADB を root 権限に昇格させるために EngineerMode で必要なパスワードを発見しました。

次の形式でインテントを送信するだけです。

adb shell am start -n com.android.engineeringmode/.qualcomm.DiagEnabled --es "code""angela"

ここで、com.android.engineeringmode/.qualcomm。 DiagEnabled は、利用している DiagEnabled アクティビティのコンポーネント名で、「code」は文字列名、「angela」は関連するパスワード値です。

@fs0c131y はそうすると言っています アプリケーションを公開する これにより、ADB を root 権限に昇格させ、ブート イメージにパッチを適用して dm-verity を無効にし、su バイナリをインストールするというインテントが間もなく送信されます。 このルート アプリケーションがいつ投稿されるかについては、XDA フォーラムに注目してください。

これがエンド ユーザーにとって何を意味するかというと、次のことが可能です。 ブートローダーのロックを解除することなく、OnePlus 3、OnePlus 3T、OnePlus 5 を簡単に root 化できます. ただし、このエクスプロイトでは、悪意のあるアプリが自分自身にルート アクセスを許可することはできないため、誰かがデバイスに物理的にアクセスして ADB をセットアップしない限り、エクスプロイトから安全です。

とにかくこのエクスプロイトから身を守りたい場合は、次のようにすることができます 現在のユーザーからアプリをアンインストールする これにより、インテントが EngineerMode アプリに送信されなくなります。 ADB で次のコマンドを使用するだけです。

adbshellpmuninstall-k--user 0 com.android.engineermode

もちろん、これは依然としてエクスプロイトとみなされており、OnePlus がすぐにこれにパッチを適用することを願っています。 実際に行う必要があるのは、今後のビルドからこのアプリケーションを削除することだけです。


アップデート 1: パスワードは「angela」です

ユーザー @fs0c131y は、root 化された ADB シェルに入るために必要なパスワードを含む更新情報を自身の Twitter ページに投稿しました。 そのパスワードは…アンジェラ. 『ミスター・ロボット』を観ていない人のために説明すると、アンジェラは主人公の 1 人の名前です。 クアルコムにはミスター・ロボットのファンがたくさんいるんでしょうね。

上で投稿したコマンドを ADB に入力すると、ADB がすぐに切断され、サーバーが再起動されることがわかります。 もう一度 ADB を入力すると、これが root 化されたシェルになっていることがわかります。


更新 2: パスワードの導出方法

セキュリティ企業 Now Secure は、この root エクスプロイトの発生に必要なパスワードをどのように導き出したのかを詳しく説明したブログ投稿を公開しました。 ここで彼らの投稿全文を読むことができます.


アップデート 3: 影響を受けるさらに多くのデバイス

この最新のニュースは驚くべきことではありませんが、さらに多くのデバイスがこのエクスプロイトの影響を受けるようです。 これは、EngineerMode アプリが Qualcomm アプリであるため、他の OEM がデバイスにプリインストールしたままになっている可能性があります。 これまでのところ、ユーザーは Twitter の @fs0c131y に連絡して、アプリケーションがインストールされていることを確認しています。 一部の Asus Zenfone および Xiaomi デバイス. デバイスにこのアプリケーションがインストールされているかどうかは、[設定] に移動してどのようなアプリがインストールされているかを確認することで簡単に確認できます。


アップデート 4: デバイスの root 化

ルート化された ADB シェルを通じていくつかのコマンドを使用すると、次のことが可能になります。 su バイナリをデバイスにプッシュします. これを使用すると、SuperSU などのルート マネージャー アプリをインストールし、他のアプリに自由に root アクセスを許可できます。 ブートローダーのロックを解除する必要はありません。


アップデート 5: OnePlus の応答

OnePlusはこの状況に正式に対応しました。 で ブログ投稿同社は、攻撃者がデバイスに物理的にアクセスし、USB デバッグを有効にしている場合にのみ、このエクスプロイトを利用できると繰り返し述べています。 USB デバッグを有効にするために、攻撃者はデバイスの PIN/パスワードも必要とします。 したがって、ルート バックドアはどのアプリや人でも簡単に悪用できるものではありませんが、それでも OnePlus は、この機能を EngineerMode アプリから削除することでユーザーの懸念に対処します。