アニメ ゲームのルート検出が LG、OnePlus、Huawei、Xiaomi などの携帯電話のセキュリティ脆弱性の発見につながった経緯

LG、OnePlus、Huawei、Xiaomiなどのいくつかのメーカーのスマートフォンで、アプリのプロセス情報が漏洩していることが判明しました。 それが何を意味するかというと、次のとおりです。

モバイル Android オペレーティング システムは、 20億以上のデバイス 一般消費者とテクノロジー愛好家の両方によって毎月。 ブートローダーのロックを解除してスマートフォンをルート化する人の数は比較的少数ですが、 Android ユーザー全体と比較すると、XDA や レディット。 Magisk は、いじくりコミュニティにとって不可欠なツールです。 システムレスな root アクセスを提供し、root 化されたユーザーが制限なく楽しんでいるアプリ、ゲーム、サービスを引き続き使用できるようにする MagiskHide などのツールを備えています。 しかし、人気のあるアニメ ゲームが、システム セキュリティの脆弱性を巧妙に悪用して、Magisk のアンチルート検出を回避しています。 その仕組みと、このセキュリティ脆弱性の影響を受けるデバイスは次のとおりです。

  • ゲームは、デバイスがルート化されているかどうかを検出するためにバグを使用しました。 デバイスがルート化されている場合、ゲームはユーザーのプレイをブロックします。
  • このバグにより、アプリは特別な権限を必要とせずに、メモリ内の他のアプリのステータスを読み取ることができます。 このバグにより、アプリは他のアプリからデータを盗むことができなくなります。 このバグは深刻ではなく、かなり無害です。
  • Googleはすでに気づいている この問題を解決し、すべてのデバイスが保護されていることを確認するためにテスト ツールを更新しました。

背景

Fate/Grand Order と呼ばれる人気のアニメ ゲームは、ルート化されたユーザーがゲームをプレイしようとするのをブロックします。 XDA 認定開発者 トップジョンウ、以前は Magisk の主任開発者でした 方法を発見した Fate/Grand Order のルート検出を回避しようとしましたが、最善を尽くしたにもかかわらず、彼のソリューションは OnePlus 6 では機能しませんでした。 開発者は諦めないことを決意し、Fate/Grand Order を分析して、OnePlus デバイス上で root がどのように検出されているのかを解明しました。 彼が著書で説明しているように、

ミディアムポストこれにより、Fate/Grand Order が OnePlus デバイスで root アクセスを検出し続けるために悪用していると思われるセキュリティ脆弱性の発見につながりました。

Fate/Grand Order (英語)開発者: 株式会社アニプレックス

価格:無料。

4.

ダウンロード

Procf と Android

Unix ベースのオペレーティング システムには、「procfs」と呼ばれる特別なファイルシステムがあり、次の情報が含まれています。 プロセス (アプリと考えてください) のメモリ使用量 (RAM と考えてください)、ステータス (プロセスが実行されているかどうか、 睡眠など)。 ほとんどの Unix ベースのオペレーティング システムでは、ユーザーとアプリは procf に簡単にアクセスして、どのような種類のファイルが存在するかを確認できます。 アプリやサービスはシステム上で実行されます (Windows のタスク マネージャーのようなものだと考えてください)。ただし、Google が始まった procfs へのアクセスをロックダウンする Android 7.0 Nougat 以降。 Android Nougat が登場する前は、SystemPanel などのアプリは、特別な権限を必要とせずに、実行されているアプリに関するデータを収集できました。 Android Nougat 以降、アプリは次のような API を使用する必要があります。 使用状況統計 または アクセシビリティサービス、どちらも、ユーザーが付与する必要があるアクセス許可によって制限されます。

システムパネル 2開発者: 株式会社ネクストアップ

価格:無料。

4.2.

ダウンロード

Google は、フラグ「hidepid=2」を指定して /proc をマウントすることで、アプリが procfs 経由で他のアプリのステータスを読み取ることを防ぎます。 Hidepid=2 で procfs をマウントすると、アプリは自身のプロセスのステータスのみを確認できるようになります。 したがって、アプリは、UsageStats や AccessibilityService などの承認された API を使用して、デバイス上で実行されているアプリやサービスに関する情報を取得する必要があります。

脆弱性

procfs が Hidepid=2 でマウントされていない場合はどうなりますか? そうすれば、アプリは追加のアクセス許可を必要とせずに、システム上で実行されている他のアプリ (およびマウント ポイント) のステータスを自由に読み取ることができるようになります*。 Google は、自社のデバイスでは procfs を hidepid=2 でマウントしますが、他のメーカーのデバイスにはこの要件を強制しません。 LG、OnePlus、Huawei/Honor、Xiaomi などのいくつかのデバイスは、次の手順で procfs をマウントしていません。 Hidepid=2。これは、Fate/Grand Order などのアプリが Magisk が存在するかどうかを検出するために利用するものです。 デバイス。

