
Исследовательский набор инструментов, который получает root-доступ на телевизоре Samsung Tizen 9 через RCE в Chromium WasmGC и произвольный доступ к физической памяти через physmap V4L2, с постоянной полезной нагрузкой при загрузке и каналом root-шелла.
Неофициальное исследование безопасности телевизора Samsung Neo QLED 2024 года на Tizen 9. Без sdb, без режима разработчика, без прошивки: телевизор рутируется из собственного браузера, а root закрепляется через штатное приложение-сервис, запускаемое при загрузке.
| Тестовый экземпляр | Neo QLED 2024, серия QNX1D (платформа QTV T09) |
| Прошивка | T-PTMxxxx (01400) |
| Ядро | Linux 5.4.249, ARM32 (VMSPLIT_3G + HIGHMEM, без LPAE), PAGE_OFFSET 0xC0000000, PHYS_OFFSET 0x20000000 |
| Браузер | Chromium 120.0.6099.5 (SamsungBrowser/7.0) |
| Root | uid=0, CapEff=0x3fffffffff |
| Постоянная полезная нагрузка | репозиторий v41 (актуальные md5/размер в строке состояния AGENTS.md — пересоздаются из артефакта); на тестовом экземпляре работает та же сборка (развёрнута 2026-10-27, маячки содержат tok=); payload_backup.dll хранит предыдущую сборку |
| Канал root | TCP 31337 на телевизоре, построчный протокол, ответы заканчиваются на __END__ |
pwsh -File .\root.ps1 -TvIp <tv-ip> # root the TV
pwsh -File .\uninstall.ps1 -TvIp <tv-ip> # restore stock
root.ps1 запускается на ПК и управляет всем процессом: он запускает сервер на порту 80,
рутит заглушку браузера, устанавливает загрузочную полезную нагрузку и ожидает канал root
после перезагрузки. Два шага остаются на пульте телевизора, и скрипт запрашивает оба:
http://<pc-ip>/index.html и дождаться RUNNING;Затем:
python tools\root_shell.py "id" <tv-ip> # talk to the TV's root channel
Каждая опция, точные запросы, ожидаемый вывод, оговорка о host-IP и
ручной запасной вариант: docs/USAGE.md.
/dev/video40/30/60) принимают выбранный
атакующим vm_pgoff в mmap() и передают его в remap_pfn_range()
без проверки: произвольное чтение/запись физической памяти из непривилегированного
процесса (uid 5001, группа video).init_task в физической памяти, определить нашу
собственную задачу через real_parent форкнутого дочернего процесса и обнулить учётные данные.app_onboot на
.NET-полезную нагрузку, которая повторяет патч physmap/cred при каждой загрузке, закрывает свой
узел и обслуживает канал root-команд на TCP 31337.Никаких GPU CVE, никакого эксплойта ядра, никакого подписанного модуля. Physmap — самая интересная
часть; пошаговое описание с измеренными константами находится в
docs/EXPLOIT.md.
| Документ | Содержание |
|---|---|
docs/USAGE.md | запуск: опции, запросы, ожидаемый вывод, детали удаления, восстановление |
docs/EXPLOIT.md | цепочка шаг за шагом, с константами, специфичными для прошивки |
docs/ROOT-METHODS.md | все оценённые методы получения root/персистентности и тот, который победил |
docs/FAILED.md | что не сработало и почему — читается как список тупиков, экономит недели |
docs/BOOT-REGRESSION-SMACK.md | самый тонкий баг в проекте: неверная метка SMACK заставляла приложение умирать до Main |
docs/PORTABILITY.md | другой телевизор Tizen 9: четыре шлюза, что нужно перемерить, пошаговый порт |
docs/SERVER-HOSTING.md | сервер на стороне ПК: как он должен работать, ловушка тихой смерти, брандмауэр, логи |
docs/SCRIPT-REVIEW.md | аудит скриптов на готовность к production |
docs/TESTING.md | уровни тестирования, офлайн и на телевизоре, и что каждый из них ловит |
docs/LOGGUIDE.md | расшифровка каждого beacon и ошибки инструмента, с дальнейшими шагами |
docs/REFERENCE-MATERIALS.md | где скачать прошивку / исходники GPL / инструменты симуляции для вашей модели |
docs/REVIEW-HISTORY.md | закрытые замечания ревью и их доказательства (архив) |
docs/OPEN-ISSUES.md | текущее состояние, предстоящая работа и история закрытых ревью/проходов |
AGENTS.md | передача: инструменты, процедура, проверка, ловушки, восстановление |
CHANGELOG.md | датированная история изменений и их причин |
SECURITY.md | неаутентифицированный бэкдор на 31337, область действия, сообщение об уязвимостях, правовые аспекты |
NOTICE.md | атрибуция третьих сторон; какие файлы не перелицензированы |
LICENSE | MIT для оригинальной работы (файлы третьих сторон исключены) |
root.ps1, uninstall.ps1 PC entry points (PowerShell)
payload/ boot payload source (.NET 6, Program.cs)
server/ port-80 server, exploit page, TV-side deploy scripts
tools/ physmap client, kernel helpers, build scripts
docs/ the documents above
AGENTS.md hand-off notes
LICENSE, NOTICE.md license + third-party attribution
SECURITY.md backdoor/scope/reporting
Весь набор инструментов зафиксирован в репозитории, поэтому клон работает без какого-либо другого рабочего дерева.
server/payload.dll включён намеренно (побайтово идентичен результату сборки),
чтобы набор инструментов работал без .NET SDK. Журналы выполнения, выходные данные сборки и
генерируемый для каждого хоста скрипт развёртывания игнорируются git и никогда не отдаются по HTTP.