Kritični MediaTek rootkit utječe na milijune Android uređaja

Kritična greška u MediaTek procesorima ostala je nezakrpana u uređajima zbog zanemarivanja OEM-a. Google se nada da će Android Security Bulletin iz ožujka 2020. to popraviti.

Svakog prvog ponedjeljka u mjesecu Google objavljuje Androidov sigurnosni bilten, stranica koja otkriva sve sigurnosne propuste i njihove zakrpe koje je poslao sam Google ili druge treće strane. Današnji dan nije bio iznimka: Google je upravo objavio Android Security Bulletin za ožujak 2020. Jedna od ranjivosti koja je dokumentirana u najnovijem biltenu je CVE-2020-0069, kritična sigurnosna eksploatacija, posebno rootkit, koji utječe na milijune uređaja s čipsetima MediaTeka, velike tajvanske tvrtke za dizajn čipova. Iako je Android Security Bulletin iz ožujka 2020. naizgled prvi put da je CVE-2020-0069 javno objavljen, pojedinosti eksploatacije zapravo su otvoreno na Internetu—točnije, na forumima XDA-Developers—od travnja iz 2019. Unatoč tome što je MediaTek zakrpu stavio na raspolaganje mjesec dana nakon otkrića, ranjivost se još uvijek može iskoristiti na desecima modela uređaja.

Još gore, ranjivost aktivno iskorištavaju hakeri. Sada se MediaTek obratio Googleu da zatvori ovu prazninu u zakrpi i zaštiti milijune uređaja od ovog kritičnog sigurnosnog iskorištavanja.

Za sve čitatelje koji nisu upoznati XDA programeri, mi smo mjesto koje je dom najvećih foruma za modifikacije softvera za Android. Obično se te izmjene usredotočuju na dobivanje root pristupa na uređajima kako bi se izbrisao bloatware, instalirao prilagođeni softver ili podesili zadani parametri sustava. Amazonovi Fire tableti popularne su mete za hakere hobiste na našim forumima—puni su neinstaliranih bloatware, nemaju pristup osnovnim softverskim aplikacijama poput trgovine Google Play i, što je najvažnije, vrlo su jeftino. Izazov s rootanjem Amazon Fire tableta je taj što su strogo zaključani kako bi se spriječilo da korisnici izađu izvan Amazonovog ograđenog vrta; Amazon ne nudi službenu metodu za otključavanje bootloadera Fire tableta, što je obično prvi korak u rootanju bilo kojeg Android uređaja. Stoga je jedini način za rootanje Amazon Fire tableta (bez modifikacija hardvera) pronaći exploit u softveru koji korisniku omogućuje zaobilaženje sigurnosnog modela Androida. U veljači 2019., tj upravo ono što je diplomatski stariji član XDA učinio kada je objavio temu na našim forumima za tablete Amazon Fire. Brzo je shvatio da je ovo podvig daleko širi od Amazonovih Fire tableta.

Nakon malog testiranja diplomatskih članova XDA članova i drugih članova zajednice, potvrđeno je da ovaj exploit radi na velikom broju MediaTek čipova. Autor navodi da eksploatacija radi na "gotovo svim MediaTekovim 64-bitnim čipovima", a posebno navodi sljedeće kao ranjive: MT6735, MT6737, MT6738, MT6739, MT6750, MT6753, MT6755, MT6757, MT6758, MT6761, MT6762, MT6763, MT6765, MT6771, MT6779, MT6795, MT6797, MT6799, MT8163, MT8167, MT8 173, MT8176, MT8183, MT6580 i MT6595. Zbog toga koliko je MediaTek čipseta pogođeno ovim exploitom, exploit je dobio naziv "MediaTek-su" ili skraćeno "MTK-su". Diplomatic je 17. travnja 2019. objavio drugu temu pod naslovom "Nevjerojatan Temp Root za MediaTek ARMv8" na našem forumu "Razni Android razvoj". U ovoj je temi podijelio skriptu koju korisnici mogu izvršiti kako bi im se odobrio superkorisnički pristup u ljusci, kao i postaviti SELinux, Linux kernel modul koji omogućuje kontrolu pristupa za procese, vrlo nesigurnim "permisivnim" država. Za korisnika je šokantno lako dobiti root pristup i postaviti SELinux na permisivan na vlastitom uređaju: Sve što trebate učiniti je kopirati skriptu u privremenu mapu, promijenite direktorije gdje je skripta pohranjena, dodajte izvršne dozvole skripti, a zatim izvršite skripta.

