Pixel BigWave BIGO timeout race UAF → 2KB kernel write from mediacodec
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
TL;DR
- Iz SELinux-ograničenog mediacodec konteksta,
/dev/bigwave(Pixel AV1 hardware accelerator) je dostupan. Nagomilavanje poslova navodiBIGO_IOCX_PROCESSda udari u svoj 16s wait_for_completion_timeout() i vrati se dok worker thread istovremeno dequeuje istu inlinejobstrukturu. - Zatvaranje FD odmah oslobodi
struct bigo_inst(koji ugrađujestruct bigo_job). Worker rekonstrušeinst = container_of(job, ...)i kasnije koristi oslobođena polja kao što sujob->regsunutarbigo_run_job(), što dovodi do Use-After-Free on the inline job/inst. bigo_pull_regs(core, job->regs)radimemcpy_fromio(regs, core->base, core->regs_size). Reklaimovanjem oslobođenog slaba i prepisivanjemjob->regs, napadač dobija ~2144-byte arbitrary kernel write na izabranu adresu, sa delimičnom kontrolom bajtova pre-programiranjem vrednosti registara pre timeout-a.
Attack surface mapping (SELinux → /dev reachability)
- Koristite alate kao što su DriverCartographer za enumerisanje device node-ova koji su dostupni iz datog SELinux domena. Uprkos ograničenoj politici mediacodec‑a (software decodere treba držati u izolovanom kontekstu),
/dev/bigwaveje ostao dostupan, izlažući veliki attack surface post-media-RCE kodu.
Vulnerability: BIGO_IOCX_PROCESS timeout vs worker
- Tok: ioctl kopira korisnički buffer registara u
job->regs, queuje inlinejob, zatim pozivawait_for_completion_timeout(..., 16s). Na timeout pokuša da dequeue/cancel i vraća se u userspace. - U međuvremenu
bigo_worker_threadje možda upravo dequeovao istijob:
inst = container_of(job, struct bigo_inst, job);
bigo_push_regs(core, job->regs);
...
bigo_pull_regs(core, job->regs); // memcpy_fromio(regs, core->base, core->regs_size)
*(u32 *)(job->regs + BIGO_REG_STAT) = status;
- Ako userspace zatvori FD nakon timeout-a,
inst/jobse oslobode dok worker i dalje koristi te strukture → UAF. Ne postoji sinhronizacija koja vezuje životni vek FD-a za pokazivač job-a u worker niti.
Pregled eksploatacije
- Backlog + timeout: Stavite dovoljno job-ova u red da worker bude usporen, zatim pozovite
BIGO_IOCX_PROCESSi dozvolite da uđe na putanju sa timeout-om od 16s. - Free while in use: Čim ioctl vrati, pozovite
close(fd)da osloboditeinst/jobdok worker još uvek izvršava dequeued job. - Reclaim + pointer control: Spray-ujte reclaimere (npr. Unix domain socket message alokacije) da zauzmete oslobođeni slab slot i prepišete inline
job, posebnojob->regs. - Arbitrary write: Kada se izvrši
bigo_pull_regs(),memcpy_fromio()upisuje core->regs_size (~2144 bytes) iz MMIO u adresu koju je napadač postavio ujob->regs, proizvodeći veliki write-what-where bez KASLR leak-a. - Data shaping: Pošto se registri najpre programiraju iz korisničkih podataka (
bigo_push_regs), podesite ih tako da hardware ne izvršava, čuvajući kopiranu sliku registara blizu bajtova koje kontroliše napadač.
Zaključci za pregledaoce drajvera
- Inline per-FD job strukture koje se stavljaju u red za async workere moraju držati reference koje prežive timeout/cancel puteve; zatvaranje FD-a mora biti sinhronizovano sa potrošnjom od strane workera.
- Bilo koji MMIO copy helper-i (
memcpy_fromio/memcpy_toio) koji koriste pokazivače na bafer iz job-ova treba validirati ili duplicirati pre stavljanja u red kako bi se izbegle UAF→write primitive.
Reference
- Pixel 0-click (Part 2): Escaping the mediacodec sandbox via the BigWave driver
- Project Zero issue 426567975 – BigWave BIGO timeout UAF
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.