*Android 9 Pie のセキュリティ変更により、すべてのアプリが個別に分離されるようになったため、アプリは独自の「SELinux コンテキスト」外の情報を読み取ることができなくなりました。 SELinux は、ある種のゲートキーパーとして機能するカーネル モジュールで、アプリやサービスによる、本来ではないファイルへのアクセスをブロックします。 SELinux コンテキストは、ユーザーやロールなどの情報を含むファイルのラベルのようなものです。 procfs に対して Hidepid=2 フラグが有効になっていない場合、同じ SELinux コンテキストを持つアプリは、同じコンテキスト内の他のアプリに関する情報を読み取ることができます。 Android 9 Pie を実行しているデバイスでは、Android Pie をターゲットとして構築されたアプリのみに Android Pie の新しい SELinux 変更が適用されます。 Android 8.1 Oreo 以下をターゲットとするアプリは古い SELinux ルールを使用し、次のアクセスを許可します。 procfs がマウントされていない限り、同じ SELinux コンテキスト内のプロセスに関する情報 非表示pid=2。 デバイス上で実行されているほとんどのアプリは、少なくとも Android 8.0 Oreo をターゲットにする必要があります。 新しい Google Play の要件, しかし、多くはまだ Android Pie をターゲットにするように更新されていません。

次のスクリーンショットは、プロシージャを Hidepid=2 でマウントしない場合の結果を示しています。

これはどれくらいひどいのでしょうか?

このシステムの脆弱性を次のようなエクスプロイトにたとえるとします。 フゼジュレ, ブルーボーン, クラック、 そして メルトダウン/スペクターと比較すると、このバグは見劣りします。 アプリがこれを使用して root アクセスを取得したり、パスワードを盗んだりすることはできません。 銀行口座やクレジット カードも安全です。 アプリができる最悪のことは、デバイス上で別のアプリが実行されているかどうかを判断することですが、その用途は非常に限られています。 これは多くの GNU/Linux ディストリビューションの標準的な動作であり、Google が Android Nougat で procf へのアクセスをブロックし始めたのはつい最近であることに注意してください。 このバグにより、アプリは他のプロセスを監視するための特定の権限の必要性を回避できますが、Android のサンドボックスを破って他のアプリからデータを盗むことはできません。 いずれにしても、これは意図しない動作であり、Android のプライバシー機能を損なうものであるため、修正する必要があります。

私のデバイスは影響を受けていますか?

以下は、Hidepid=2 で procfs をマウントしないことが判明したデバイスのリストです。

OEM

デバイス

Android版

procfs リーク

エイスース

ゼンフォン5Z

アンドロイド8.0オレオ

はい

ブラックベリー

キー2

アンドロイド8.0オレオ

いいえ

不可欠

PH-1

アンドロイド9パイ

いいえ

グーグル

ピクセル2

アンドロイド9パイ

いいえ

グーグル

ピクセル3

アンドロイド9パイ

いいえ

グーグル

ピクセル3XL

アンドロイド9パイ

いいえ

名誉

マジック2

アンドロイド9パイ

はい

HTC

U12+

アンドロイド8.0オレオ

はい

ファーウェイ

メイト20X

アンドロイド9パイ

はい

LG

G7 シンキュー

アンドロイド8.0オレオ

はい

LG

V40シンQ

アンドロイド8.1オレオ

はい

モトローラ

モト G4

アンドロイド8.1オレオ

いいえ

ノキア

7.1

アンドロイド8.1オレオ

いいえ

ワンプラス

6

Android 8.1オレオ/Android 9パイ

はい

ワンプラス

6T

アンドロイド9パイ

はい

Razer

電話2

アンドロイド8.1オレオ

はい

サムスン

ギャラクシーノート8

アンドロイド8.0オレオ

いいえ

サムスン

ギャラクシーノート9

Android 8.1オレオ/Android 9パイ

いいえ

サムスン

ギャラクシーS7

アンドロイド8.0オレオ

いいえ

サムスン

ギャラクシーS8

アンドロイド8.0オレオ

いいえ

サムスン

ギャラクシーS9

アンドロイド9パイ

いいえ

サムスン

Galaxy S9+ (エクシノス)

アンドロイド8.0オレオ

はい

ソニー

Xperia XZ1

アンドロイド9パイ

いいえ

シャオミ

ミミックス2S

アンドロイド9パイ

はい

シャオミ

ポコ F1

アンドロイド8.1オレオ

はい

デバイスが影響を受けるかどうかを確認する方法

デバイスがプロセス情報を他のアプリに漏洩しているかどうか (つまり、procfs が hidepid=2 でマウントされていないかどうか) を確認するのは非常に簡単です。 今回と同様にシェルコマンドを使用することもできますが、topjohnwu が開発したアプリを使用して確認することもできます。 携帯電話がルート化されている場合、彼のアプリでは、hidepid=2 を指定して procfs を再マウントすることもできます。

プロゲートをダウンロード

修正はありますか?

はい、これは修正されます. Google は今後、すべてのデバイスで、hidepid=2 を使用して procfs をマウントすることを要求します。 彼らはこれを次のように執行するだろう 更新中 互換性テスト スイート (CTS) は、Google Play のアプリとサービスを使用できるようにするためにすべてのデバイスが合格する必要がある一連のテストです。 すべての OEM (Google Play ストアがプリインストールされたデバイスの販売を希望している) は、近い将来、最終的には procfs を Hidepid=2 で再マウントするアップデートを発行する必要があります。 OnePlus デバイスではこの問題が最初に発見されたため、 OnePlus はすでに認識しており、修正に取り組んでいます。. 他の OEM がこのバグについてコメントした場合はこの記事を更新しますが、デバイスの OEM がアップデートを発行するかどうかを疑問に思う必要はありません。 更新を CTS に合格させたい場合は、このバグを修正する必要があります。