Jednostavni koraci za dobivanje root pristupa pomoću MediaTek-su. Izvor: XDA Senior Member Diplomatic

Članovi XDA zajednice potvrdili su da exploit radi na barem sljedećim uređajima:

  1. Acer Iconia One 10 B3-A30
  2. Acer Iconia One 10 B3-A40
  3. Alba serija tableta
  4. Serija Alcatel 1 5033
  5. Alcatel 1C
  6. Alcatel 3L (2018) 5034 serija
  7. Alcatel 3T 8
  8. Alcatel A5 LED 5085 serija
  9. Serija Alcatel A30 5049
  10. Alcatel Idol 5
  11. Alcatel/TCL A1 A501DL
  12. Alcatel/TCL LX A502DL
  13. Alcatel Tetra 5041C
  14. Amazon Fire 7 2019 -- samo do Fire OS 6.3.1.2 build 0002517050244
  15. Amazon Fire HD 8 2016 -- samo do Fire OS 5.3.6.4 build 626533320
  16. Amazon Fire HD 8 2017 -- samo do Fire OS 5.6.4.0 build 636558520
  17. Amazon Fire HD 8 2018 -- samo do Fire OS 6.3.0.1
  18. Amazon Fire HD 10 2017 -- samo do Fire OS 5.6.4.0 build 636558520
  19. Amazon Fire HD 10 2019 -- samo do Fire OS 7.3.1.0
  20. Amazon Fire TV 2 -- samo do Fire OS 5.2.6.9
  21. ASUS ZenFone Max Plus X018D
  22. ASUS ZenPad 3s 10 Z500M
  23. Serija temeljena na ASUS ZenPad Z3xxM(F) MT8163
  24. Barnes & Noble NOOK Tablet 7" BNTV450 & BNTV460
  25. Barnes & Noble NOOK tablet 10,1" BNTV650
  26. Blackview A8 Max
  27. Blackview BV9600 Pro (Helio P60)
  28. BLU Life Max
  29. BLU Life One X
  30. BLU R1 serija
  31. BLU R2 LTE
  32. BLU S1
  33. BLU Tank Xtreme Pro
  34. BLU Vivo 8L
  35. BLU Vivo XI
  36. BLU Vivo XL4
  37. Bluboo S8
  38. BQ Aquaris M8
  39. CAT S41
  40. Coolpad Cool Play 8 Lite
  41. Dragon Touch K10
  42. Osjećaj odjeka
  43. Gionee M7
  44. HiSense Infinity H12 Lite
  45. Huawei GR3 TAG-L21
  46. Huawei Y5II
  47. Huawei Y6II MT6735 serija
  48. Lava Iris 88S
  49. Lenovo C2 serija
  50. Tablica Lenovo E8
  51. Lenovo Tab2 A10-70F
  52. LG K8+ (2018) X210ULMA (MTK)
  53. LG K10 (2017)
  54. LG Tribute Dynasty
  55. Serija LG X power 2/M320 (MTK)
  56. Serija LG Xpression Plus 2/K40 LMX420
  57. Lumigon T3
  58. Meizu M5c
  59. Meizu M6
  60. Meizu Pro 7 Plus
  61. Nokia 1
  62. Nokia 1 Plus
  63. Nokia 3
  64. Nokia 3.1
  65. Nokia 3.1 Plus
  66. Nokia 5.1
  67. Nokia 5.1 Plus/X5
  68. Na 7" Android tabletu
  69. Onn serija tableta od 8" i 10" (MT8163)
  70. OPPO A5s
  71. OPPO F5 serija/A73 -- samo Android 8.x
  72. Serija OPPO F7 -- samo Android 8.x
  73. Serija OPPO F9 -- samo Android 8.x
  74. Oukitel K12
  75. Protruly D7
  76. Realme 1
  77. Sony Xperia C4
  78. Sony Xperia C5 serija
  79. Sony Xperia L1
  80. Sony Xperia L3
  81. Sony Xperia XA serija
  82. Sony Xperia XA1 serija
  83. Southern Telecom Smartab ST1009X (MT8167)
  84. TECNO Spark 3 serija
  85. Serija Umidigi F1
  86. Snaga Umidigi
  87. Wiko Ride
  88. Wiko Sunny
  89. Wiko View3
  90. Xiaomi Redmi 6/6A serija
  91. ZTE Blade A530
  92. ZTE Blade D6/V6
  93. ZTE Quest 5 Z3351S

