重要
rootmytvは、テレビで作業する可能性は低いです。理由を調べてください。
rootmytvは、looting/jailbreaking lg webosスマートテレビのためのユーザーフレンドリーなエクスプロイトです。
Webos Homebrewチャンネルのインストールをブートストラップし、高度な特権で実行できるようにします。 HomeBrewチャンネルは、コミュニティが開発したオープンソースアプリであり、サードパーティソフトウェアの開発とインストールが容易になります。詳細についてはこちらをご覧ください。
エクスプロイトの仕組みの詳細が必要な場合は、記事を進めてください。
RootMyTV(V1とV2の両方)が使用する脆弱性は、LGによってパッチされています。 RootMyTVは、2022年半ば以降にリリースされたファームウェアで作業する可能性は低いです。
重要
"Denied method call "download" for category "/""
を取得した場合、テレビにパッチが適用されます。テレビの再起動であり、HomeBrewチャンネルがインストールされていない場合、パッチが適用される可能性があります。ルートアクセスを既にアクセスしなくても、ファームウェアのダウングレードは不可能です。
次の表には、RootMyTVをサポートしていないことが知られている各年のモデルの最初のWebOSバージョンを示します。
テレビモデル年 | ベースWebOSバージョン | rootmytvはwebosバージョン以降にパッチを適用しました |
---|---|---|
2016年 | 3.0 | 3.4.2 |
2017年 | 3.5 | 3.9.2 |
2018年 | 4.0 | 4.4.2 |
2019年 | 4.5 | 4.9.7 |
2020 | 5 | 5.4.0 |
2021 | 6 | 6.3.0 |
WebOSバージョンがテレビのモデル年の「パッチされていない」列のバージョン以上が等しい場合、テレビはrootMyTVに対して脆弱ではありません。これらのバージョン以降は間違いなくパッチが適用されていますが、古いバージョンは機能する場合と機能しない場合があります。 RootmyTVは、3.4.0より前にWebOSバージョンや、WebOS 1、2、7(22)、または8(23)に付属しているテレビでは使用しませんでした。
テレビがリリースされた年に応じて、特定の範囲のWebOSバージョン番号を使用しています。
最初の数字は1年間のみ使用されるため、2016年以前と2019年以降のバージョンは理解しやすいです(たとえば、6.xyバージョンは2021テレビ用です)。
ただし、LGは、新しい最初の数字を使用しないことで、2017年と2019年に異常なことをしました。 2017年と2019年のテレビは、それぞれWebosバージョン3.5と4.5から始まりました。たとえば、2016年にリリースされたテレビには、3.0.0以上以下のWebOSバージョンが3.5.0以下になります。 2017年にリリースされたテレビでは、3.5.0を使用しますが(含まれていませんが)4.0.0を使用します。等々。
特定のWebOSバージョンがいつリリースされたかを判断しようとする場合、同じモデル年のバージョン番号とのみ比較する必要があることに注意してください。たとえば、バージョン3.4.1が3.3.0以降にリリースされたと想定しても安全です。しかし、バージョン3.4.2は、バージョン4.0.0の後にリリースされた可能性があります(実際には実際にはそうでした)。
2022年にWebos 7を使用して、LGはマーケティング名「Webos 22」の使用を開始しました。同じことがWebos 8( "webos 23")にも当てはまります。
注記
このバージョンは、「ソフトウェアバージョン」フィールドではなく、[設定]メニューの「WebOS TVバージョン」フィールドを指します。
リモートの搾取からテレビを保護したい場合は、書き込みの関連セクションをご覧ください。また、テレビの最新のファームウェアアップデートを適用してください。
ステップゼロ(免責事項):リスクに注意してください。テレビをルート化することは(残念ながら)LGによってサポートされていません。損害のリスクを最小限に抑えるために最善を尽くしましたが、保証することはできません。これにより、保証が無効になる場合があります。
テレビは、Homebrewチャンネルアプリをインストールする必要があります。
デフォルトでは、システムの更新とリモートルートアクセスがインストール時に無効になります。これらの設定を変更する場合は、Homebrewチャンネル→設定に移動します。オプションは再起動後に適用されます。
壊れたテレビを活用するには、こちらの情報をご覧ください。
無制限の「開発者モード」アクセス
低レベルのユーザー/アプリケーションアクセス
私たちはあなたの行動に責任を負うことはできませんが、根源のためにレンガに遭遇していません。公式のHomebrewチャネルリポジトリの信頼できるソフトウェアのみを使用する場合は、安全である必要があります。
これは法的助言ではありません。少なくともEUでは、ルート化およびその他のソフトウェアの変更は一般に合法であるとみなされ、保証を無効にするための根拠ではありません。
工場出荷時のリセットは、すべてのルート関連の構成ファイルを削除する必要があります。
ファクトリーリセットなしでルート削除のための便利なツールはありませんが、知識のある人は手動でカスタマイズを削除できる場合があります。
更新は技術的に可能ですが、LGがエクスプロイトにパッチをかけると、「ロックアウト」され、アクセスを失うとテレビを再起動できない場合があります。また、将来の更新が、Homebrew Channelアプリの昇格と操作に使用される技術にどのように影響するかを予測することはできません。
いいえ。これは、サブスクリプションサービスやその他のdrされたコンテンツへのアクセスを壊したり制限したりしません。
ただし、非常に古いファームウェアバージョン(ルートアクセスの永続性を維持するために必要な場合があります)にとどまると、LGコンテンツストアのアプリケーションへのアクセスがインストール、更新、または(まれに)起動を制限する場合があります。これの回避策は作業中です。
テレビソフトウェアバージョンを既にパッチを適用されているバージョン(2021/06以降にリリースするほとんどの4.x+)に更新する場合は、更新する必要はありません。 New Chainは新機能をもたらしません - あなたができる最も賢明なことは、あなたのHomebrew Channelアプリを更新することです。
格下げ/2021-06以前のファームウェアバージョンに既に根付いており、さらにアップグレードしたい場合、公式のソフトウェアアップデートを実行すると、既存のルートファイルとHomeBrewアプリケーションが削除されます。 rootmytv v2を実行すると、再びルートアクセスが再び必要になります。削除されたアプリケーションを自分で再インストールする必要があります。
自分が何をしているのかを知っていて、インストールされたアプリケーションを維持したい場合は、 /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/start-devmode.sh
usr/palm/services/com.palmdts.devmode.service/start-devmode.sh Fileを更新する必要があります(更新の直前に( inbetween)を再起動せずに)、ソフトウェアの更新後に最初のブートでrootmytv v2を正しく実行します。
「FailSafeモード」がテレビでつまずいていて、怒っている通知が表示されている場合は、HomeBrewチャンネル→設定に移動し、「FailSafeモード」をオフにして「再起動」を押します。
「FailSafeモード」は、システムのカスタマイズが有効になっておらず、緊急のリモートアクセスサーバーのみが起動するモードです。
このモードは、テレビがクラッシュしたり、電源が削除されたり、早期システムの起動中にシャットダウンされたりすると自動的に有効になります。その出来事の可能性を減らすために、WebOSシステム設定の[一般的な[Quick Start+]設定を有効にすることをお勧めします。これにより、テレビは完全なシャットダウンを行うのではなく、「スリープモード」(それほどパワーはかかりません)にのみ移動し、すべての一時停止でサービスを再起動する必要はありません。これにより、テレビのスタートアップがはるかに速くなります。
スタートアップスクリプトは、 /var/lib/webosbrew/init.d
のすべての実行可能ファイルをブートで実行します( run-parts
-Filenamesにはa-zA-Z0-9-_
文字のみが含まれている場合があります!) - そこで独自のスクリプトを作成します。
そこにカスタマイズを作成し、既存のrootmyTV/homebrewチャネルスクリプトを変更しないでください。これらは将来の更新で上書きされる可能性があるためです。
あなたがホームブリューの開発者である場合 - あなた自身のアプリパスでスクリプトにシンリンクを作成し、そこに何もコピーしないでください。
必要に応じて、GitHubスポンサーを介してこのプロジェクトをサポートできます。右上隅の「スポンサー」ボタンを参照してください。
テレビを更新しないでください。更新は技術的に可能ですが、LGがエクスプロイトにパッチをかけると、「ロックアウト」され、アクセスを失うとテレビを再起動できない場合があります。また、将来の更新が、Homebrew Channelアプリの昇格と操作に使用される技術にどのように影響するかを予測することはできません。 HomeBrewチャンネルの「ブロックシステムの更新」オプションは、ファームウェアの更新チェックを無効にします。 WebOSシステム設定の「自動システム更新」オプションも無効になっていることを確認してください。
ルート化する前に「開発者モード」アプリを削除する必要があります。それ以外の場合は、脱獄をブートストラップするために使用されるスタートアップスクリプトに干渉します。 HomeBrewチャンネルによって公開されたSSHサービスは、WebOS SDKツールと互換性があります。
リモートルートシェルアクセスが必要で、SSHの使用方法を知っている場合は、Homebrewチャネル設定で有効にすることができます。デフォルトのパスワードはalpine
ですが、SSHの公開キーをTVで/home/root/.ssh/authorized_keys
にコピーして、SSH公開キー認証をセットアップすることをお勧めします。これにより、再起動後にパスワード認証が無効になります。
GitHubユーザー登録キーは、次のスニペットを使用してインストールできます。
mkdir -p ~ /.ssh && curl https://github.com/USERNAME.keys > ~ /.ssh/authorized_keys
代替オプションはTelnetです(HomeBrewチャンネル→設定→Telnetで有効にすることができます)。
「クイックスタート+」機能を有効にすることをお勧めします。これにより、リモコンのシャットダウンボタンが完全なシステムシャットダウンを行わないようにします。クイックスタート+なしでテレビをすぐにオンとオフにすると、「FailSafeモード」がトリガーされる可能性があります(テレビをブリックするスタートアップスクリプトを防ぐためにあります)。
問題が発生した場合、OpenLGTV Discord Serverに参加して#rootmytv
チャンネルでヘルプを求めます。 #openlgtv:netserve.live
Matrixチャネルで尋ねるか、GitHubの問題を提出します。
サポートを求める前に、トラブルシューティングガイドを参照してください。
rootmytvはエクスプロイトのチェーンです。これらのエクスプロイトの発見と開発は、複数の研究者からの直接的かつ間接的な貢献を伴う共同の努力でした。
2020年10月5日、アンドレアスリンドは、LGに対するルートファイルの脆弱性を上書きすることを報告しました。 2021年2月3日に、アンドレアスは彼の調査結果を発表し、WebOSエミュレーター(LGの開発SDKの一部)に対するローカルルートのエクスプロイトを示しました。 LGは、この問題はデバイスに影響を与えず、エミュレータにパッチを当てようとしていると大胆に主張していました。
2021年2月15日、David BuchananはLGの「ThinQログイン」アプリの脆弱性を報告しました。これにより、アプリを特定のユーザー入力シーケンスでハイジャックできるようになり、攻撃者が特権APIを呼び出すことができました。 2021年3月23日に、デイビッドは概念実証のエクスプロイトを発表しました。これにより、ユーザーはLGスマートテレビでルート特権を獲得できました。これは、以前にAndreasによって報告されたローカルルートの脆弱性と組み合わせることで可能になりました(はい、LGがデバイスに影響を与えなかったのと同じです!)。
2021年3月28日頃、Piotr Dobrowolskiは、より広い範囲のWebosバージョンに存在する「ソーシャルログイン」アプリで同様の脆弱性を発見しました。さらに重要なことは、このエクスプロイトは、SSAP(以下の詳細)を使用して、ローカルネットワーク上で簡単にトリガーされる可能性があり、より信頼性が高くユーザーフレンドリーです。
執筆時点では、このレポのコードは、David Buchanan(Webデザイン、初期POCエクスプロイト)とPiotr Dobrowolski(改良された「V1」エクスプロイトの実装、記事、および「V2」の研究と実装)の組み合わせの作品です。
感謝したい:
彼のWebOS研究を公開したAndreas Lindh。
より広いWebosコミュニティ、特にXDAフォーラムとOpenLGTVの不和。
すべての貢献者(現在および将来)の自宅チャンネルへのすべての貢献者、および他の自家製のアプリやソフトウェアの開発。
LG、根本的な原因ではなく、バグの症状にパッチを適用するために...
元のエクスプロイト(RootmyTV v1-2021-05-15)の執筆時点で、テストした3.4から6.0のすべてのWebOSバージョン(2017年半ばから2021年初頭までリリースされたテレビ)がこのエクスプロイトチェーンによってサポートされていました。 2021年6月から7月頃、LGはアップデートの展開を開始し、元のエクスプロイトチェーンを破ったマイナーな軽減を追加しました。
RootmyTV V2がリリースされたとき(2022-01-05)、4.xから6.2+の間のすべてのWebOSバージョン(2018年初頭から2021年後半までにリリースされたテレビ)がV2エクスプロイトチェーンによってサポートされました。
3.4〜3.9の間の一部のバージョンは、rootMyTV V2によってサポートされる場合がありますが、マイレージは異なる場合があります。
Webosは、名前が示すように、主にWebテクノロジーに基づいたスマートテレビオペレーティングシステムです。システムと外部の両方のアプリケーションは、剥がれたクロムベースのWebブラウザー( "webAppmgr")またはQT QMLランタイムで実行されます。ほぼすべてのシステムと外部アプリケーションは、追加のセキュリティレイヤーとしてChrootベースの刑務所で実行されます。
標準のWebテクノロジー以外の「Webアプリ」も、「Luna Service Bus」と通信するためにAPIにアクセスできます。これは、D-BUSに似たバスで、メッセージを交換し、さまざまなセキュリティドメインでさまざまなサービスを提供するために使用されます。バスのクライアントは、JSONオブジェクトメッセージを呼び出しパラメーターとして受け入れ、1つまたは多くのメッセージを返すことができる他のアプリケーション(uris luna://service-name/prefix-maybe/method-name
によって識別されます)にいくつかのRPCメソッドを公開できます。 (呼び出しが「購読可能」かどうかによって異なります)
Luna Busは、WebOS IP転送の履歴を考慮して、ACLハンドリングが広範囲にわたるようですが、その能力を完全に理解しているエンジニアは多くないようです。バスの一部は「プライベート」としてマークされており、特定のシステムアプリケーションでのみアクセスできますが、他の呼び出しのほとんどは「公開」であり、すべてのアプリでアクセスできます。
予想外に、バスで公開されている内部サービスの1つは「LunadownLoadMgr」であり、ファイルのダウンロード、進捗追跡などの便利なAPIを提供します...過去にサービスが調査され、任意の未侵害のルートにつながるアイデンティティの混乱バグがファイル書き込みの脆弱性は公開されています。
これ自体が生産ハードウェアではあまり役に立たなかったため、 com.webos.
/ com.palm.
/ com.lge.
アプリケーションID。
TV GUIの最初のプログラム制御を獲得するために、「LG Connect Apps」と呼ばれるインターフェイスを使用できます。 「SSAP」(Simple Service Access Protocol)と呼ばれるそのプロトコルは、Lunaサービスバスと間接的に対話するために使用できるシンプルなWebsocketベースのRPCメカニズムであり、さまざまな自動関連のコンテキストで広範囲に文書化されています。それを使用して、通常のユーザーインタラクションでは簡単にアクセスできない脆弱なシステムアプリケーションを起動します。
SSAP APIは、外部モバイルアプリから使用することを目的としています。しかし、簡単にするために、私たちはエクスプロイトをウェブページとして提供したかったのです。これにより、当然のことながら、SSAPサーバーが(Plantext)HTTP Originsからの接続を明示的に拒否することに気付くようになります。ただし、そのルールには追加の例外があり、著者はnull
としてサーバーに提示するfile://
Originsを許可したいと考えているようです。使用できるもう1つの起源があることがわかりました。これは、 null
としても再現されています。それはdata:
uris。
これを活用するために、JavaScriptペイロード(現在はdata:
で実行されている)でnull
表示のiframeを開く最小限のWebSocket APIプロキシ実装を作成し、メインブラウザーフレームとメッセージを交換します。これは別のライブラリとしてリリースされています。
SSAP Websocketサーバーとの接続を確立することには、わずかな問題があります。私たちは皆、完全な混乱を信じていますが、私たちはプレーンテキストHTTPを介してエクスプロイトを提供することにあまり快適ではありません。 (デフォルトでは、HTTPSの起源は、Plantext HTTPエンドポイントと通信することはできません)
いくつかの新しいChromiumバージョンでは、 localhost
との混合コンテンツ通信が可能になりますが、Chromium 38がリリースされた場合はそうではありませんでした(Webos 3.xで使用)。ありがたいことに、Webos 3.xのシステムブラウザは、ほとんどのブラウザでしばらくの間セキュリティの問題と見なされてきたものに対しても脆弱であるように思われます - data:
URIS。したがって、該当する場合、私たちのエクスプロイトはdata:
base64エンコードURI。これにより、ブラウザはオリジンが安全であると考えることがなくなり、Plain-HTTP Websocketサーバーに再度アクセスできます。
観察者の読者は、私たちが使用するサービスがリモートで使用されることを意図していることに気付いたかもしれません。接続自体はリモートを使用した確認を必要としますが、リモートの搾取を防ぐためにLG Connectアプリ機能を無効にすることを強くお勧めします。ただし、このオプションはWebos 4.xよりも古いWebosバージョンにのみ存在するようです。そのような場合、唯一のソリューションは、テレビを別のネットワークに保持するか、ルート化後に次のコマンドを使用してSSAPサービスを手動で無効にすることです。
luna-send -n 1 ' palm://com.webos.settingsservice/setSystemSettings ' ' {"category":"network","settings":{"allowMobileDeviceAccess":false}} '
SSAPを介してテレビの最初のプログラマティックコントロールを使用すると、テレビに存在するアプリケーションを実行できます。すべてのクロスアプリケーションの起動には、 launchParams
と呼ばれる追加のJSONオブジェクトを含めることができます。これは、例えば使用されます。特定のサイトを開いた状態でシステムブラウザを開くか、所定のYouTubeビデオを起動します。この機能は、 com.webos.app.facebooklogin
で使用するソーシャルWebサイトを選択するためにも使用されますcom.webos.app.iot-thirdparty-login
(少なくとも)3.xまで。
LGアカウント管理を介してソーシャルログインを起動するとき、このアプリケーションはserver
と呼ばれる引数を受け入れます。これは、「Webアプリ」ブラウザがナビゲートされるURLの一部であることが判明しました。したがって、適切に準備されたlaunchParams
を使用して、 LunaDownloadMgr
が「システム」アプリで考慮したシステムアプリとして実行されている任意のWebページ(唯一の要件がhttps
で提供されることです)を開くことができます。
すでにシステムアプリケーションとして実行されているため、rootとして任意のないファイルシステムの場所にファイル(HTTPSを超えて安全にダウンロードできます)をダウンロードできます。
それを使用して、次のファイルをダウンロードします。
stage3.sh
→ /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/start-devmode.sh
/palm/services/com.palmdts.devmode.service/start-devmode.sh-これは、 /etc/init/devmode.conf
で実行されたスクリプトです。開発者モードを実行するために、SSHデーモンを投獄します。hbchannel.ipk
→ /media/internal/downloads/hbchannel.ipk
/hbchannel.ipk-最終目標はHomebrewチャンネルアプリに挿入されているため、エクスプロイトの初期段階でそれをダウンロードして、実際にダウンロードされていることを確認することもできます。devmode_enabled
→ /var/luna/preferences/devmode_enabled
これは、 start-devmode.sh
スクリプトを実行する前にチェックされるフラグであり、ダミーファイルです。 stage3.sh
スクリプトは、緊急のテルネットシェルを開いて自分自身を削除した後(何かがうまくいかずテレビを再起動する必要がある場合に実行され続けますが、次の起動時に実行されなくなる場合)、最小限のツールです。標準のDevModeサービスを介したHomeBrewチャンネルアプリは、そのサービスを昇格させて、rootとしても侵入していません。
2021/06頃、LGはこのチェーンで使用したトリックのいくつかの修正を含むパッチバージョンの展開を開始しました。
public
に限定されています/etc/palm/luna-downloadmgr/download.json
の正規表現のリストに対するターゲットパスをチェックしますstart-devmode.sh
スクリプトに署名が付属し、各ブートでopenssl
使用して検証されるようになりましたstart-devmode.sh
を使用して新しい開発者モードアプリケーションを展開するのに約1か月かかりました。その間、更新されたテレビは開発者モードをまったく使用できませんでした。これらの緩和のほとんどは、あまりにも些細なことではありません。したがって、このチェーンはまだ解かれていないと考えています。
start-devmode.sh
使用する必要さえありません。私たちのチェーンでこれらの問題を修正するための最初の見積もりは「数時間」でした - 2021/05/27に私たちの側で理論化されたパッチは正しいことが判明しましたが、いくつかの戦略的な選択と個人的な時間の欠如により、私たちは決めました数か月間、テストとリリースを延期します。ごめん。 :)