중요한
RootmyTV는 TV에서 작동하지 않을 것입니다. 이유를 알아보십시오.
RootmyTV는 루팅/탈옥 LG WebOS 스마트 TV를위한 사용자 친화적 인 악용입니다.
Webos Homebrew Channel의 설치를 부트 스트랩하고 고위용 권한으로 실행할 수 있습니다. Homebrew Channel은 커뮤니티가 개발 한 오픈 소스 앱으로 제 3 자 소프트웨어를보다 쉽게 개발하고 설치할 수 있습니다. 그것에 대해 자세히 알아보십시오.
익스플로잇이 어떻게 작동하는지에 대한 자세한 내용을 원한다면 우리의 글로 건너 뛰십시오.
rootmytv (V1 및 V2)가 사용하는 취약점은 LG에 의해 패치되었습니다. RootMyTV는 20122 년 중반부터 출시 된 펌웨어에서 작업하지 않을 것입니다.
중요한
"Denied method call "download" for category "/""
오류가 발생하면 TV가 패치됩니다. TV가 재부팅되었지만 홈브류 채널이 설치되지 않은 경우 패치 될 수 있습니다. 펌웨어 다운 그레이드는 아직 루트 액세스가 없으면 더 이상 불가능합니다.
다음 표는 RootMyTV를 지원 하지 않는 것으로 알려진 매년 모델의 첫 번째 WebOS 버전을 나열합니다.
TV 모델 연도 | 기본 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 버전이 TV 모델 연도의 "Patched"열의 버전보다 동일한 경우 TV는 RootmyTV에 취약하지 않습니다 . 이러한 버전과 최신 버전은 확실히 패치되어 있지만 이전 버전은 작동하거나 작동하지 않을 수도 있습니다. RootmyTV는 3.4.0 이전에 WebOS 버전 또는 WebOS 1, 2, 7 (22) 또는 8 (23)과 함께 제공되는 TV에서 작업하지 않았습니다.
TV가 출시 된 해에 따라 특정 범위의 WebOS 버전 번호를 사용합니다.
2016 년과 2019 년 이후의 버전은 이해하기 쉽습니다. 첫 번째 숫자는 1 년 동안 만 사용되므로 (예 : 6.xy 버전은 2021 TV의 경우).
그러나 LG는 새로운 첫 자리를 사용하지 않음으로써 2017 년과 2019 년에 특이한 일을했습니다. 2017 년과 2019 년의 TV는 각각 WebOS 버전 3.5 및 4.5에서 시작되었습니다. 예를 들어, 2016 년에 출시 된 TV는 WebOS 버전이 3.0.0 이상 또는 3.5.0보다 작습니다. 2017 년에 출시 된 TVS는 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 버전"필드를 나타냅니다.
원격 착취로부터 TV를 보호하려면 쓰기의 관련 섹션을 참조하거나 TV의 최신 펌웨어 업데이트를 적용하십시오.
단계 제로 (면책 조항) : 위험을 인식하십시오. TV를 응원하는 것은 (불행히도) LG에 의해 지원되지 않으며, 손상의 위험을 최소화하기 위해 최선을 다했지만 어떠한 보장도 할 수 없습니다. 이것은 보증을 무효화 할 수 있습니다.
TV에는 이제 Homebrew Channel 앱이 설치되어야합니다.
기본적으로 시스템 업데이트 및 원격 루트 액세스가 설치시 비활성화됩니다. 이 설정을 변경하려면 Homebrew 채널 → 설정으로 이동하십시오. 옵션 재부팅 후에 적용됩니다.
깨진 TV를 이용하려면 여기에서 정보를 확인하십시오.
무제한 "개발자 모드"액세스
낮은 수준의 사용자/응용 프로그램 액세스
우리는 귀하의 행동에 대해 책임을지지 않지만 응원으로 인해 벽돌을 만나지 않았습니다. 공식 Homebrew Channel 저장소에서 신뢰할 수있는 소프트웨어 만 사용하는 경우 안전해야합니다.
이것은 법적 조언이 아닙니다. 적어도 EU에서 루팅 및 기타 소프트웨어 수정은 일반적으로 합법적 인 것으로 간주되며 보증을 무효화하기위한 근거가되어서는 안됩니다.
공장 재설정은 모든 루트 관련 구성 파일을 제거해야합니다.
공장 재설정없이 근본 제거를위한 편리한 도구는 없지만, 지식이 많은 사람은 수동으로 사용자 정의를 제거 할 수 있습니다.
업데이트가 기술적으로 가능하지만 LG가 악용을 패치하면 "잠겨"가 발생하여 액세스를 잃으면 TV를 다시 뿌릴 수 없습니다. 또한 향후 업데이트가 Homebrew Channel 앱을 높이고 작동하는 데 사용되는 기술에 어떤 영향을 미치는지 예측할 수 없습니다.
아닙니다. 이것은 가입 서비스 또는 기타 DRMED 컨텐츠에 대한 액세스를 중단하거나 제한하지 않습니다.
그러나 매우 오래된 펌웨어 버전 (루트 액세스를 지속적으로 유지하는 데 필요할 수 있음)을 유지하면 LG Content Store 응용 프로그램 설치, 업데이트 또는 (거의) 출시에 대한 액세스를 제한 할 수 있습니다. 이것에 대한 해결 방법은 작품에 있습니다.
TV 소프트웨어 버전을 이미 패치 된 것 (2021/06 이후에 출시 된 대부분의 4.x+)으로 TV 소프트웨어 버전을 업데이트하지 않으려면 업데이트 할 필요가 없습니다. 새로운 체인은 새로운 기능을 가져 오지 않습니다. 가장 현명한 일은 Homebrew Channel 앱을 업데이트하는 것입니다.
이미 다운 그레이드/Pre-2021-06 펌웨어 버전에 루팅되어 있고 더 업그레이드하려면 공식 소프트웨어 업데이트를 수행하면 기존 루트 파일 및 홈 브루 응용 프로그램이 제거됩니다. rootmytv v2를 실행하면 루트 액세스가 다시 다시 나타납니다. 제거 된 응용 프로그램을 직접 다시 설치해야합니다.
당신이하고있는 일을 알고 있고 설치된 응용 프로그램을 지속하려면 /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/start-devmode.sh
파일을 업데이트 직전에 제거해야합니다. Software 업데이트 후 첫 번째 부팅에서 RootMyTV V2를 바로 실행 한 다음 RootmyTV V2를 실행합니다.
"실패 모드"가 TV에서 트립되고 화난 알림이 표시되면 Homebrew Channel → 설정으로 이동하여 "FailSafe Mode"를 끄고 "재부팅"을 누릅니다.
"FailSafe Mode"는 시스템 사용자 정의가 활성화되지 않고 비상 원격 액세스 서버 만 시작되는 모드입니다.
이 모드는 TV 충돌이 발생하면 자동으로 활성화되거나 전원이 제거되거나 조기 시스템 시작 중에 종료됩니다. 이러한 발생 가능성을 줄이려면 WebOS 시스템 설정 일반 탭에서 "빠른 시작+"설정을 활성화하는 것이 좋습니다. 이렇게하면 TV가 전체 종료를 수행하는 대신 "수면 모드"(훨씬 더 많은 전력을 소비하지 않음)로 만 이동하며 매월 모든 정지에서 서비스를 다시 시작할 필요가 없습니다. 이것은 또한 TV 스타트 업을 훨씬 더 빨리 만들 것입니다.
우리의 스타트 업 스크립트는 부팅에서 /var/lib/webosbrew/init.d
에서 모든 실행 파일을 실행합니다 ( run-parts
통해 파일 이름에는 a-zA-Z0-9-_
문자 만 포함 할 수 있습니다!)-자체 스크립트를 만듭니다.
여기에 사용자 정의를 작성하고 기존 RootmyTV/Homebrew 채널 스크립트를 수정 하지 마십시오 . 향후 업데이트에서 덮어 쓰기가있을 수 있으므로.
홈 브루 개발자 인 경우 - 자신의 앱 경로에서 스크립트의 심볼 링크를 만들고 거기에 복사 하지 마십시오 .
원하는 경우 GitHub 스폰서를 통해이 프로젝트를 지원할 수 있습니다. 오른쪽 상단의 "스폰서"버튼을 참조하십시오.
TV를 업데이트하지 마십시오. 업데이트가 기술적으로 가능하지만 LG가 악용을 패치하면 "잠겨"가 발생하여 액세스를 잃으면 TV를 다시 뿌릴 수 없습니다. 또한 향후 업데이트가 Homebrew Channel 앱을 높이고 작동하는 데 사용되는 기술에 어떤 영향을 미치는지 예측할 수 없습니다. Homebrew Channel의 "Block System Updates"옵션은 펌웨어 업데이트 확인을 비활성화합니다. WebOS 시스템 설정의 "자동 시스템 업데이트"옵션도 비활성화되어 있는지 확인하십시오.
루팅하기 전에 "개발자 모드"앱을 제거 해야합니다 . 그렇지 않으면 탈옥을 부트 스트랩하는 데 사용되는 스타트 업 스크립트를 방해합니다. Homebrew Channel에서 노출 된 SSH 서비스는 WebOS SDK 툴링과 호환됩니다.
원격 루트 쉘 액세스가 필요하고 SSH를 사용하는 방법을 알고 있다면 홈 브루 채널 설정에서 활성화 할 수 있습니다. 기본 비밀번호는 alpine
이지만 SSH 공개 키를 TV에서 /home/root/.ssh/authorized_keys
에 복사하여 SSH 공개 키 인증을 설정하는 것이 좋습니다. 재부팅 후 비밀번호 인증이 비활성화됩니다.
GitHub 사용자 등록 키는 다음 스 니펫을 사용하여 설치할 수 있습니다.
mkdir -p ~ /.ssh && curl https://github.com/USERNAME.keys > ~ /.ssh/authorized_keys
대안 옵션은 Telnet (홈 브루 채널 → 설정 → 텔넷에서 활성화 될 수 있음)입니다. 비록 낙담 하지만 로컬 네트워크의 모든 사람에게 무단 루트 쉘을 제공하기 때문입니다.
"빠른 시작+"기능을 활성화하는 것이 좋습니다. 이렇게하면 리모컨이 전체 시스템 종료를 수행하지 않아도됩니다. Quick Start+없이 TV를 신속하게 켜고 끄면, "실패 모드"가 트리거 될 수 있습니다 (이는 홈브류 채널 설정에서 관련 스위치를 전환 한 후 사라질 시작 스크립트가 TV를 두드리는 것을 방지 할 수 있습니다).
문제가있는 경우 OpenLGTV Discord 서버에 가입하여 #rootmytv
채널에 도움을 요청한 경우 #openlgtv:netserve.live
Matrix Channel에 문의하거나 GitHub 문제를 제출하십시오.
지원을 요청하기 전에 문제 해결 안내서를 참조하십시오.
rootmytv는 일련의 익스플로잇입니다. 이러한 악용의 발견과 발전은 여러 연구자들의 직간접적인 기여와 함께 협력적인 노력이었습니다.
2020 년 10 월 5 일, Andreas Lindh는 LG에 대한 루트 파일을 덮어 쓰기 취약성을보고했습니다. 2021 년 2 월 3 일, Andreas는 자신의 연구 결과를 발표하여 WebOS 에뮬레이터 (LG의 개발 SDK의 일부)에 대한 로컬 뿌리 악용을 시연했습니다. LG는이 문제가 장치에 영향을 미치지 않았으며 에뮬레이터를 패치 할 것이라고 대담하게 주장했다.
2021 년 2 월 15 일, David Buchanan은 LG의 "ThinQ Login"앱의 취약성을보고하여 특정 사용자 입력 시퀀스를 통해 앱을 납치 할 수있게하여 공격자가 권한이있는 API를 호출 할 수있었습니다. 2021 년 3 월 23 일, David는 개념 증명 익스플로잇을 발표하여 사용자가 LG 스마트 TV에서 루트 권한을 얻을 수있게했습니다. 이것은 Andreas가 이전에보고 한 로컬 루트 취약성과 결합하여 가능해졌습니다 (예, LG가 자신의 장치에 영향을 미치지 않았다고 말한 것과 동일합니다!).
2021 년 3 월 28 일경, Piotr Dobrowolski는 "소셜 로그인"앱에서 유사한 취약점을 발견했으며, 이는 더 넓은 범위의 WebOS 버전에 걸쳐 존재합니다. 더 중요한 것은이 악용이 SSAP (아래 세부 사항)를 사용하여 로컬 네트워크를 통해 쉽게 트리거 될 수 있으므로 훨씬 신뢰할 수 있고 사용자 친화적입니다.
글을 쓰는 시점 에서이 저장소의 코드는 David Buchanan (웹 디자인, 초기 POC 익스플로잇) 및 Piotr Dobrowolski (개선 된 "V1"Exploit 구현, 쓰기 및 "V2"연구 및 구현)의 결합 된 작업입니다.
우리는 감사합니다 :
그의 WebOS 연구를 게시 한 Andreas Lindh.
더 넓은 WebOS 커뮤니티, 특히 XDA 포럼 및 OpenLGTV Discord.
Homebrew Channel의 모든 기고자 (현재 및 미래) 및 기타 Homebrew 앱 및 소프트웨어 개발.
LG, 근본적인 원인이 아닌 버그 증상을 패치하기 위해 ...
원래 익스플로잇 (RootmyTV v1-2021-05-15)을 작성할 때, 우리는 3.4와 6.0 사이의 모든 WebOS 버전 (2017 년 중반과 2021 년 초 사이에 출시 된 TV)을이 악용 체인에 의해 지원했습니다. 2021 년 6 월에서 7 월경 LG는 업데이트를 시작하여 우리의 원래 익스플로잇 체인을 깨뜨리는 약간의 완화를 추가했습니다.
rootmytv v2가 출시되면 (2022-01-05), 4.x와 6.2+ 사이의 모든 WebOS 버전 (2018 년 초와 2021 년 후반에 출시 된 TV)을 V2 Exploit 체인에 의해 지원했습니다.
3.4에서 3.9 사이의 일부 버전은 RootmyTV V2에서 지원할 수 있지만 마일리지는 다를 수 있습니다.
이름에서 알 수 있듯이 Webos는 주로 웹 기술을 기반으로하는 스마트 TV 운영 체제입니다. 애플리케이션, 시스템 및 외부는 분사 된 크롬 기반 웹 브라우저 ( "WebAppMgr") 또는 QT QML 런타임으로 실행됩니다. 거의 모든 시스템 및 외부 응용 프로그램은 Chroot 기반 교도소에서 추가 보안 계층으로 실행됩니다.
표준 웹 기술 이외의 "웹 앱"은 "Luna Service Bus"와 통신하기 위해 API에 액세스 할 수 있습니다. 이것은 D-BU와 유사한 버스로 메시지를 교환하고 다양한 보안 도메인에서 다양한 서비스를 제공하는 데 사용됩니다. 버스 클라이언트는 JSON 객체 메시지를 호출 매개 변수로 받아들이는 다른 응용 프로그램 (Uris luna://service-name/prefix-maybe/method-name
으로 식별)에 일부 RPC 방법을 노출시킬 수 있습니다. (통화가 "구독 가능"하는 것에 따라)
Luna Bus는 Webos IP 전송의 역사를 고려할 때 광범위한 ACL 처리가있는 것으로 보이지만 많은 엔지니어가 그 기능을 완전히 이해하지 못하는 것처럼 보입니다. 버스의 일부는 "개인"으로 표시되며 특정 시스템 응용 프로그램에서만 액세스 할 수있는 반면, 대부분의 다른 통화는 "공개"이며 모든 앱에서 액세스 할 수 있습니다.
예기치 않게, 버스에 노출 된 내부 서비스 중 하나는 "LunadownloadMgr"으로 파일 다운로드, 진행중인 추적 등에 편리한 API를 제공합니다. 파일 쓰기 취약성이 공개적으로 문서화되었습니다.
이것은 그 자체로 생산 하드웨어에 그다지 도움이되지 않았으므로 com.webos.
/ com.palm.
/ com.lge.
응용 프로그램 ID.
TV GUI의 초기 프로그램 제어를 얻으려면 "LG Connect 앱"이라는 인터페이스를 사용할 수 있습니다. "SSAP"(Simple Service Access Protocol)이라는 프로토콜은 LUNA 서비스 버스와 간접적으로 상호 작용하는 데 사용할 수있는 간단한 WebSocket 기반 RPC 메커니즘으로 다양한 홈 오토 메이션 관련 상황에 광범위하게 문서화되었습니다. 이를 사용하여 정상적인 사용자 상호 작용으로 쉽게 액세스 할 수없는 취약한 시스템 응용 프로그램을 시작합니다.
SSAP API는 외부 모바일 앱에서 사용됩니다. 그러나 단순성을 위해 우리는 우리의 악용을 웹 페이지로 봉사하고 싶었습니다. 이로 인해 SSAP 서버는 (일반 텍스트) HTTP Origins의 연결을 명시 적으로 거부한다는 사실을 알게되었습니다. 그러나이 규칙에는 추가적인 예외가 있었으며 저자는 file://
허용하고 싶었습니다 null
null
로 재현 할 수있는 다른 원점이 있다는 것이 밝혀졌습니다. 즉, data:
uris.
이를 이용하기 위해 JavaScript 페이로드 (현재 data:
/ null
Origin에서 실행 중)가있는 숨겨진 iframe을 열고 메인 브라우저 프레임으로 메시지를 교환하는 최소 WebSocket API 프록시 구현을 만들었습니다. 이것은 별도의 라이브러리로 출시되었습니다.
SSAP WebSocket 서버와의 연결을 설정하는 데 약간의 문제가 있습니다. 우리 모두는 완전히 혼란을 믿는 반면, 우리는 일반 텍스트 HTTP를 통해 우리의 익스플로잇을 제공하는 데 매우 편안하지 않으며, 이는 혼합 콘텐츠 예방 정책을 피하는 유일한 방법 일 것입니다. (기본적으로 HTTPS Origins는 일반 텍스트 HTTP 엔드 포인트와 통신 할 수 없습니다)
일부 새로운 크롬 버전은 localhost
와의 혼합 컨텐츠 통신을 허용하지만 Chromium 38이 출시 될 때는 그렇지 않았습니다 (WebOS 3.X에서 사용). 고맙게도, WebOS 3.X의 시스템 브라우저는 대부분의 브라우저에서 보안 문제로 간주 된 것에 취약한 data:
보입니다. 따라서, 해당되는 경우, 우리의 익스플로잇은 data:
Base64-Encoded URI. 이로 인해 브라우저는 더 이상 원점이 안전하다고 고려하지 않으며 일반적인 HTTP WebSocket 서버에 다시 액세스 할 수 있습니다.
관찰자 독자는 우리가 사용하는 서비스가 원격으로 사용되는 것을 알 수 있습니다. 연결 자체는 원격을 사용하여 확인이 필요하지만 원격 익스플로잇을 방지하기 위해 LG Connect 앱 기능을 비활성화하는 것이 좋습니다 . 그러나이 옵션은 WebOS 4.X보다 오래된 WebOS 버전에만 존재하는 것 같습니다.이 경우 유일한 솔루션은 TV를 별도의 네트워크에 보관 하거나 루팅 후 다음 명령을 사용하여 수동으로 SSAP 서비스를 비활성화하는 것입니다.
luna-send -n 1 ' palm://com.webos.settingsservice/setSystemSettings ' ' {"category":"network","settings":{"allowMobileDeviceAccess":false}} '
SSAP를 통해 TV의 초기 프로그래밍 방식 제어를 통해 TV에있는 응용 프로그램을 실행할 수 있습니다. 모든 교차 응용 프로그램 런칭에는 launchParams
라는 추가 JSON 객체가 포함될 수 있습니다. 이것은 예를 들어 특정 사이트가 열려있는 시스템 브라우저를 열거 나 미리 정해진 YouTube 비디오를 시작하십시오. 이 기능은 com.webos.app.facebooklogin
에서 사용할 소셜 웹 사이트를 선택하는 데에도 사용됩니다.이 기능은 com.webos.app.iot-thirdparty-login
의 오래된 형제 인 모든 WebOS 버전에 존재합니다. (적어도) 3.x까지 올라갑니다.
LG 계정 관리를 통해 소셜 로그인을 시작할 때이 응용 프로그램은 server
라는 인수를 허용합니다. 이것은 "웹 앱"브라우저가 탐색하는 URL의 일부로 밝혀졌습니다. 따라서 적절하게 준비된 launchParams
를 사용하여 LunaDownloadMgr
A "System"앱에서 고려되는 시스템 앱으로 실행되는 임의의 웹 페이지를 열 수 있습니다 ( https
통해 제공되는 유일한 요구 사항).
이미 시스템 애플리케이션으로 실행 중이므로 파일 (https를 통해 단단히 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- 이것은 root, root, /etc/init/devmode.conf
에 의해 시작시 실행 된 스크립트입니다. 개발자 모드를 실행하려면 SSH 데몬을 감옥에 갇혔습니다.hbchannel.ipk
→ /media/internal/downloads/hbchannel.ipk
최종 목표는 Homebrew Channel 앱을 강조하기 때문에 Exploit의 초기 단계에서 다운로드하여 실제로 다운로드했음을 확인할 수 있습니다.devmode_enabled
→ /var/luna/preferences/devmode_enabled
이것은 start-devmode.sh
스크립트를 실행하기 전에 확인한 플래그이며 더미 파일입니다. stage3.sh
스크립트는 비상 텔넷 쉘을 열고 스스로를 제거한 후 (문제가 발생하고 사용자가 TV를 재부팅 해야하는 경우 - 스크립트가 계속 실행되지만 더 이상 다음 스타트 업에서 실행되지 않는 경우) 최소한의 도구입니다. 표준 DevMode 서비스 호출을 통한 Homebrew Channel App는 루트로도 실행하도록 서비스를 향상시킵니다.
약 2021/06 LG는이 체인에서 사용한 트릭에 대한 수정 사항이 포함 된 패치 버전을 출시하기 시작했습니다.
public
로 제한됩니다./etc/palm/luna-downloadmgr/download.json
의 정규 표현 목록에 대한 대상 경로를 확인합니다.start-devmode.sh
스크립트는 이제 서명이 포함되어 있으며 이제 각 부팅에서 openssl
사용하여 확인되었습니다.start-devmode.sh
사용하여 새로운 개발자 모드 애플리케이션을 출시하는 데 약 한 달이 걸렸으며,이 기간 동안 업데이트 된 TV는 개발자 모드를 전혀 사용할 수 없었습니다.이러한 완화의 대부분은 작업하기에는 너무 사소하기 때문에이 체인은 여전히 균형이 맞지 않는 것으로 간주합니다.
start-devmode.sh
사용할 필요조차 없습니다.체인에서 이러한 문제를 해결하기위한 초기 추정치는 "몇 시간"이었다 - 2021/05/27에 우리 편에서 이론화 된 패치는 올바른 것으로 판명되었지만 전략적 선택과 개인적인 시간 부족으로 인해 우리는 몇 달 동안 테스트 및 출시를 연기하십시오. 죄송합니다. :)