Čitaj više

Uz iznimku telefona baziranih na MediaTek-u iz Viva, Huawei/Honor (nakon Androida 8.0+), OPPO (nakon Androida 8.0+) i Samsung, članovi zajednice XDA otkrili su da MediaTek-su radi češće nego ne kada se pokuša na uređajima s pogođenim skupovi čipova. Prema diplomatskom članu XDA, uređaji Vivo, Huawei/Honor, OPPO i Samsung "koriste modifikacije kernela za sprječavanje root pristupa putem eksploatacije", što znači da bi razvojni programer trebao kopati po izvornom kodu kernela ovih uređaja kako bi stvorio "prilagođene verzije" iskorištavati. To nije bilo vrijedno dodatnog truda, pa je razvojni programer odlučio ne dodati podršku za ove uređaje iako bi, "teoretski", eksploatacija i dalje mogla funkcionirati.

Do sada bi trebalo biti jasno da ovaj exploit utječe na velik broj uređaja na tržištu. MediaTek čipovi pokreću stotine jeftinih i srednjih modela pametnih telefona, jeftinih tableta i drugih marki set-top box uređaji, od kojih se većina prodaje bez očekivanja pravovremenih ažuriranja od strane proizvođača. Mnogi uređaji na koje još uvijek utječe MediaTek-su vjerojatno neće dobiti popravak tjednima ili mjesecima nakon današnje objave, ako ga uopće dobiju. Dakle, zbog čega MediaTek-su zarađuje svoju "kritičnu" ozbiljnost s CVSS v3.0 ocjena 9,3?

Zašto je MTK-su kritična sigurnosna ranjivost

Da ponovimo, tipičan način za postizanje root pristupa na Android uređaju je prvo otključavanje bootloadera, što onemogućuje provjeru boot particije. Nakon što je bootloader otključan, korisnik može u sustav uvesti binarnu datoteku superkorisnika, a također i aplikaciju za upravljanje superkorisnikom za kontrolu koji procesi imaju pristup rootu. Otključavanje bootloadera namjerno onemogućuje jednu od ključnih sigurnosnih značajki na uređaju, zbog čega korisnik mora eksplicitno dopustite da se to dogodi tako što ćete obično omogućiti prekidač u opcijama za razvojne programere i zatim izdati naredbu za otključavanje bootloader. S MediaTek-su, međutim, korisnik ne mora otključati bootloader da bi dobio root pristup. Umjesto toga, sve što trebaju učiniti je kopirati skriptu na svoj uređaj i izvršiti je u ljusci. No korisnik nije jedini koji to može učiniti. Bilo koja aplikacija na vašem telefonu može kopirati MediaTek-su skriptu u svoj privatni imenik i zatim je izvršiti da dobije root pristup u ljusci. Zapravo, član XDA diplomatski ističe ovu mogućnost u njihovoj niti na forumu kada predlože alternativni skup uputa koristeći bilo Emulator terminala za Android aplikaciju ili Termux nego ADB.

S root pristupom, Androidov sigurnosni model zapravo se raspada. Na primjer, dopuštenja postaju besmislena u kontekstu roota jer aplikacija s pristupom root ljusci može sama sebi dodijeliti bilo koje dopuštenje koje želi. Nadalje, s korijenskom ljuskom dostupna je cijela particija podataka—uključujući datoteke pohranjene u tipično nedostupnim privatnim podatkovnim direktorijima aplikacija. Aplikacija s root-om također može tiho instalirati bilo koju drugu aplikaciju koju želi u pozadini i zatim im dodijeliti sva dopuštenja koja su im potrebna za kršenje vaše privatnosti. Prema XDA Recognized Developer topjohnwu, zlonamjerna aplikacija može čak "ubaciti kod izravno u Zygote korištenjem ptracea", što znači da bi normalna aplikacija na vašem uređaju mogla biti oteta kako bi izvršila naloge napadača. Ovi primjeri dotiču se samo nekoliko načina na koje aplikacija može narušiti vaše povjerenje u pozadini bez vašeg znanja. Međutim, zlonamjerne aplikacije mogu izazvati haos na vašem uređaju bez skrivanja onoga što rade. Ransomware, na primjer, jest krajnje moćan s root pristupom; ako ne platite, hipotetska ransomware aplikacija bi mogla potpuno i nepovratno onesposobite svoj uređaj brisanjem cijelog uređaja.

