
インストールされたアプリからルート権限昇格を実現するためのエクスプロイトと解説(CVE-2024-48336、Magisk Bug #8279経由)、権限昇格/任意コード実行の脆弱性
これは、MagiskアプリにおけるCVE-2024-48336の脆弱性を利用したエクスプロイトであり、ローカルアプリがユーザーの同意なしに静かにrootアクセスを取得することを可能にします。
この脆弱性は @vvb2060 によって最初に報告され、@canyie によってPoCが作成されました。Canary 27007で修正されました。
この脆弱性を悪用して静かにroot権限を取得し、任意のアプリにrootを許可するデモビデオ: https://github.com/canyie/MagiskEoP/blob/main/screen-20220302-093745.mp4
この脆弱性を再現する手順:
名前: Magiskアプリ任意コード実行の脆弱性
別名: Magisk特権昇格の脆弱性
製品: Magisk
CVE: CVE-2024-48336
報告者: @vvb2060
初回報告日: 2024-08-01
パッチ日: 2024-08-21
開示日: 2024-08-24
影響を受けるバージョン: Manager v7.0.0 ~ Canary 27006
最初に修正されたバージョン: Canary 27007
Issue/Bug report: https://github.com/topjohnwu/Magisk/issues/8279
Patch CL: https://github.com/topjohnwu/Magisk/commit/c2eb6039579b8a2fb1e11a753cea7662c07bec02
Bug-introducing CL: https://github.com/topjohnwu/Magisk/commit/920b60da19212dd8d54d27ada77a30067ce50de6
バグクラス: 安全でない動的外部コードロード
弱点列挙:
Canary 27007より前のMagiskアプリのProviderInstaller.javaのinstall()関数は、GMSアプリをロードする前に検証しないため、ローカルの信頼できないアプリが追加の権限なしにMagiskアプリ内で任意のコードを静かに実行し、細工されたパッケージを介してrootに権限を昇格させることができます(Bug #8279)。悪用にはユーザーの操作は必要ありません。
古いAndroidバージョンは一部のアルゴリズムをサポートしていません。これらのプラットフォームでMagiskを正しく動作させるために、createCallingContext() を呼び出してGMSからconscryptをロードしようとします。詳細については、こちらのリンクを参照してください: https://t.me/vvb2060Channel/692
しかし、GMSはすべてのデバイスにプリインストールされているわけではありません。MagiskはGMSからのコードロードが常に安全であると想定していますが、攻撃者は同じパッケージ名で偽の悪意のあるアプリを作成できます。Magiskアプリが起動されると、悪意のあるコードがMagiskアプリ内で実行されます。Magiskアプリは常にrootアクセスを許可されているため、攻撃者はユーザーの同意なしに静かにrootアクセスを取得し、root権限で任意のコードを実行できます。
注: この問題はCanary 27007で、GMSをロードする前にシステムアプリであることを確認することで修正されました。ただし、GMSがプリインストールされていても署名検証の実装が壊れているデバイス(例: CorePatch)では、この問題を悪用することが可能です。
注2: 公式のMagiskアプリではこの問題の修正が行われていますが、他のアプリにも適切な修正のない類似のコードが多数存在します。例: こちら や こちら。これにより、脆弱なアプリでの任意コード実行が可能になり、もし被害アプリにrootが許可されていれば、攻撃者が再びrootアクセスを取得する可能性があります。