สำคัญ
RootmyTV ไม่น่าจะทำงานบนทีวีของคุณ ค้นหาว่าทำไม
RootMyTV เป็นประโยชน์ที่ใช้งานง่ายสำหรับการรูท/การเจลเบรค LG WebOS Smart TVS
มัน bootstraps การติดตั้งช่อง WebOS Homebrew และช่วยให้สามารถทำงานได้ด้วยสิทธิ์ที่สูงขึ้น Homebrew Channel เป็นแอพโอเพนซอร์สที่พัฒนาโดยชุมชนซึ่งทำให้ง่ายต่อการพัฒนาและติดตั้งซอฟต์แวร์บุคคลที่สาม ค้นหาข้อมูลเพิ่มเติมเกี่ยวกับที่นี่
หากคุณต้องการรายละเอียดทั้งหมดเกี่ยวกับวิธีการใช้ประโยชน์จากการใช้งานให้ข้ามไปยังการเขียนของเรา
ช่องโหว่ที่ใช้โดย RootMYTV (ทั้ง V1 และ V2) ได้รับการแก้ไขโดย LG RootMYTV ไม่น่าจะทำงานกับเฟิร์มแวร์ที่ปล่อยออกมาตั้งแต่กลางปี 2565
สำคัญ
หากคุณได้รับ "Denied method call "download" for category "/""
ข้อผิดพลาดทีวีของคุณจะถูกแก้ไข หากการรีบูตทีวีของคุณ แต่ไม่ได้ติดตั้งช่อง Homebrew การลดลงของเฟิร์มแวร์ไม่สามารถทำได้อีกต่อไปหากไม่มีการเข้าถึงรูท
ตารางต่อไปนี้แสดงรายการ WebOS รุ่นแรกสำหรับโมเดลของแต่ละปีที่ ไม่ค่อย สนับสนุน RootMYTV:
รุ่นทีวีปี | รุ่นพื้นฐาน webos | RootMyTV ได้รับการแก้ไขตั้งแต่เวอร์ชัน webOS |
---|---|---|
ปี 2559 | 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 ของคุณเท่ากับหรือมากกว่าเวอร์ชันในคอลัมน์ "Patched ตั้งแต่" สำหรับปีรุ่นทีวีของคุณ ทีวีของคุณไม่เสี่ยงต่อ RootMYTV ในขณะที่เวอร์ชันเหล่านี้และใหม่กว่าได้รับการแก้ไขอย่างแน่นอน แต่รุ่นเก่าอาจใช้งานได้หรือไม่ได้ผล RootMYTV ไม่เคยทำงานกับเวอร์ชัน webOS ก่อน 3.4.0 หรือทีวีใด ๆ ที่มาพร้อมกับ webOS 1, 2, 7 (22) หรือ 8 (23)
ขึ้นอยู่กับปีที่ทีวีออกมาใช้หมายเลขเวอร์ชัน webos ที่หลากหลาย
รุ่นก่อนปี 2559 และหลังปี 2019 นั้นเข้าใจง่ายเนื่องจากตัวเลขแรกใช้สำหรับปีเดียวเท่านั้น (เช่นทุกรุ่น 6.xy สำหรับทีวี 2021)
อย่างไรก็ตาม LG ทำสิ่งที่ผิดปกติในปี 2560 และ 2562 โดยไม่ใช้หลักแรกใหม่ ทีวีตั้งแต่ปี 2560 และ 2562 เริ่มต้นจาก WebOS เวอร์ชัน 3.5 และ 4.5 ตามลำดับ ตัวอย่างเช่นทีวีที่วางจำหน่ายในปี 2559 จะมีเวอร์ชัน webOS เท่ากับหรือมากกว่า 3.0.0 และน้อยกว่า 3.5.0; ทีวีที่วางจำหน่ายในปี 2560 จะใช้ 3.5.0 ถึง (แต่ไม่รวม) 4.0.0; และอื่น ๆ
โปรดทราบว่าเมื่อพยายามกำหนดว่าเมื่อใดที่มีการเปิดตัวเวอร์ชัน webOS ที่กำหนดคุณควรเปรียบเทียบกับหมายเลขเวอร์ชันจากรุ่นเดียวกันเท่านั้น ตัวอย่างเช่นมันปลอดภัยที่จะสมมติว่าเวอร์ชัน 3.4.1 ได้รับการปล่อยตัวหลังจาก 3.3.0 แต่เวอร์ชัน 3.4.2 อาจได้รับ (และในความเป็นจริง) ปล่อยออกมาหลังจากเวอร์ชัน 4.0.0
ด้วย WebOS 7 ในปี 2022 LG เริ่มใช้ชื่อการตลาด "WebOS 22"; เช่นเดียวกับ WebOS 8 ("WebOS 23")
บันทึก
การใช้เวอร์ชันนี้หมายถึงฟิลด์ "WebOS TV เวอร์ชัน" ในเมนูการตั้งค่า ไม่ใช่ ฟิลด์ "เวอร์ชันซอฟต์แวร์"
หากคุณต้องการปกป้องทีวีของคุณจากการแสวงประโยชน์จากระยะไกลโปรดดูส่วนที่เกี่ยวข้องของการเขียนและ/หรือใช้การอัปเดตเฟิร์มแวร์ล่าสุดสำหรับทีวีของคุณ
STEP ZERO (ข้อจำกัดความรับผิดชอบ): ระวังความเสี่ยง การรูททีวีของคุณนั้นไม่ได้รับการสนับสนุนจาก LG และแม้ว่าเราจะทำอย่างดีที่สุดเพื่อลดความเสี่ยงของความเสียหาย แต่เราก็ไม่สามารถรับประกันได้ สิ่งนี้อาจทำให้การรับประกันของคุณเป็นโมฆะ
ตอนนี้ทีวีของคุณควรติดตั้งแอป Homebrew Channel
โดยการอัปเดตระบบเริ่มต้นและการเข้าถึงรูทระยะไกลถูกปิดใช้งานเมื่อติดตั้ง หากคุณต้องการเปลี่ยนการตั้งค่าเหล่านี้ไปที่ Homebrew Channel →การตั้งค่า ตัวเลือกจะถูกนำไปใช้หลังจากรีบูต
สำหรับการใช้ประโยชน์จากทีวีที่เสียให้ตรวจสอบข้อมูลที่นี่
การเข้าถึง "โหมดนักพัฒนาซอฟต์แวร์" ไม่ จำกัด
การเข้าถึงผู้ใช้/แอปพลิเคชันระดับล่าง
แม้ว่าเราจะไม่สามารถรับผิดชอบต่อการกระทำของคุณได้ แต่เราไม่ได้พบอิฐใด ๆ เนื่องจากการรูท หากคุณใช้ซอฟต์แวร์ที่เชื่อถือได้จากที่เก็บช่อง Homebrew Channel อย่างเป็นทางการคุณควรปลอดภัย
นี่ไม่ใช่คำแนะนำทางกฎหมาย อย่างน้อยในสหภาพยุโรปการรูทและการปรับเปลี่ยนซอฟต์แวร์อื่น ๆ มักจะถือว่าถูกกฎหมายและไม่ควรเป็นพื้นฐานสำหรับการทำให้การรับประกันของคุณเป็นโมฆะ
การรีเซ็ตจากโรงงานควรลบไฟล์การกำหนดค่าที่เกี่ยวข้องกับรูททั้งหมด
เราไม่มีเครื่องมือที่สะดวกสำหรับการกำจัดรูท โดยไม่ต้องรีเซ็ตเป็นโรงงาน แม้ว่าบุคคลที่มีความรู้อาจสามารถลบการปรับแต่งของเราได้ด้วยตนเอง
ในขณะที่การอัปเดตเป็นไปได้ทางเทคนิคหาก LG แพทช์การหาประโยชน์คุณอาจจบลงด้วย "ล็อค" และไม่สามารถรูททีวีของคุณได้อีกครั้งหากคุณไม่สามารถเข้าถึงได้ นอกจากนี้เรายังไม่สามารถคาดการณ์ได้ว่าการอัปเดตในอนาคตจะส่งผลต่อเทคนิคของเราที่ใช้ในการยกระดับและใช้งานแอพ Homebrew Channel อย่างไร
ไม่สิ่งนี้จะไม่ทำลายหรือ จำกัด การเข้าถึงบริการสมัครสมาชิกหรือเนื้อหา DRMed อื่น ๆ
อย่างไรก็ตามการอยู่ในเวอร์ชันเฟิร์มแวร์เก่ามาก (ซึ่งอาจจำเป็นสำหรับการรักษารูทการเข้าถึงแบบถาวร) อาจ จำกัด การเข้าถึงแอปพลิเคชันแอปพลิเคชัน LG Content Store ของคุณการอัปเดตหรือ (ไม่ค่อย) วิธีแก้ปัญหาสำหรับสิ่งนี้อยู่ในผลงาน
หากคุณจะไม่อัปเดตเวอร์ชันซอฟต์แวร์ทีวีของคุณเป็นรุ่นที่ได้รับการแก้ไขแล้ว (ส่วนใหญ่ 4.x+ เปิดตัวหลังจาก 2021/06) ไม่จำเป็นต้องอัปเดต ห่วงโซ่ใหม่ไม่ได้นำคุณสมบัติใหม่ใด ๆ - สิ่งที่สมเหตุสมผลที่สุดที่คุณสามารถทำได้คือการอัปเดตแอพ Homebrew Channel ของคุณ
หากคุณได้รับการหยั่งรากในเวอร์ชันเฟิร์มแวร์ที่ลดระดับ/ก่อนปี 20121-06 และต้องการอัพเกรดเพิ่มเติมการอัปเดตซอฟต์แวร์อย่างเป็นทางการจะลบไฟล์รูทและแอปพลิเคชัน Homebrew ที่มีอยู่ การรัน RootMyTV V2 จากนั้นจะเปิดใช้งานรูทอีกครั้งอีกครั้ง คุณจะต้องติดตั้งแอปพลิเคชันใหม่ด้วยตัวเอง
หากคุณรู้ว่าคุณกำลังทำอะไร และต้องการคงอยู่แอปพลิเคชันที่ติดตั้งไว้คุณจะต้องลบ /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/start-devmode.sh
ก่อนการอัปเดต ( โดยไม่ต้องรีบูตในระหว่าง) จากนั้นเรียกใช้ RootMyTV V2 ในการบูตครั้งแรกหลังจากอัปเดตซอฟต์แวร์
หาก "Failsafe Mode" สะดุดทีวีของคุณและแสดงการแจ้งเตือนที่โกรธแค้นให้ไปที่ Homebrew Channel →การตั้งค่าให้สลับ "Failsafe Mode" ปิดและกด "Reboot"
"โหมด FailSafe" เป็นโหมดที่ไม่มีการเปิดใช้งานการปรับแต่งระบบของเราและเซิร์ฟเวอร์การเข้าถึงระยะไกลฉุกเฉินเท่านั้นที่เริ่มต้นขึ้น
โหมดนี้จะเปิดใช้งานโดยอัตโนมัติเมื่อทีวีขัดข้องจะถูกลบพลังงานหรือปิดตัวลงในระหว่างการเริ่มต้นระบบก่อน เพื่อลดโอกาสที่จะเกิดขึ้นเราขอแนะนำให้เปิดใช้งานการตั้งค่า "Quick Start+" ในแท็บการตั้งค่าระบบ WebOS ทั่วไป สิ่งนี้จะทำให้ทีวีไปที่ "โหมดสลีป" เท่านั้น (ซึ่งไม่ได้ใช้พลังงานมากขึ้น) แทนที่จะปิดการปิดเต็มและไม่จำเป็นต้องรีสตาร์ทบริการของเราในทุก ๆ การระงับ สิ่งนี้จะทำให้ทีวีเริ่มต้นเร็วขึ้นมาก
สคริปต์เริ่มต้นของเราเรียกใช้ไฟล์ที่ใช้งานได้ทั้งหมดใน /var/lib/webosbrew/init.d
ในการบู๊ต (ผ่าน run-parts
ชื่อไฟล์อาจมีตัวอักษร a-zA-Z0-9-_
เท่านั้น!)-สร้างสคริปต์ของคุณเองที่นั่น
สร้างการปรับแต่งใด ๆ ที่นั่นและ ไม่ แก้ไขสคริปต์ RootMyTV/Homebrew Channel ที่มีอยู่เนื่องจากอาจถูกเขียนทับในการอัปเดตในอนาคต
หากคุณเป็นนักพัฒนา Homebrew - สร้าง Symlink ไปยังสคริปต์ในเส้นทางแอพของคุณเองที่นั่นและ อย่า คัดลอกอะไรที่นั่น
หากคุณต้องการคุณสามารถสนับสนุนโครงการนี้ผ่านผู้สนับสนุน GitHub - ดูปุ่ม "ผู้สนับสนุน" ที่มุมขวาบน
อย่าอัปเดตทีวีของคุณ ในขณะที่การอัปเดตเป็นไปได้ทางเทคนิคหาก LG แพทช์การหาประโยชน์คุณอาจจบลงด้วย "ล็อค" และไม่สามารถรูททีวีของคุณได้อีกครั้งหากคุณไม่สามารถเข้าถึงได้ นอกจากนี้เรายังไม่สามารถคาดการณ์ได้ว่าการอัปเดตในอนาคตจะส่งผลต่อเทคนิคของเราที่ใช้ในการยกระดับและใช้งานแอพ Homebrew Channel อย่างไร ตัวเลือก "การอัปเดตระบบบล็อก" ใน HomeBrew Channel จะปิดใช้งานการตรวจสอบการอัปเดตเฟิร์มแวร์ ตรวจสอบให้แน่ใจว่าตัวเลือก "การอัปเดตระบบอัตโนมัติ" ในการตั้งค่าระบบ WebOS นั้นถูกปิดใช้งานเช่นกัน
จำเป็น ต้องลบแอป "โหมดนักพัฒนาซอฟต์แวร์" ก่อนการรูท มิฉะนั้นมันจะรบกวนสคริปต์เริ่มต้นที่ใช้ในการบูตการแหกคุก บริการ SSH ที่เปิดเผยโดย HomeBrew Channel เข้ากันได้กับ WebOS SDK Tooling
หากคุณต้องการการเข้าถึงเชลล์รูทระยะไกลและรู้วิธีใช้ SSH คุณสามารถเปิดใช้งานได้ในการตั้งค่าช่อง Homebrew รหัสผ่านเริ่มต้นคือ alpine
แต่เราขอแนะนำให้ตั้งค่าการตรวจสอบคีย์สาธารณะ SSH โดยการคัดลอกคีย์สาธารณะ SSH ของคุณไปที่ /home/root/.ssh/authorized_keys
บนทีวี สิ่งนี้จะปิดใช้งานการตรวจสอบรหัสผ่านหลังจากรีบูต
สามารถติดตั้งคีย์ที่ลงทะเบียนของผู้ใช้ GitHub ได้โดยใช้ตัวอย่างต่อไปนี้:
mkdir -p ~ /.ssh && curl https://github.com/USERNAME.keys > ~ /.ssh/authorized_keys
ตัวเลือกทางเลือกคือ Telnet (สามารถเปิดใช้งานได้ใน Homebrew Channel → Settings → Telnet) แม้ว่ามันจะ ท้อแท้อย่างมาก เนื่องจากจะให้รูทเชลล์ที่ไม่ผ่านการตรวจสอบแก่ทุกคนในเครือข่ายท้องถิ่น
ขอแนะนำให้ เปิดใช้ งานฟังก์ชั่น "ด่วนเริ่ม+" นี่จะทำให้ปุ่มปิดเครื่องในระยะไกลไม่ได้ทำการปิดระบบเต็มรูปแบบ หากคุณเปิดและปิดทีวีได้อย่างรวดเร็วโดยไม่ต้องเริ่มต้นอย่างรวดเร็ว+โหมด "ล้มเหลว" ของเราอาจถูกเรียกใช้ (ซึ่งอยู่ที่นั่นเพื่อป้องกันไม่ให้สคริปต์เริ่มต้นใช้การเข้ารหัสทีวี) ซึ่งจะหายไปหลังจากสลับสวิตช์ที่เกี่ยวข้องในการตั้งค่าช่อง Homebrew
ในกรณีที่มีปัญหาใด ๆ เข้าร่วมเซิร์ฟเวอร์ OpenLGTV Discord และขอความช่วยเหลือเกี่ยวกับช่อง #rootmytv
ให้ถาม #openlgtv:netserve.live
Matrix Channel หรือไฟล์ GitHub
ก่อนขอการสนับสนุนโปรดปรึกษาคู่มือการแก้ไขปัญหาของเรา
RootmyTV เป็นห่วงโซ่ของการหาประโยชน์ การค้นพบและการพัฒนาของการหาประโยชน์เหล่านี้เป็นความพยายามร่วมกันโดยมีส่วนร่วมโดยตรงและโดยอ้อมจากนักวิจัยหลายคน
เมื่อวันที่ 05 ตุลาคม 2563 Andreas Lindh รายงานไฟล์รูทเขียนทับช่องโหว่ของ LG เมื่อวันที่ 3 กุมภาพันธ์ 2564 แอนเดรียสตีพิมพ์ผลการวิจัยของเขาแสดงให้เห็นถึงการหาประโยชน์จากรูทในท้องถิ่นกับตัวจำลอง WebOS (เป็นส่วนหนึ่งของการพัฒนา SDK ของ LG) LG อ้างอย่างกล้าหาญว่าปัญหานี้ไม่ส่งผลกระทบต่ออุปกรณ์ของพวกเขาและพวกเขาจะแก้ไขอีมูเลเตอร์ของพวกเขา
เมื่อวันที่ 15 กุมภาพันธ์ 2564 David Buchanan รายงานช่องโหว่ในแอพ "Login Login" ของ LG ซึ่งอนุญาตให้แอปถูกแย่งชิงผ่านลำดับของอินพุตของผู้ใช้ที่เฉพาะเจาะจงทำให้ผู้โจมตีสามารถเรียก API ที่มีสิทธิพิเศษ เมื่อวันที่ 23 มีนาคม 2564 เดวิดเผยแพร่การหาประโยชน์จากแนวคิดการใช้ประโยชน์ซึ่งทำให้ผู้ใช้ได้รับสิทธิพิเศษใน LG Smart TVS ของพวกเขา สิ่งนี้เกิดขึ้นได้โดยการรวมเข้ากับช่องโหว่ของรากในท้องถิ่นที่รายงานก่อนหน้านี้โดย Andreas (ใช่สิ่งเดียวกับที่ LG กล่าวว่าไม่ส่งผลกระทบต่ออุปกรณ์ของพวกเขา!)
ประมาณวันที่ 28 มีนาคม 2564 Piotr Dobrowolski ค้นพบช่องโหว่ที่คล้ายกันในแอพ "เข้าสู่ระบบสังคม" ซึ่งมีอยู่ในเวอร์ชัน WebOS ที่หลากหลาย ที่สำคัญกว่านั้นการหาประโยชน์นี้สามารถเรียกใช้ผ่านเครือข่ายท้องถิ่นได้อย่างง่ายดายโดยใช้ SSAP (รายละเอียดด้านล่าง) ทำให้มีความน่าเชื่อถือและเป็นมิตรกับผู้ใช้มากขึ้น
ในช่วงเวลาของการเขียนรหัสใน repo นี้เป็นผลงานรวมของ David Buchanan (การออกแบบเว็บ, การใช้ประโยชน์จาก POC เริ่มต้น) และ Piotr Dobrowolski (ปรับปรุง "V1" การใช้ประโยชน์การใช้งานเขียนและ "V2" และการดำเนินการ)
เราขอขอบคุณ:
Andreas Lindh สำหรับการเผยแพร่การวิจัย webos ของเขา
ชุมชน WebOS ที่กว้างขึ้นโดยเฉพาะฟอรัม XDA และ OpenLGTV Discord
ผู้มีส่วนร่วมทั้งหมด (ปัจจุบันและอนาคต) ไปยังช่อง Homebrew และการพัฒนาแอพและซอฟต์แวร์ Homebrew อื่น ๆ
LG สำหรับการแก้ไขอาการของข้อบกพร่องมากกว่าสาเหตุพื้นฐาน ...
ในช่วงเวลาของการเขียน Exploit ดั้งเดิม (RootMYTV V1-2021-05-15) WebOS ทั้งหมดระหว่าง 3.4 และ 6.0 เราทดสอบ (ทีวีที่ปล่อยออกมาระหว่างกลางปี 2017 ถึงต้นปี 2021) ได้รับการสนับสนุนจากห่วงโซ่การหาประโยชน์นี้ ประมาณเดือนมิถุนายน-กรกฎาคม 2021 LG เริ่มเปิดตัวการอัปเดตซึ่งเพิ่มการบรรเทาเล็กน้อยบางอย่างที่ทำลายห่วงโซ่การหาประโยชน์ดั้งเดิมของเรา
เมื่อ RootMyTV V2 ถูกปล่อยออกมา (2022-01-05) เวอร์ชัน webOS ทั้งหมดระหว่าง 4.x และ 6.2+ เราทดสอบ (ทีวีที่เปิดตัวระหว่างต้นปี 2018 ถึงปลายปี 2021) ได้รับการสนับสนุนโดย V2 Exploit Chain
บางรุ่นระหว่าง 3.4 ถึง 3.9 อาจได้รับการสนับสนุนโดย RootMyTV V2 แต่ไมล์สะสมของคุณอาจแตกต่างกันไป
WebOS ตามชื่อแนะนำเป็นระบบปฏิบัติการสมาร์ททีวีส่วนใหญ่ใช้เทคโนโลยีเว็บ แอปพลิเคชันทั้งระบบและภายนอกจะทำงานในเว็บเบราว์เซอร์ที่ใช้โครเมียม ("WebAppMgr") หรือใน QT QML Runtime เกือบทุกระบบและแอปพลิเคชันภายนอกทำงานในคุกที่ใช้ Chroot เป็นเลเยอร์ความปลอดภัยเพิ่มเติม
"เว็บแอพ" นอกเทคโนโลยีเว็บมาตรฐานยังสามารถเข้าถึง API เพื่อสื่อสารกับ "Luna Service Bus" นี่คือรถบัสคล้ายกับ D-BUS ที่ใช้เพื่อแลกเปลี่ยนข้อความและให้บริการที่หลากหลายในโดเมนความปลอดภัยที่แตกต่างกัน ไคลเอนต์รถบัสสามารถเปิดเผยวิธีการ RPC ไปยังแอปพลิเคชันอื่น ๆ (ระบุโดย URIS luna://service-name/prefix-maybe/method-name
) ซึ่งยอมรับข้อความวัตถุ JSON เป็นพารามิเตอร์การโทรของพวกเขาจากนั้นสามารถส่งคืนหนึ่งหรือหลายข้อความ (ขึ้นอยู่กับการโทรที่ "สมัครสมาชิก" หรือไม่)
ในขณะที่ Luna Bus ดูเหมือนจะมีการจัดการ ACL อย่างกว้างขวาง แต่เมื่อพิจารณาถึงประวัติการถ่ายโอน IP ของ WebOS ดูเหมือนว่าวิศวกรไม่ได้เข้าใจความสามารถของมันอย่างเต็มที่ ส่วนหนึ่งของรถบัสถูกทำเครื่องหมายว่าเป็น "ส่วนตัว" ซึ่งสามารถเข้าถึงได้โดยแอปพลิเคชันระบบบางอย่างเท่านั้นในขณะที่การโทรอื่น ๆ ส่วนใหญ่เป็น "สาธารณะ" และสามารถเข้าถึงได้โดยแอพทั้งหมด
โดยไม่คาดคิดหนึ่งในบริการภายในที่เปิดเผยบนรถบัสคือ "LunadownloadMgr" ซึ่งให้ API ที่สะดวกสำหรับการดาวน์โหลดไฟล์การติดตามความคืบหน้า ฯลฯ ... กล่าวว่าบริการได้รับการวิจัยในอดีต ช่องโหว่การเขียนไฟล์ได้รับการบันทึกสาธารณะ
สิ่งนี้ในตัวของมันเองไม่ได้มีประโยชน์มากในการผลิตฮาร์ดแวร์ดังนั้นเราจึงจำเป็นต้องหาวิธีเรียกบริการ Luna โดยพลการจากแอปพลิเคชันที่มี com.webos.
/ com.palm.
/ com.lge.
รหัสแอปพลิเคชัน
เพื่อที่จะได้รับการควบคุมโปรแกรมเริ่มต้นของ TV GUI สามารถใช้อินเทอร์เฟซที่เรียกว่า "LG Connect Apps" ได้ โปรโตคอลของมันเรียกว่า "SSAP" (Simple Service Access Protocol) เป็นกลไก RPC ที่ใช้ WebSocket ที่ใช้งานง่ายซึ่งสามารถนำมาใช้ในการโต้ตอบกับ Luna Service Bus ทางอ้อมและได้รับการบันทึกไว้อย่างกว้างขวางในบริบทที่เกี่ยวข้องกับการอัตโนมัติในบ้าน เราใช้สิ่งนั้นเพื่อเปิดแอปพลิเคชันระบบที่มีช่องโหว่ซึ่งไม่สามารถเข้าถึงได้ง่ายด้วยการโต้ตอบของผู้ใช้ปกติ
SSAP API มีความหมายที่จะใช้จากแอพมือถือภายนอก อย่างไรก็ตามเพื่อความเรียบง่ายเราต้องการที่จะให้บริการการหาประโยชน์ของเราเป็นหน้าเว็บ สิ่งนี้ทำให้เราสังเกตเห็นว่าเซิร์ฟเวอร์ SSAP ที่เข้าใจได้อย่างชัดเจนปฏิเสธการเชื่อมต่อใด ๆ จากต้นกำเนิด HTTP (plaintext) อย่างไรก็ตามมีข้อยกเว้นเพิ่มเติมสำหรับกฎนั้นและดูเหมือนว่าผู้เขียนต้องการอนุญาตให้ file://
Origins ซึ่งนำเสนอตัวเองต่อเซิร์ฟเวอร์ว่าเป็น null
กลับกลายเป็นว่ามีแหล่งกำเนิดอื่นที่สามารถใช้งานได้ซึ่งได้รับการตอบโต้เป็น null
และนั่นคือ data:
uris
เพื่อที่จะใช้ประโยชน์จากสิ่งนี้เราได้สร้างการใช้งานพร็อกซี WebSocket API ที่น้อยที่สุดซึ่งเปิด iframe ที่ซ่อนอยู่ด้วย payload JavaScript (ซึ่งขณะนี้ทำงานอยู่ใน data:
/ null
Origin) และแลกเปลี่ยนข้อความด้วยเฟรมหลักของเบราว์เซอร์ สิ่งนี้ได้รับการปล่อยตัวเป็นห้องสมุดแยกต่างหาก
มีปัญหาเล็กน้อยในการสร้างการเชื่อมต่อกับเซิร์ฟเวอร์ SSAP WebSocket ในขณะที่เราทุกคนเชื่อในความวุ่นวายที่สุดเราไม่รู้สึกสบายใจกับการให้บริการการหาประโยชน์จาก HTTP แบบธรรมดาซึ่งจะเป็นวิธีเดียวที่จะหลีกเลี่ยงนโยบายการป้องกันเนื้อหาที่หลากหลาย (โดยค่าเริ่มต้นต้นกำเนิด HTTPS ไม่ได้รับอนุญาตให้สื่อสารกับจุดสิ้นสุด HTTP ธรรมดา)
ในขณะที่รุ่นโครเมียมรุ่นใหม่บางรุ่นอนุญาตให้มีการสื่อสารเนื้อหาแบบผสมกับ localhost
แต่นั่นไม่ใช่กรณีที่ Chromium 38 ถูกปล่อยออกมา (ใช้ใน WebOS 3.X) โชคดีที่ดูเหมือนว่าระบบเบราว์เซอร์บน WebOS 3.x นั้นมีความเสี่ยงต่อสิ่งที่ได้รับการพิจารณาว่าเป็นปัญหาด้านความปลอดภัยในเบราว์เซอร์ส่วนใหญ่มาระยะหนึ่งแล้ว - การนำทางไปยัง data:
URIS ดังนั้นเมื่อใช้งานการหาประโยชน์ของเราจึงพยายามเปิดตัวเป็น data:
URI ที่เข้ารหัส Base64 สิ่งนี้ทำให้เบราว์เซอร์ของเราไม่พิจารณาต้นกำเนิดที่ปลอดภัยอีกต่อไปและเราสามารถเข้าถึงเซิร์ฟเวอร์ WebSocket HTTP ธรรมดาได้อีกครั้ง
ผู้อ่านช่างสังเกตอาจสังเกตเห็นว่าบริการที่เราใช้นั้นหมายถึงการใช้งานจากระยะไกล ในขณะที่การเชื่อมต่อนั้นต้องการการยืนยันโดยใช้ระยะไกล เราขอแนะนำให้ปิดการใช้งานฟังก์ชันแอพ LG Connect เพื่อป้องกันการแสวงหาผลประโยชน์จากระยะไกล อย่างไรก็ตามตัวเลือกนี้ดูเหมือนจะมีอยู่ในเวอร์ชัน webOS ที่เก่ากว่า webOS 4.x - ในกรณีเช่นนี้โซลูชันเดียวคือการ เก็บทีวีไว้ในเครือข่ายแยก ต่างหากหรือปิดใช้งานบริการ SSAP ด้วยตนเองโดยใช้คำสั่งต่อไปนี้หลังจากการรูท:
luna-send -n 1 ' palm://com.webos.settingsservice/setSystemSettings ' ' {"category":"network","settings":{"allowMobileDeviceAccess":false}} '
ด้วยการควบคุมโปรแกรมเริ่มต้นของทีวีผ่าน SSAP เราสามารถเรียกใช้แอปพลิเคชันใด ๆ ที่มีอยู่ในทีวี การเปิดใช้งานข้ามแอปพลิเคชันทั้งหมดสามารถมีวัตถุ JSON พิเศษที่เรียกว่า launchParams
สิ่งนี้ใช้กับเช่น เปิดเบราว์เซอร์ระบบโดยเปิดไซต์เฉพาะหรือเปิดวิดีโอ YouTube ที่กำหนดไว้ล่วงหน้า ปรากฎว่าฟังก์ชั่นนี้ใช้เพื่อเลือกเว็บไซต์โซเชียลที่จะใช้ใน com.webos.app.facebooklogin
ซึ่งเป็นพี่น้องเก่าของ com.webos.app.iot-thirdparty-login
ที่ใช้ในการหาประโยชน์ครั้งแรก จนถึง (อย่างน้อย) 3.x
เมื่อเปิดตัวเข้าสู่ระบบโซเชียลผ่านการจัดการบัญชี LG แอปพลิเคชันนี้จะยอมรับอาร์กิวเมนต์ที่เรียกว่า server
สิ่งนี้กลายเป็นส่วนหนึ่งของ URL ที่เบราว์เซอร์ "เว็บแอป" ได้รับการสำรวจ ดังนั้นการใช้ launchParams
ที่เตรียมไว้อย่างเหมาะสมเราจึงสามารถเปิดหน้าเว็บโดยพลการ (โดยมีข้อกำหนดเพียงอย่างเดียวที่ให้บริการผ่าน https
) ที่ทำงานเป็นแอพระบบที่ได้รับการพิจารณาโดยแอป LunaDownloadMgr
A "ระบบ"
เนื่องจากเราทำงานเป็นแอปพลิเคชันระบบแล้วเราสามารถดาวน์โหลดไฟล์ (อย่างปลอดภัยผ่าน HTTPS!) ลงในตำแหน่งระบบไฟล์ที่ไม่มีการตัดสินโดยพลการเป็นรูท
เราใช้สิ่งนั้นเพื่อดาวน์โหลดไฟล์ต่อไปนี้:
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
เป็นรูท เพื่อที่จะเรียกใช้โหมดนักพัฒนาซอฟต์แวร์จำคุก SSH daemonhbchannel.ipk
→ /media/internal/downloads/hbchannel.ipk
- เนื่องจากเป้าหมายสุดท้ายของเรากำลังติดตั้งแอป Homebrew Channel เรายังสามารถดาวน์โหลดได้ในช่วงก่อนหน้าของการใช้ประโยชน์และยืนยันว่ามันดาวน์โหลดจริงdevmode_enabled
→ /var/luna/preferences/devmode_enabled
- นี่คือการตรวจสอบธงก่อนที่จะเรียกใช้สคริปต์ start-devmode.sh
และเป็นเพียงไฟล์จำลอง สคริปต์ stage3.sh
เป็นเครื่องมือขั้นต่ำที่หลังจากเปิดเปลือก telnet ฉุกเฉินและลบตัวเอง (ในกรณีที่มีบางอย่างผิดปกติและผู้ใช้จำเป็นต้องรีบูตทีวี - สคริปต์ยังคงทำงานอยู่ แต่จะไม่ถูกดำเนินการในการเริ่มต้นครั้งต่อไป) ติดตั้ง แอป Homebrew Channel ผ่านการโทรแบบ devmode มาตรฐานและยกระดับบริการเพื่อเรียกใช้ไม่มีการตัดสินเป็นรูทเช่นกัน
ประมาณ 2021/06 LG เริ่มเปิดตัวเวอร์ชันที่ได้รับการแก้ไขซึ่งเกี่ยวข้องกับการแก้ไขบางอย่างสำหรับเทคนิคที่เราใช้ในห่วงโซ่นี้:
public
/etc/palm/luna-downloadmgr/download.json
start-devmode.sh
ถูกส่งไปพร้อมกับลายเซ็นและได้รับการตรวจสอบแล้วโดยใช้ openssl
ในแต่ละการบูตstart-devmode.sh
ในช่วงเวลาที่ทีวีอัปเดตไม่สามารถใช้โหมดนักพัฒนาได้เลยการบรรเทาเหล่านี้ส่วนใหญ่นั้นไม่สำคัญเกินกว่าที่จะแก้ไขได้ดังนั้นเรายังคงพิจารณาว่าห่วงโซ่นี้ไม่มีการผสม
start-devmode.sh
การประมาณการเริ่มต้นของเราสำหรับการแก้ไขปัญหาเหล่านี้ในห่วงโซ่ของเราคือ "สองสามชั่วโมง" - แพทช์ทฤษฎีที่อยู่ข้างเราในปี 2021/05/27 กลายเป็นเรื่องที่ถูกต้อง แต่เนื่องจากมีตัวเลือกเชิงกลยุทธ์และไม่มีเวลาส่วนตัวเราจึงตัดสินใจ เลื่อนการทดสอบและวางจำหน่ายสองสามเดือน ขอโทษ. -