Jedina "slabost" u MediaTek-su je ta što aplikaciji daje samo "privremeni" root pristup, što znači da proces gubi superkorisnički pristup nakon ponovnog pokretanja uređaja. Nadalje, na uređajima sa sustavom Android 6.0 Marshmallow i novijim, prisutnost Verified Boot i dm-verity blokirati izmjene particija samo za čitanje poput sustava i dobavljača. Međutim, ova dva čimbenika uglavnom su samo smetnja modderima na našim forumima, a ne zlonamjernim akterima. Kako bi se prevladalo ograničenje privremenog roota, zlonamjerna aplikacija može jednostavno ponovno pokrenuti MediaTek-su skriptu pri svakom pokretanju sustava. S druge strane, nema potrebe za prevladavanjem dm-verityja jer trajne izmjene sustava ili particija dobavljača vjerojatno neće zanimati većinu autora zlonamjernog softvera; uostalom, već postoje tona stvari koje zlonamjerna aplikacija može učiniti s korijenskom ljuskom.

Ako se pitate na tehničkoj razini što MediaTek-su iskorištava, MediaTek je s nama podijelio donju tablicu koja sažima početnu točku. Nedostatak očito postoji u jednom od MediaTekovih upravljačkih programa Linux kernela pod nazivom "CMDQ". Opis navodi da, "izvršavanjem IOCTL naredbe u [čvoru] CMDQ uređaja," lokalni napadač može "proizvoljno čitati/pisati fizičku memoriju, izbaciti [] tablicu simbola jezgre u unaprijed dodijeljeni DMA međuspremnik, [i] manipulirati DMA međuspremnikom za izmjenu postavki jezgre radi onemogućavanja SELinuxa i eskalacije na 'root' privilegija."

MediaTekov sažetak sigurnosnih ranjivosti CVE-2020-0069

Prema grafikonu koji je MediaTek podijelio s nama, ova ranjivost utječe na MediaTek uređaje s verzijama Linux kernela 3.18, 4.4, 4.9 ili 4.14 koji koriste Android verzije 7 Nougat, 8 Oreo ili 9 Pie. Ranjivost se ne može iskoristiti na uređajima MediaTek s Androidom 10, očito, budući da je "pristupna dozvola CMDQ-a čvorove uređaja također provodi SELinux." Ovo ublažavanje vjerojatno dolazi od ažuriranja MediaTekovog BSP-a, a ne od Androida sebe. Jedino ublažavanje ove ranjivosti Androida 10 jest ograničenje aplikacija koje izvršavaju binarne datoteke u svom matičnom direktoriju; međutim, kao što primjećuje XDA Recognized Developer topjohnwu, zlonamjerna aplikacija može jednostavno pokrenuti MediaTek-su kod u dinamičkoj knjižnici.

Iako je MediaTek zakrpao ovaj problem na svim zahvaćenim čipsetima, ne mogu prisiliti proizvođače uređaja da implementiraju zakrpe. MediaTek nam je rekao da imaju spremne zakrpe još u svibnju 2019. Amazon je, nimalo iznenađujuće, odmah zakrpao problem na svim svojim uređajima nakon što su saznali. Međutim, prošlo je 10 mjeseci otkako je MediaTek svojim partnerima stavio na raspolaganje popravak, koji još uvijek nije dostupan ožujka 2020. deseci OEM-a nisu popravili svoje uređaje. Većina zahvaćenih uređaja je na starijim izdanjima Androida sa zastarjelim razinama sigurnosnih zakrpa za Android (SPL), a situacija s ažuriranjem još je gora ako uzmete u obzir stotine manje poznatih modela uređaja koji koriste ove MediaTek čipove. MediaTek ima ozbiljan problem ovdje, pa su se obratili Googleu za pomoć.

