
Toolkit di ricerca che ottiene i privilegi di root su un TV Samsung Tizen 9 tramite un RCE Chromium WasmGC e un accesso arbitrario alla memoria fisica V4L2 physmap, con payload persistente all'avvio e canale di root shell.
Ricerca di sicurezza non ufficiale su un Samsung Neo QLED del 2024 con Tizen 9. Nessun sdb, nessuna modalità sviluppatore, nessun flashing del firmware: la TV viene rootata dal proprio browser, e il root viene reso persistente tramite un'app di servizio stock all'avvio.
| Unità di test | Neo QLED 2024, serie QNX1D (piattaforma QTV T09) |
| Firmware | T-PTMxxxx (01400) |
| Kernel | Linux 5.4.249, ARM32 (VMSPLIT_3G + HIGHMEM, senza LPAE), PAGE_OFFSET 0xC0000000, PHYS_OFFSET 0x20000000 |
| Browser | Chromium 120.0.6099.5 (SamsungBrowser/7.0) |
| Root | uid=0, CapEff=0x3fffffffff |
| Payload persistente | repo v41 (md5/dimensione attuali nella riga di stato di AGENTS.md — rigenerati dall'artefatto); l'unità di test esegue la stessa build (distribuita il 2026-10-27, i beacon contengono tok=); payload_backup.dll mantiene la build precedente |
| Canale root | TCP 31337 sulla TV, protocollo a righe, le risposte terminano con __END__ |
pwsh -File .\root.ps1 -TvIp <tv-ip> # root the TV
pwsh -File .\uninstall.ps1 -TvIp <tv-ip> # restore stock
root.ps1 viene eseguito sul PC e gestisce tutto: avvia il server sulla porta 80,
esegue il root dello stub del browser, installa il payload di boot e attende il canale root
dopo il riavvio. Due passaggi restano sul telecomando della TV, e lo script li richiede entrambi:
http://<pc-ip>/index.html e attendi RUNNING;Poi:
python tools\root_shell.py "id" <tv-ip> # talk to the TV's root channel
Ogni opzione, i prompt esatti, l'output atteso, l'avvertenza sull'IP host e il
fallback manuale: docs/USAGE.md.
/dev/video40/30/60) accettano un
vm_pgoff scelto dall'attaccante in mmap() e lo passano a remap_pfn_range()
senza validazione: lettura/scrittura arbitraria della memoria fisica da un processo
non privilegiato (uid 5001, gruppo video).init_task nella memoria fisica, localizza il nostro
stesso task tramite il real_parent di un figlio forkato, e azzera le credenziali.app_onboot di serie con
un payload .NET che ripete la patch physmap/cred a ogni avvio, chiude il suo
nodo e serve un canale di comandi root su TCP 31337.Nessuna CVE GPU, nessun exploit del kernel, nessun modulo firmato. La physmap è la parte
interessante; il writeup fase per fase con le costanti misurate è
docs/EXPLOIT.md.
| Documento | Contenuti |
|---|---|
docs/USAGE.md | esecuzione: opzioni, prompt, output atteso, dettagli sulla disinstallazione, ripristino |
docs/EXPLOIT.md | la catena fase per fase, con le costanti specifiche del firmware |
docs/ROOT-METHODS.md | ogni metodo di root/persistenza valutato e quello che ha vinto |
docs/FAILED.md | cosa non ha funzionato e perché — si legge come una lista di vicoli ciechi, fa risparmiare settimane |
docs/BOOT-REGRESSION-SMACK.md | il bug più sottile del progetto: un'etichetta SMACK errata faceva morire l'app prima di Main |
docs/PORTABILITY.md | un'altra TV Tizen 9: i quattro gate, cosa rimisurare, un port passo per passo |
docs/SERVER-HOSTING.md | il server lato PC: come deve essere eseguito, la trappola della morte silenziosa, firewall, log |
docs/SCRIPT-REVIEW.md | audit di prontezza per la produzione degli script |
docs/TESTING.md | i livelli di test, offline e sulla TV, e cosa intercetta ciascuno |
docs/LOGGUIDE.md | ogni beacon ed errore dello strumento decodificato, con i passi successivi |
docs/REFERENCE-MATERIALS.md | dove scaricare firmware / sorgenti GPL / strumenti di simulazione per il proprio modello |
docs/REVIEW-HISTORY.md | riscontri di revisione chiusi e relative evidenze (archivio) |
docs/OPEN-ISSUES.md | stato attuale, lavoro in sospeso e cronologia delle revisioni/passaggi chiusi |
AGENTS.md | passaggio di consegne: strumenti, procedura, verifica, trappole, ripristino |
CHANGELOG.md | cronologia datata di cosa è cambiato e perché |
SECURITY.md | il backdoor non autenticato sulla 31337, ambito, segnalazione, aspetti legali |
NOTICE.md | attribuzione di terze parti; quali file non sono relicenziati |
LICENSE | MIT per il lavoro originale (file di terze parti esclusi) |
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
L'intero toolkit è committato, quindi un clone funziona senza nessun altro working tree.
server/payload.dll è incluso di proposito (byte-identico all'output della build)
così il toolkit funziona senza un .NET SDK. I log di runtime, l'output della build e lo
script di deploy generato per host sono ignorati da git e non vengono mai serviti via HTTP.