重要的
RootMyTV不太可能在您的電視上工作。找出原因。
RootMyTV是一種用於生根/越獄LG WebOS智能電視的用戶友好利用。
它引導Webos Homebrew Channel的安裝,並允許其使用高架特權運行。自製頻道是一個由社區開發的開源應用程序,它使開發和安裝第三方軟件變得更加容易。在這裡了解更多信息。
如果您想要有關漏洞利用方式的完整詳細信息,請提前跳到我們的文章中。
rootmyTV(V1和V2)使用的漏洞已由LG修補。自2022年中以來,RootMyTV不太可能在發布的固件上工作。
重要的
如果您獲得"Denied method call "download" for category "/""
錯誤,則您的電視已修補。如果您的電視重新啟動但沒有安裝自製頻道,則很可能會修補。固件降級是不再可能沒有根訪問的。
下表列出了每年不支持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版本編號。
2016年之前和2019年之後的版本易於理解,因為第一位數字僅使用一年(例如,每6.xy版本適用於2021電視)。
但是,LG在2017年和2019年做出了不尋常的事情,因為不使用新的第一位數字。 2017年和2019年的電視分別始於WebOS版本3.5和4.5。例如,2016年發布的電視將其WebOS版本等於或大於3.0.0,小於3.5.0; 2017年發行的電視將使用3.5.0到(但不包括)4.0.0;等等。
請注意,當嘗試確定何時發布給定的WebOS版本時,您應僅將其與同一型號年度的版本編號進行比較。例如,假設3.3.0之後發布3.4.1版是安全的。但是版本3.4.2本來可以(實際上)在版本4.0.0之後發布。
在2022年WebOS 7的情況下,LG開始使用營銷名稱“ WebOS 22”; WebOS 8(“ WebOS 23”)也是如此。
筆記
此版本指的是“設置”菜單中的“ WebOS TV版本”字段,而不是“軟件版本”字段。
如果您想保護電視免受遠程開發的影響,請參閱我們文章的相關部分和/或為電視應用最新的固件更新。
步驟零(免責聲明):注意風險。 (不幸的是)紮根電視是LG的支持,儘管我們已盡最大努力將損壞的風險降至最低,但我們無法保證。這可能會使您的保修無效。
現在,您的電視應該安裝自製頻道應用程序。
默認情況下,系統更新和遠程根訪問將在安裝時禁用。如果您想更改這些設置,請轉到Homebrew Channel→設置。重新啟動後,將應用其中的選項。
要利用損壞的電視,請在此處查看信息。
無限的“開發人員模式”訪問
較低的用戶/應用程序訪問
雖然我們不能對您的行為承擔任何責任,但由於生根,我們沒有遇到任何磚頭。如果您僅使用官方Homebrew Channel存儲庫中的受信任軟件,那麼您應該安全。
這不是法律建議。至少在歐盟,生根和其他軟件修改通常被認為是合法的,不應是使您的保修的基礎。
出廠重置應刪除所有與根相關的配置文件。
儘管有知識淵博的人可能能夠手動刪除我們的自定義,但我們沒有方便的根除根源的工具可以移除根。
雖然在技術上進行更新是可能的,但如果LG修補了利用功能,則最終可能會“鎖定”,如果您以某種方式失去了訪問權限,則無法重新啟動電視。我們也無法預測未來的更新將如何影響我們用於提升和操作自製頻道應用程序的技術。
否。這不會破壞或限制訪問訂閱服務或其他DRMED內容。
但是,保持非常古老的固件版本(可能需要保持root訪問持續性需要)可能會限制您對LG Content Store應用程序應用程序安裝,更新或(很少)啟動的訪問。解決方案正在進行中。
如果您不打算將電視軟件版本更新為已修補的版本(2021/06之後發布的4.x+),則無需更新。新鏈沒有帶來任何新功能 - 您可以做的最明智的事情是更新您的自製頻道應用程序。
如果您已經植根於降級/2021-06固件版本,並希望進一步升級,則執行官方軟件更新將刪除現有的Root Files和Homebrowrew應用程序。然後,運行rootmytv v2將再次重新啟用root訪問。您將需要自己重新安裝刪除應用程序。
如果您知道自己在做什麼並且想堅持安裝的應用程序,則需要刪除/media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/start-devmode.sh
foref不重新啟動中間),然後在軟件更新後首次啟動時在第一個引導上運行rootmytv v2。
如果“故障安全模式”在您的電視上被絆倒,並且顯示出憤怒的通知,請轉到“自製頻道”→設置,請切換“失敗圖”模式“關閉”,然後按“重新啟動”。
“ FailSAFE模式”是一種無法啟用我們的系統自定義的模式,並且僅啟動了緊急遠程訪問服務器。
當電視崩潰,卸下電源或在早期系統啟動期間關閉電源時,此模式會自動啟用。為了減少發生這種情況的機會,我們建議在WebOS系統設置中啟用“快速啟動+”設置常規選項卡。這將使電視只能進入“睡眠模式”(不需要更多的功率),而不是完全關閉,並且不需要在每次暫停上重新啟動我們的服務。這也將使電視初創公司更快。
我們的啟動腳本在boot上運行所有可執行/var/lib/webosbrew/init.d
(通過run-parts
-fileNames可以包含a-zA-Z0-9-_
teletter!) - 在此處創建自己的腳本。
在此處創建任何自定義,並且不會修改現有的rootmytv/homebrew頻道腳本,因為這些腳本可能會在未來的更新中覆蓋。
如果您是自製的開發人員 - 在自己的應用程序路徑中創建一個符號鏈接,並且不要複製任何內容。
如果需要,可以通過GitHub贊助商支持此項目 - 請參閱右上角的“贊助商”按鈕。
不要更新電視。雖然在技術上進行更新是可能的,但如果LG修補了利用功能,則最終可能會“鎖定”,如果您以某種方式失去了訪問權限,則無法重新啟動電視。我們也無法預測未來的更新將如何影響我們用於提升和操作自製頻道應用程序的技術。 Homebrew Channel中的“塊系統更新”選項將禁用固件更新檢查。確保WebOS系統設置中的“自動系統更新”選項也將被禁用。
在生根之前,需要刪除“開發人員模式”應用。否則,它將乾擾用於引導越獄的啟動腳本。由Homebrew Channel暴露的SSH服務與WebOS SDK工具兼容。
如果您需要遠程根外殼訪問並知道如何使用SSH,則可以在自製頻道設置中啟用它。默認密碼是alpine
,但我們建議通過將您的SSH公共密鑰複製到電視上的/home/root/.ssh/authorized_keys
來設置SSH公共密鑰身份驗證。重新啟動後,這將禁用密碼身份驗證。
GitHub用戶註冊密鑰可以使用以下片段安裝:
mkdir -p ~ /.ssh && curl https://github.com/USERNAME.keys > ~ /.ssh/authorized_keys
替代選項是telnet(可以在Homebrew Channel→設置→Telnet中啟用),儘管它是高度灰心的,因為這會給本地網絡上的任何人提供未經驗證的根外殼。
建議啟用“快速啟動+”功能。這將使遙控器上的關閉按鈕不做完整的系統關閉。如果您在沒有快速啟動+的情況下迅速打開電視,我們的“失敗範圍安全模式”可能會觸發(這是為了防止啟動腳本插入電視的啟動腳本),該腳本將在切換相關開關中的相關開關中消失。
如果有任何問題加入OpenLGTV Discord服務器並在#rootmytv
頻道上尋求幫助,請在我們的#openlgtv:netserve.live
矩陣頻道,或提交GitHub問題。
在尋求支持之前,請諮詢我們的故障排除指南。
rootMyTV是一系列利用鏈。這些漏洞的發現和開發是一項合作的努力,由多個研究人員的直接和間接貢獻。
2020年10月5日,安德烈亞斯·林德(Andreas Lindh)報告了一個根文件覆蓋LG的脆弱性。 2021年2月3日,安德烈亞斯(Andreas)發表了他的發現,證明了針對Webos模擬器(LG開發SDK的一部分)的本地根源利用。 LG大膽地聲稱這個問題不會影響他們的設備,並且他們將修補模擬器。
2021年2月15日,戴維·布坎南(David Buchanan)報告了LG的“ ThinQ登錄”應用程序中的漏洞,該應用程序允許該應用程序通過特定的用戶輸入序列劫持,從而允許攻擊者調用特權API。 2021年3月23日,戴維(David)發布了概念證明的利用,使用戶能夠在其LG智能電視上獲得根特權。通過將其與Andreas先前報導的局部根脆弱性相結合(LG所說的不影響其設備的同一漏洞!),則可以實現這一目標。
2021年3月28日左右,Piotr Dobrowolski在“社交登錄”應用程序中發現了類似的漏洞,該應用程序存在於更廣泛的WebOS版本中。更重要的是,使用SSAP(下面的詳細信息)可以輕鬆地通過本地網絡觸發此漏洞,從而使其更加可靠和用戶友好。
在撰寫本文時,此存儲庫中的代碼是David Buchanan(Web Design,初始POC漏洞利用)和Piotr Dobrowolski(改進的“ V1”利用實現,寫入,“ V2”研究和實施)的合併作品。
我們要感謝:
Andreas Lindh出版了他的WebOS研究。
更廣泛的WebOS社區,尤其是XDA論壇和OpenLGTV Discord。
所有貢獻者(當前和未來)是自製頻道,以及其他自製應用程序和軟件的開發。
LG,用於修補蟲子的症狀,而不是基本原因...
在撰寫原始漏洞(Rootmytv V1-2021-05-15)時,我們測試了所有WebOS版本(2017年中至2021年初發布的電視)均由此利用鏈支持。 2021年6月至7月左右,LG開始推出更新,這增加了一些較小的緩解,這打破了我們原始的漏洞鏈。
當發行RootMyTV V2(2022-01-05)時,V2 Exploit鏈支持了我們測試的所有WebOS版本(2018年初至2021年底之間發布的電視)。
RootMyTV V2可以支持3.4和3.9之間的某些版本,但是您的里程可能會有所不同。
顧名思義,WebOS是一種智能電視操作系統,主要基於Web技術。系統和外部的應用程序要么以剝離的基於鉻的Web瀏覽器(“ WebAppMgr”)或QT QML運行時運行。幾乎所有的系統和外部應用程序都在基於Chroot的監獄中作為額外的安全層運行。
在標準Web技術之外的“ Web應用程序”還可以訪問與“ Luna Service Bus”通信的API。這是類似於D-BUS的總線,用於交換消息並在不同的安全域中提供各種服務。總線客戶端可以將一些RPC方法公開到其他應用程序(由Uris luna://service-name/prefix-maybe/method-name
識別),該應用程序接受JSON對象消息作為其呼叫參數,然後可以返回一個或多個消息。 (取決於呼叫是否為“可訂閱”)
儘管Luna Bus似乎具有廣泛的ACL處理,考慮到WebOS IP傳輸的歷史,似乎沒有多少工程師完全了解其功能。總線的一部分被標記為“私人”,只有某些系統應用程序才能訪問,而其他大多數呼叫都是“公開”,並且所有應用程序都可以訪問。
出乎意料的是,在公共汽車上暴露的內部服務之一是“ lunadownloadmgr”,它提供了方便的API,用於文件下載,進度跟踪等...表示服務已在過去進行了研究,並且身份混亂的錯誤導致了任意無與倫比的根源文件寫入漏洞已被公開記錄。
這本身對生產硬件本身並不是很有幫助,因此我們需要找到一種從使用com.webos.
/ com.palm.
/ com.lge.
應用ID。
為了獲得對電視GUI的初始程序化控制,可以使用稱為“ LG Connect Apps”的接口。它的協議稱為“ SSAP”(簡單的服務訪問協議),是一種簡單的基於Websocket的RPC機制,可用於與Luna Service Bus間接交互,並已在各種與家用Automation相關的上下文中進行了廣泛的記錄。我們使用它來啟動脆弱的系統應用程序,該應用程序不容易通過普通用戶交互而訪問。
SSAP API旨在從外部移動應用程序中使用。但是,為了簡單起見,我們希望將利用作為網頁。這使我們注意到,可以理解的是,SSAP服務器明確拒絕了(宣傳)HTTP起源的任何連接。但是,該規則還有一個其他例外,似乎作者想允許file://
rigins,它們以null
為單位。事實證明,還可以使用另一種來源,也可以用作null
,這就是data:
uris。
為了利用這一點,我們創建了一個最小的WebSocket API代理實現,該實現將使用JavaScript有效負載(現在以data:
/ null
Origin運行)打開隱藏的IFRAME,並將消息與主瀏覽器框架交換。這已作為單獨的庫發布。
與SSAP WebSocket服務器建立連接存在一個小問題。雖然我們都相信完全混亂,但我們對為宣傳HTTP的利用而感到不滿意,這將是避免使用混合內容預防政策的唯一方法。 (默認情況下,不允許HTTPS起源與明文HTTP端點進行通信)
儘管一些較新的鉻版確實允許與localhost
混合內容交流,但釋放Chromium 38(在WebOS 3.x中使用)並非如此。值得慶幸的是,似乎WebOS 3.x上的系統瀏覽器也很容易受到大多數瀏覽器中已有一段時間安全問題的影響 - 數據導航到data:
uris。因此,如果適用,我們的利用試圖以data:
base64編碼的URI。這使我們的瀏覽器不再考慮源頭安全,我們可以再次訪問普通的HTTP WebSocket服務器。
觀察讀者可能已經註意到,我們使用的服務是遠程使用的。儘管連接本身需要使用遠程確認,但我們強烈建議禁用LG連接應用程序功能,以防止遠程開發。但是,此選項似乎僅在WebOS版本上存在於比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
中的哪個社交網站,該網站是com.webos.app.iot-thirdparty-login
的較舊的兄弟姐妹,用於初始exploit,所有webos版本都存在直到至少(至少)3.x。
通過LG帳戶管理啟動社交登錄時,此應用程序接受一個稱為server
參數。事實證明,這是“ Web App”瀏覽器導航到的URL的一部分。因此,使用適當準備的launchParams
我們能夠打開一個任意的網頁(唯一的要求是它是由https
提供的)作為系統應用程序,該應用程序由LunaDownloadMgr
A一個“系統”應用程序考慮。
由於我們已經作為系統應用程序運行,因此我們可以將文件(通過HTTPS安全地牢固地下載到任意的未揭示文件系統位置)作為root。
我們使用它下載以下文件:
stage3.sh
→ /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/start-devmode.sh
usr/palm/services/com.palmdts.devmode.service/start-devmode.sh--這是在啟動下執行的腳本,由/etc/init/devmode.conf
root,root,為了運行開發人員模式,將SSH守護進程牢記。hbchannel.ipk
→ /media/internal/downloads/hbchannel.ipk
/hbchannel.ipk-由於我們的最終目標是插入Homebrew Channel應用程序,因此我們也可以在Exploit的早期階段下載它,並確認它實際下載。devmode_enabled
→ /var/luna/preferences/devmode_enabled
這是在運行start-devmode.sh
腳本之前檢查的標誌,只是一個虛擬文件。 stage3.sh
腳本是一個最小的工具,在打開緊急telnet shell並刪除自身後(如果某些問題出現問題並且用戶需要重新啟動電視- 腳本保持運行,但將不再在下一個啟動時執行),請安裝安裝通過標準DevMode服務呼叫,Homebrew Channel應用程序並將其服務提升為無用的根源。
大約2021/06 LG開始推出一個修補版本,該版本涉及我們在此鏈中使用的技巧的一些修復程序:
public
/etc/palm/luna-downloadmgr/download.json
中的正則表達式列表檢查目標路徑start-devmode.sh
腳本現在已發貨,並使用openssl
在每個啟動上進行驗證start-devmode.sh
推出新的開發人員模式應用程序,在此期間,更新的電視完全無法使用開發人員模式。這些緩解的大多數太微不足道而無法解決,因此我們仍然認為這條鏈條未連接。
start-devmode.sh
我們在鏈條中解決這些問題的最初估計是“幾個小時” - 在2021/05/27的理論上是正確的,但是由於某些戰略選擇和缺乏個人時間,我們決定去推遲測試並釋放幾個月。對不起。 :)