Za razliku od MediaTeka, Google limenka prisiliti OEM-e da ažuriraju svoje uređaje putem licencni ugovori ili uvjete programa (kao što je Android One). Da bi OEM mogao izjaviti da je uređaj u skladu s razinom sigurnosne zakrpe (SPL) 2020-03-05, uređaj mora sadržavati sve okvire, Linux kernel i primjenjivi popravci upravljačkog programa dobavljača u Android sigurnosnom biltenu iz ožujka 2020., koji uključuje popravak za CVE-2020-0069, ili MediaTek-su. (Čini se da Google to zapravo ne provodi OEM-i zapravo spajaju sve zakrpe međutim, prilikom deklariranja određenog SPL-a.) Sada kada je bilten za ožujak 2020. izašao, ova priča bi trebala biti gotova, zar ne? Nažalost, moramo također držati Google za noge zbog odugovlačenja s ugradnjom zakrpa.

Greška u procesu sigurnosne zakrpe

Ako već nije jasno, ne mora svaka sigurnosna ranjivost završiti u sigurnosnom biltenu Androida. Mnoge ranjivosti otkriju i zakrpaju dobavljači, a da se one uopće ne pojave u mjesečnom biltenu. MediaTek-su je trebao biti jedan od njih, ali iz više razloga, nekoliko OEM-ova nije uspjelo integrirati zakrpe koje nudi MediaTek. (Postoji mnogo potencijalnih razloga zašto, u rasponu od nedostatka resursa do poslovnih odluka do neuspjeha u komunikaciji.) Kad sam prije izjavio da se MediaTek "obratio Googleu" za pomoć, to je impliciralo da je MediaTek aktivno tražio pomoć od Googlea kako bi proizvođače originalne opreme konačno popravio uređaja. Međutim, to zapravo nije bio slučaj. Koliko ja razumijem, Google nije znao za MediaTek-su sve dok nije slučajno spomenut u sigurnosnom izvješću od TrendMicro objavljeno 6. siječnja 2020. U izvješću, TrendMicro je dokumentirao još sigurnosna ranjivost, nazvana "use-after-free in binder driver" ranjivost, koja se aktivno iskorištavala u divljini. TrendMicro primijetio je kako su tri zlonamjerne aplikacije postigle root pristup koristeći jednu od dvije metode, ili ranjivost "use-after-free in binder driver" ili MediaTek-su.

Navodne aplikacije Trgovine Play zlorabe MediaTek-su. Izvor: TrendMicro.

U kodu koji TrendMicro dijelimo, možemo jasno vidjeti kako su zlonamjerne aplikacije ciljale određene modele uređaja (npr. Nokia 3, OPPO F9 i Redmi 6A) i koristeći MediaTek-su na njima.

Ne mogu govoriti umjesto TrendMicro, no čini se da nisu bili svjesni da je MediaTek-su još nezakrpan exploit. Na kraju krajeva, njihov fokus je bio na iskorištavanju "use-after-free in binder driver", a čini se da je otkriće korištenja MediaTek-sua bila naknadna misao. (Siguran sam da ako TrendMicro bili svjesni situacije oko MediaTek-sua, koordinirali bi svoje napore u otkrivanju podataka s Googleom.) Upoznati smo samo s ovaj smo iskorištavali sami 5. veljače 2020., a nakon što smo sami istražili koliko je loše, kontaktirali smo Google o tome 7. veljače, 2020. Google je bio toliko zabrinut zbog posljedica objavljivanja MediaTek-sua da su nas zamolili da odgodimo objavljivanje ove priče do danas. Nakon razmatranja nepopravljive štete koja se može nanijeti korisnicima na meti zlonamjernog softvera MediaTek-su, složili smo se zaustaviti ovu priču do najave Androida u ožujku 2020. Sigurnosni bilten. Ipak, s obzirom na to koliko će vremena trebati mnogim uređajima da dobiju najnoviju sigurnosnu nadogradnju, ako ikada shvatite li to uopće, sigurno će postojati tona uređaja koji su još uvijek osjetljivi na MediaTek-su nekoliko mjeseci od sada. To bi trebalo biti užasno svakome tko ima ranjivi uređaj.

