重要的
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的理论上是正确的,但是由于某些战略选择和缺乏个人时间,我们决定去推迟测试并释放几个月。对不起。 :)