
私は2022年10月に発見したエクスプロイトで、Androidのパッケージマネージャーバイナリ(pm)とそのデバッグフラグの処理方法に関連するものです。2023年3月にパッチが適用されました。CVE-2019-16253をペイロードとして使用し、システムシェルを取得します。
2019年、後に「CVE-2019-16253」として知られる脆弱性が発見され、これはSamsungのTTSエンジンのバージョン3.0.02.7以前に影響を与えました。このエクスプロイトにより、ローカルの攻撃者が権限をシステム権限に昇格させることができ、後にSamsungによってパッチが適用されました。
基本的に、SamsungのTTSアプリはTTSエンジンから受け取ったデータを盲目的に受け入れていました。TTSエンジンにライブラリを渡すと、それがTTSアプリケーションに渡され、そのライブラリがロードされ、Android上のUID 1000であるシステム権限で実行されます。これは後でパッチが適用され、TTSアプリがエンジンからのデータとインストールされたバージョンを検証するようになり、この特定の抜け穴は塞がれました。
しかし、Android 10でGoogleはENABLE_ROLLBACKパラメータを使ってアプリケーションをインストールすることでアプリケーションのロールバックを可能にする機能を導入しました。これにより、ユーザーはデバイスにインストールされているアプリのバージョンを、デバイスに以前インストールされていたバージョンに戻すことができます。私は見落としにより、これがSamsungのテキスト読み上げアプリケーション、さらには現在市場に出回っているAndroid 10+デバイスのすべてのアプリケーションに拡張されたと考えています。
このキルチェーンの根源はすべて、アプリケーションをインストールする際にパッケージマネージャーコマンドに追加される「-d」フラグにあります。これはデバッグ可能なアプリに対してのみ機能するはずですが、デバッグ不可能なアプリケーションでも機能するため、TTSアプリを強制的にダウングレードできるのです。
言い換えれば、2019年のエクスプロイトは修正され、更新されたバージョンのTTSアプリが配布されましたが、その後、3年後(おそらく4年後)にリリースされたデバイスでそれをインストールして悪用するための、最初は1つ、現在は複数の回避策とバイパスが発見され、過去のエクスプロイトのうちどれだけが復活可能かという疑問が生じています。
3月にSamsungはこのエクスプロイトのパッチをリリースしましたが、私はすぐに3月のSamsungパッチの回避策を見つけることができ、これも報告されパッチが適用され、悪名高い「TTS System Shell」の2年間の物語は終わりました。
簡単ガイド --
1 すべてのapkをインストールし、少なくとも1回開く。
2 再起動。デバイスが再起動したら、ADBから次のコマンドを実行します。
"adb shell pm install -r -d -f -g --full --install-reason 3 --enable-rollback /data/local/tmp/samsungTTSVULN2.apk"
3 1つのコンソールで、nc -lp 9999 と入力します。
4 2つ目のコンソールで次のコマンドを実行します:adb shell am start -n com.samsung.SMT/.gui.DownloadList
完了。
起動に問題がある場合は、SMT(Samsung Text-To-Speech)を完全にアンインストールし、脆弱なバージョンを再インストールしてから手順3以降をやり直してください。
2023年2月時点でパッチ済み XDAで公開される前にXDAモデレーターによって削除されたものです。 それ以外はここではアーカイブとして変更されずに残されています。
これは、この記事の執筆時点で製造されたすべてのSamsungモバイルデバイス(一部のJDMデバイスを除く)で動作することが期待されます。(2023年1月19日)
動作するクールなもの: /efs、/efs/imei、/efs/sec_efs、/efs/FactoryAppの大部分へのアクセス - /data、/data/system、/data/user/0/ANY_SYSTEM_APPの大部分へのアクセス - 「Insthk」バイナリが使用可能になる - Secure Folder/Separated Appsが、それにPOCもインストールすると完全に侵害される(UID 150_system) - IOTHidden Menu、DM Mode、Service Mode、複数のデバッグメニュー、およびプリコンフィグをシステムコンテキストで起動 - 多くの保護されたプロパティを変更可能。例: setprop persist.service.adb.root 1 setprop service.adb.root 1 setprop sys.hidden.otatest 1 setprop sys.hiddenmenu.enable 1 setprop persist.sys.knox.device_owner true setprop persist.sys.usb.qxdm.debug 1 setprop sys.usb.qxdm.debug 1 setprop presist.service.adb.enable 1 setprop persist.sys.usb.qxdm.debug 1 setprop service.adb.enable 1 setprop persist.rollback.is_test true setprop sys.oem_unlock_allowed 1 その他にもかなりあります。
簡単な方法 - ステップ1 - 「Komraids System Shell.zip」をダウンロードし(添付は最新版)、デスクトップの任意の場所に展開します。 ステップ2 - 「samsungTTSVULN2.apk」を/data/local/tmpにプッシュします。 ステップ3 - USBデバッグがONで、コンピュータが認証されていることを確認します。また、省電力モードがOFFであることを確認します。 ステップ4 - komraids_POC_V1.5.apkをインストールし、デバイスを再起動します。 ステップ5 - デバイスが完全に再起動してロック解除されたら、systemshell.exeを実行します。 ステップ6 - これでUID 1000のシェルが表示されるはずです。お楽しみください。いじるものには注意してください。
注意点:.exeは再起動ごとに1回だけ実行する必要があります。必要に応じて使用するか、以下の「仕組み?」のステップ5に従って手動でシステムシェルを開くこともできます。
馬鹿なことをしないでください。あなたがする愚かなことに対して私は責任を負いません。 PWNED - K0mraid3 2022-10-06 175216.png
@oakieville さんに多大な感謝を。.exeの提供と、このプロジェクトのコード調整に多くの助けをいただきました。
このプロジェクトはVAULT-TEC Dev Opsによって提供されました!