Iako se ova vrlo ozbiljna, "kritična" ranjivost ozbiljnosti aktivno iskorištava u prirodi, Google samo ubacili su popravak za ovaj problem u bilten za ožujak 2020., što je otprilike 2 mjeseca nakon što su saznali za problem. Dok Google obavještava svoje Android partnere o najnovijem Android sigurnosnom biltenu punih 30 dana prije nego što bilten postane javan (tj. OEM-ovi su početkom veljače 2020. obaviješteni o tome što se nalazi u biltenu za ožujak 2020.), Google može, i često to i čini, ažurirati bilten izmjenama ili novim popravcima. Ne znam zašto Google nije odlučio ubrzati uključivanje zakrpe za tako ozbiljan problem, pogotovo kada je MediaTek imao popravak za to prije 10 mjeseci. Da je takva greška otkrivena u Appleovim uređajima, nema sumnje da bi izdali popravak puno, puno brže. Google se u biti stavio na riskantnu okladu da će MediaTek-su ostati naizgled niskoprofilan kao što je već bio do biltena u ožujku 2020. Iako se čini da je Google imao sreće u tom pogledu, nemamo pojma koliko autora zlonamjernog softvera već zna za iskorištavanje. Uostalom, sjedio je u nasumično odabranoj XDA forumskoj niti već skoro cijelu godinu.

Postoji još jedna strana u ovom debaklu kojoj se nisam previše bavio, a to je autor eksploatacije, diplomatski član XDA. Svaka mu čast, mislim da nije imao nikakvu zlu namjeru pri objavljivanju MediaTek-sua. Jasno možemo pratiti podrijetlo eksploatacije do diplomatske želje da se modificiraju tableti Amazon Fire. Diplomatic mi kaže da je njegov primarni cilj u razvoju ove korijenske metode bio pomoći zajednici. Prilagodba vašeg uređaja ono je što XDA radi, a diplomatski napori u zajednici ono su u čemu ljudi uživaju na forumima. Iako Diplomaticovo odbijanje otvaranja izvornog koda za projekt izaziva zabrinutost, on objašnjava da je želio da zajednica uživa u ovom root pristupu što je dulje moguće. Kad sam prvi put kontaktirao diplomatiju, također je izjavio da je u suradnji s nekim partnerima koji su ga spriječili u dijeljenju izvornog koda projekta i istraživanja. Iako nisam uspio dobiti više detalja o ovoj suradnji, pitam se bi li diplomata odlučila izaći u javnost s ovom eksploatacijom da je MediaTek ponudio program nagrade za bugove. Ne mogu zamisliti da ranjivost ove veličine ne bi isplatila pozamašnu svotu novca da MediaTek doista ima takav program. Diplomatic tvrdi da je ovaj exploit moguć od MediaTek MT6580 čipseta krajem 2015., pa se treba zapitati je li Diplomatic uopće prva osoba koja je pronašla ovaj exploit. Kaže mi da nije imao pojma da se MediaTek-su aktivno iskorištava do objave ovog članka.

Ako želite provjeriti je li vaš uređaj ranjiv na MediaTek-su, tada ručno pokrenite skriptu koju je objavio XDA Member diplomatic u ovoj temi XDA foruma. Ako uđete u root shell (znat ćete kada se simbol promijeni iz $ u #), tada ćete znati da iskorištavanje radi. Ako radi, morat ćete pričekati da proizvođač vašeg uređaja objavi ažuriranje koje zakrpa MediaTek-su. Ako vaš uređaj prijavi razinu sigurnosne zakrpe 2020-03-05, što je najnoviji SPL iz ožujka 2020., tada je gotovo sigurno zaštićen od MediaTek-su. U suprotnom ćete morati samo provjeriti je li vaš uređaj ranjiv.


Ažuriranje 1 (2.3.2020. u 21:45 EST): Ovaj je članak ažuriran kako bi se razjasnilo da je diplomatski član XDA zapravo bio svjestan opsega ove ranjivosti čim je otkrio ga je još u veljači 2019., ali da nije bio svjestan korištenja eksploatacije u divljini do objave ovog članak. Također smo ispravili naš tekst u vezi s jednim razlogom zašto su diplomati odbili podijeliti izvorni kod projekta.