En kritisk fejl i MediaTek-processorer blev upatchet i enheder på grund af OEM-forsømmelse. Google håber, at Android Security Bulletin marts 2020 vil løse dette.
Den første mandag i hver måned udgiver Google Android sikkerhedsbulletin, en side, der afslører alle sikkerhedssårbarheder og deres patches indsendt af Google selv eller andre tredjeparter. I dag var ingen undtagelse: Google offentliggjorde netop Android Security Bulletin for marts 2020. En af de sårbarheder, der er dokumenteret i den seneste bulletin, er CVE-2020-0069, en kritisk sikkerhedsudnyttelse, specifikt en rootkit, der påvirker millioner af enheder med chipsæt fra MediaTek, det store taiwanske chipdesignfirma. Selvom Android Security Bulletin fra marts 2020 tilsyneladende er første gang, at CVE-2020-0069 er blevet offentliggjort, detaljer om udnyttelsen har faktisk stået åbent på internettet - mere specifikt på XDA-Developers fora - siden april af 2019. På trods af at MediaTek gør en patch tilgængelig en måned efter opdagelsen, kan sårbarheden stadig udnyttes på snesevis af enhedsmodeller.
Endnu værre, sårbarheden bliver aktivt udnyttet af hackere. Nu har MediaTek henvendt sig til Google for at lukke dette patchgab og sikre millioner af enheder mod denne kritiske sikkerhedsudnyttelse.For alle læsere, der ikke er bekendt med XDA-udviklere, vi er et websted, der er hjemsted for de største fora for Android-softwareændringer. Normalt er disse ændringer centreret omkring at opnå root-adgang på enheder for at slette bloatware, installere brugerdefineret software eller justere standard systemparametre. Amazons Fire-tablets er populære mål for hobbyhackere på vores fora - de er fulde af afinstallerbare bloatware, mangler adgang til grundlæggende softwareapplikationer som Google Play Butik, og, vigtigst af alt, er meget billig. Udfordringen med at rodfæste Amazon Fire-tablets er, at de er stærkt låst for at forhindre brugere i at træde udenfor Amazons murede have; Amazon tilbyder ikke en officiel metode til at låse op for opstartsindlæseren af Fire-tablets, hvilket normalt er det første trin i at roote enhver given Android-enhed. Derfor er den eneste måde at roote en Amazon Fire-tablet på (uden hardware-modifikationer) at finde en udnyttelse i softwaren, der tillader brugeren at omgå Androids sikkerhedsmodel. I februar 2019, det er præcis, hvad XDA Senior Member diplomatic gjorde da han udgav en tråd på vores Amazon Fire tablet-fora. Han indså hurtigt, at denne udnyttelse var langt bredere i omfang end bare Amazons Fire-tablets.
Efter lidt test fra XDA Member diplomatiske og andre community-medlemmer, blev det bekræftet, at denne udnyttelse virker på et stort antal MediaTek-chips. Forfatteren udtaler, at udnyttelsen virker på "stort set alle MediaTeks 64-bit chips," og de nævner specifikt følgende som værende sårbare: MT6735, MT6737, MT6738, MT6739, MT6750, MT6753, MT6755, MT6757, MT6758, MT6761, MT6762, MT6763, MT6765, MT6771, MT6779, MT6795. 173, MT8176, MT8183, MT6580 og MT6595. På grund af hvor mange MediaTek-chipsæt, der blev påvirket af denne udnyttelse, fik udnyttelsen navnet "MediaTek-su" eller "MTK-su" for kort. Den 17. april 2019 udgav diplomatic en anden tråd med titlen "Fantastisk Temp Root til MediaTek ARMv8" på vores "Diverse Android-udvikling"-forum. I denne tråd delte han et script, som brugere kan udføre for at give dem superbrugeradgang i shell, samt indstille SELinux, Linux-kernemodulet, der giver adgangskontrol til processer, til den meget usikre "permissive" stat. Det er chokerende nemt for en bruger at få root-adgang og indstille SELinux til eftergivende på deres egen enhed: Alt du skal gøre er at kopiere script til en midlertidig mappe, skift mapper til det sted, hvor scriptet er gemt, tilføj eksekverbare tilladelser til scriptet, og kør derefter manuskript.
Medlemmer af XDA-fællesskabet bekræftede, at udnyttelsen virkede på mindst følgende enheder:
- Acer Iconia One 10 B3-A30
- Acer Iconia One 10 B3-A40
- Alba tablet serie
- Alcatel 1 5033-serien
- Alcatel 1C
- Alcatel 3L (2018) 5034-serien
- Alcatel 3T 8
- Alcatel A5 LED 5085-serien
- Alcatel A30 5049-serien
- Alcatel Idol 5
- Alcatel/TCL A1 A501DL
- Alcatel/TCL LX A502DL
- Alcatel Tetra 5041C
- Amazon Fire 7 2019 -- kun op til Fire OS 6.3.1.2 build 0002517050244
- Amazon Fire HD 8 2016 -- kun op til Fire OS 5.3.6.4 build 626533320
- Amazon Fire HD 8 2017 -- kun op til Fire OS 5.6.4.0 build 636558520
- Amazon Fire HD 8 2018 -- kun op til Fire OS 6.3.0.1
- Amazon Fire HD 10 2017 -- kun op til Fire OS 5.6.4.0 build 636558520
- Amazon Fire HD 10 2019 -- kun op til Fire OS 7.3.1.0
- Amazon Fire TV 2 -- kun op til Fire OS 5.2.6.9
- ASUS ZenFone Max Plus X018D
- ASUS ZenPad 3s 10 Z500M
- ASUS ZenPad Z3xxM(F) MT8163-baseret serie
- Barnes & Noble NOOK Tablet 7" BNTV450 & BNTV460
- Barnes & Noble NOOK Tablet 10,1" BNTV650
- Blackview A8 Max
- Blackview BV9600 Pro (Helio P60)
- BLU Levetid Max
- BLU Life One X
- BLU R1 serien
- BLU R2 LTE
- BLU S1
- BLU Tank Xtreme Pro
- BLU Vivo 8L
- BLU Vivo XI
- BLU Vivo XL4
- Bluboo S8
- BQ Aquaris M8
- CAT S41
- Coolpad Cool Play 8 Lite
- Dragon Touch K10
- Ekko-følelse
- Gionee M7
- HiSense Infinity H12 Lite
- Huawei GR3 TAG-L21
- Huawei Y5II
- Huawei Y6II MT6735-serien
- Lava Iris 88S
- Lenovo C2-serien
- Lenovo Tab E8
- Lenovo Tab2 A10-70F
- LG K8+ (2018) X210ULMA (MTK)
- LG K10 (2017)
- LG Tribute Dynasty
- LG X power 2/M320-serien (MTK)
- LG Xpression Plus 2/K40 LMX420-serien
- Lumigon T3
- Meizu M5c
- Meizu M6
- Meizu Pro 7 Plus
- Nokia 1
- Nokia 1 Plus
- Nokia 3
- Nokia 3.1
- Nokia 3.1 Plus
- Nokia 5.1
- Nokia 5.1 Plus/X5
- Onn 7" Android tablet
- Onn 8" & 10" tablet-serien (MT8163)
- OPPO A5s
- OPPO F5 series/A73 – kun Android 8.x
- OPPO F7-serien – kun Android 8.x
- OPPO F9-serien – kun Android 8.x
- Oukitel K12
- Protruly D7
- Realme 1
- Sony Xperia C4
- Sony Xperia C5-serien
- Sony Xperia L1
- Sony Xperia L3
- Sony Xperia XA-serien
- Sony Xperia XA1-serien
- Southern Telecom Smartab ST1009X (MT8167)
- TECNO Spark 3-serien
- Umidigi F1-serien
- Umidigi Power
- Wiko Ride
- Wiko Sunny
- Wiko View3
- Xiaomi Redmi 6/6A-serien
- ZTE Blade A530
- ZTE Blade D6/V6
- ZTE Quest 5 Z3351S
Læs mere
Med undtagelse af MediaTek-baserede telefoner fra Vivo, Huawei/Honor (efter Android 8.0+), OPPO (efter Android 8.0+) og Samsung, XDA-fællesskabsmedlemmer fandt ud af, at MediaTek-su fungerer oftere end ikke, når det forsøges på enheder med berørte chipsæt. Ifølge XDA Member diplomatic, Vivo, Huawei/Honor, OPPO og Samsung-enheder "bruger kernemodifikationer til at afskrække root-adgang via exploits," hvilket betyder, at udvikleren skal grave i kernekildekoden for disse enheder for at skabe "skræddersyede versioner" af udnytte. Det var ikke den ekstra indsats værd, så udvikleren valgte ikke at tilføje support til disse enheder, selvom udnyttelsen "i teorien" stadig kunne fungere.
Efterhånden burde det stå klart, at denne udnyttelse påvirker et stort antal enheder på markedet. MediaTek-chips driver hundredvis af budget- og mellemklasse smartphone-modeller, billige tablets og off-brand set-top-bokse, hvoraf de fleste sælges uden forventning om rettidige opdateringer fra producenten. Mange enheder, der stadig er påvirket af MediaTek-su, vil derfor næppe få en rettelse i uger eller måneder efter dagens offentliggørelse, hvis de overhovedet får en. Så hvad får MediaTek-su til at tjene sin "Kritiske" sværhedsgrad med en CVSS v3.0 score på 9,3?
Hvorfor MTK-su er en kritisk sikkerhedssårbarhed
For at gentage, den typiske måde at opnå root-adgang på en Android-enhed er først at låse bootloaderen op, hvilket deaktiverer verifikation af boot-partitionen. Når bootloaderen er låst op, kan brugeren introducere en superbruger-binær til systemet og også en superbruger-administrationsapp til at kontrollere, hvilke processer der har adgang til root. Oplåsning af bootloaderen er med vilje at deaktivere en af de vigtigste sikkerhedsfunktioner på enheden, hvilket er grunden til, at brugeren skal tillade det udtrykkeligt at ske ved typisk at aktivere en skift i Udviklerindstillinger og derefter udstede en oplåsningskommando til bootloader. Med MediaTek-su behøver brugeren dog ikke at låse bootloaderen op for at få root-adgang. I stedet skal de blot kopiere et script til deres enhed og udføre det i shell. Brugeren er dog ikke den eneste, der kan gøre dette. Enhver app på din telefon kan kopiere MediaTek-su-scriptet til deres private mappe og derefter udføre det for at få root-adgang i shell. Faktisk XDA-medlem diplomatisk fremhæver denne mulighed i deres forumtråd, når de foreslår et alternativt sæt instruktioner ved at bruge enten Terminal Emulator til Android app eller Termux frem for ADB.
Med root-adgang falder Androids sikkerhedsmodel dybest set fra hinanden. For eksempel bliver tilladelser meningsløse i forbindelse med root, da en app med adgang til en root shell kan give sig selv enhver tilladelse, den ønsker. Ydermere, med en rodskal, er hele datapartitionen – inklusive filer gemt i de typisk utilgængelige private datamapper i applikationer – tilgængelig. En app med root kan også stille installere enhver anden app, den ønsker i baggrunden, og derefter give dem de tilladelser, de har brug for for at krænke dit privatliv. Ifølge XDA Recognized Developer topjohnwu, kan en ondsindet app endda "injicere kode direkte i Zygote ved at bruge ptrace", hvilket betyder, at en normal app på din enhed kan blive kapret for at udføre angriberens bud. Disse eksempler berører kun nogle få måder, hvorpå en app kan krænke din tillid i baggrunden uden din viden. Dog kan ondsindede apps skabe kaos på din enhed uden at skjule, hvad de laver. Ransomware er for eksempel ekstremt potent med root-adgang; hvis du ikke betaler, kan en hypotetisk ransomware-app totalt og irreversibelt gør din enhed ubrugelig ved at tørre hele enheden ren.
Den eneste "svaghed" i MediaTek-su er, at den giver en applikation kun "midlertidig" root-adgang, hvilket betyder, at en proces mister superbrugeradgang efter en genstart af enheden. Desuden på enheder, der kører Android 6.0 Marshmallow og nyere, tilstedeværelsen af Verified Boot og dm-verity blokere ændringer til skrivebeskyttede partitioner som system og leverandør. Disse to faktorer er dog for det meste kun hindringer for modders på vores fora frem for ondsindede aktører. For at overvinde begrænsningen af midlertidig rod kan en ondsindet app simpelthen køre MediaTek-su-scriptet igen ved hver opstart. På den anden side er der ikke meget behov for at overvinde dm-verity, da permanente ændringer af systemet eller leverandørpartitioner sandsynligvis ikke vil interessere de fleste malware-forfattere; det er der jo allerede tons ting en ondsindet app kan gøre med en rodskal.
Hvis du spekulerer på på et teknisk niveau, hvad MediaTek-su udnytter, delte MediaTek nedenstående diagram med os, der opsummerer indgangspunktet. Fejlen findes tilsyneladende i en af MediaTeks Linux Kernel-drivere kaldet "CMDQ." Beskrivelsen siger, at "ved at udføre IOCTL kommandoer i [] CMDQ-enhedens node," kan en lokal angriber "vilkårligt læse/skrive fysisk hukommelse, dumpe [kerne] symboltabellen til forudallokeret DMA-buffer, [og] manipuler DMA-bufferen for at ændre kerneindstillingerne for at deaktivere SELinux og eskalere til 'root' privilegium."
Ifølge diagrammet, som MediaTek delte med os, påvirker denne sårbarhed MediaTek-enheder med Linux Kernel-versioner 3.18, 4.4, 4.9 eller 4.14, der kører Android-versioner 7 Nougat, 8 Oreo eller 9 Pie. Sårbarheden kan tilsyneladende ikke udnyttes på MediaTek-enheder, der kører Android 10, da "adgangstilladelsen fra CMDQ enhedsknuder håndhæves også af SELinux." Denne afbødning kommer sandsynligvis fra en opdatering til MediaTeks BSP snarere end fra Android sig selv. Android 10s eneste afbødning af denne sårbarhed er dens begrænsning på apps, der udfører binære filer i deres hjemmemappe; som XDA Recognized Developer topjohnwu bemærker, kan en ondsindet app dog blot køre MediaTek-su-koden i et dynamisk bibliotek.
Selvom MediaTek har rettet dette problem i alle de berørte chipsæt, kan de ikke tvinge enhedsproducenter til at implementere programrettelserne. MediaTek fortalte os, at de havde patches klar helt tilbage i maj 2019. Ikke overraskende fik Amazon straks rettet problemet på tværs af sine enheder, når de blev gjort opmærksomme på det. Der er dog gået 10 måneder, siden MediaTek stillede en rettelse til rådighed for sine partnere, men endnu i marts 2020 har snesevis af OEM'er ikke rettet deres enheder. De fleste af de berørte enheder er på ældre Android-udgivelser med forældede Android Security Patch Levels (SPL'er), og opdateringssituationen er endnu værre, når du tænker på hundredvis af mindre kendte enhedsmodeller, der bruger disse MediaTek-chips. MediaTek har en alvorlig problemet her, så de har henvendt sig til Google for at få hjælp.
I modsætning til MediaTek, Google kan tvinge OEM'er til at opdatere deres enheder igennem licensaftaler eller programvilkår (såsom Android One). For at en OEM kan erklære, at en enhed er i overensstemmelse med 2020-03-05 Security Patch Level (SPL), skal enheden omfatte alle rammer, Linux-kerne og relevante leverandørdriverrettelser i Android Security Bulletin marts 2020, som inkluderer en rettelse til CVE-2020-0069, eller MediaTek-su. (Google ser faktisk ikke ud til at håndhæve det OEM'er slår faktisk alle patches sammen når man erklærer en bestemt SPL.) Nu hvor marts 2020-bulletinen er ude, burde denne historie være slut, ikke? Desværre er vi også nødt til at holde Googles fødder mod ilden for at trække deres fødder med at inkorporere plastrene.
Fejlen i sikkerhedspatch-processen
Hvis det ikke allerede er klart, behøver ikke enhver sikkerhedssårbarhed at ende i en Android Security Bulletin. Mange sårbarheder bliver opdaget og rettet af leverandører, uden at de nogensinde dukker op i den månedlige bulletin. MediaTek-su burde have været en af dem, men af flere årsager undlod flere OEM'er at integrere de patches, som MediaTek tilbyder. (Der er mange potentielle årsager til, lige fra mangel på ressourcer til forretningsbeslutninger til en fejl i kommunikationen.) Da jeg tidligere udtalte, at MediaTek "vendte sig til Google" for at få hjælp, det antydede, at MediaTek aktivt søgte hjælp fra Google for at få OEM'er til endelig at rette deres enheder. Men det var måske ikke rigtigt tilfældet. Det er min forståelse, at Google var uvidende om MediaTek-su, indtil det i øvrigt blev bragt i en sikkerhedsrapport fra TrendMicro offentliggjort 6. januar 2020. I rapporten, TrendMicro dokumenterede en anden sikkerhedssårbarhed, kaldet "brug-efter-fri i binderdriver"sårbarhed, der aktivt blev udnyttet i naturen. TrendMicro bemærkede, hvordan tre ondsindede apps opnåede root-adgang ved hjælp af en af to metoder, enten "brug-efter-fri i binder-driver"-sårbarheden eller MediaTek-su.
I koden, der TrendMicro delt, kan vi tydeligt se, hvordan de ondsindede apps var målrettet mod specifikke enhedsmodeller (f.eks. Nokia 3, OPPO F9 og Redmi 6A) og bruger MediaTek-su på dem.
Jeg kan ikke tale for TrendMicro, men det ser ud til, at de ikke var klar over, at MediaTek-su var en endnu ikke-patchet udnyttelse. Deres fokus var trods alt på udnyttelsen af "brug-efter-fri i binder-driver", og opdagelsen af brugen af MediaTek-su ser ud til at have været en eftertanke. (Jeg er sikker på, at hvis TrendMicro var opmærksomme på situationen omkring MediaTek-su, ville de have koordineret deres afsløringsindsats med Google.) Vi blev kun gjort opmærksomme på denne udnyttelse selv den 5. februar 2020, og efter selv at have undersøgt, hvor slemt det var, kontaktede vi Google om det den 7. februar, 2020. Google var så bekymret over konsekvenserne af at offentliggøre MediaTek-su, at de bad os om at vente med at udgive denne historie indtil i dag. Efter at have overvejet den uoprettelige skade, der kan påføres brugere, der er målrettet af malware ved hjælp af MediaTek-su, vi blev enige om at sætte et hold på denne historie indtil meddelelsen af marts 2020 Android Sikkerhedsbulletin. Alligevel i betragtning af, hvor lang tid det vil tage mange enheder at få den seneste sikkerhedsopdatering, hvis de nogensinde få det overhovedet, er der helt sikkert et væld af enheder, der stadig er sårbare over for MediaTek-su et par måneder fra nu. Det burde være rædselsfuldt for alle med en sårbar enhed.
Selvom denne meget alvorlige, "kritiske" alvorlighedssårbarhed aktivt bliver udnyttet i naturen, er det kun Google indsat rettelsen til dette problem i marts 2020 bulletinen, hvilket er omkring 2 måneder efter, at de blev gjort opmærksomme på problem. Mens Google informerer sine Android-partnere om den seneste Android Security Bulletin hele 30 dage før bulletinen offentliggøres (dvs. OEM'er blev gjort opmærksomme på, hvad der står i bulletinen fra marts 2020 i begyndelsen af februar 2020), kan Google, og gør det ofte, opdatere bulletinen med ændringer eller nye rettelser. Hvorfor Google ikke valgte at fremskynde medtagelsen af en patch til et så alvorligt problem er uden for mig, især da MediaTek havde en rettelse til det for 10 måneder siden. Hvis en sådan fejl blev opdaget i Apples enheder, er jeg ikke i tvivl om, at de ville have udstedt en rettelse meget, meget hurtigere. Google satsede i det væsentlige på det risikable væddemål om, at MediaTek-su ville forblive lige så lavprofileret, som det allerede var indtil marts 2020 bulletinen. Selvom Google ser ud til at have været heldig i den forbindelse, har vi ingen idé om, hvor mange malware-forfattere allerede kender til udnyttelsen. Det har jo stået i en tilfældig XDA-forumtråd for næsten et helt år.
Der er endnu en part i denne debacle, som jeg ikke har talt meget om, og det er ophavsmanden til udnyttelsen, XDA Member diplomatic. Til hans kredit tror jeg ikke, at han havde nogen ondsindet hensigt med at udgive MediaTek-su. Vi kan tydeligt spore udnyttelsens oprindelse til diplomatikkens ønske om at modificere Amazon Fire-tabletterne. Diplomatic fortæller mig, at hans primære mål med at udvikle denne rodmetode var at hjælpe samfundet. Tilpasning af din enhed er, hvad XDA handler om, og diplomatisk indsats i fællesskabet er, hvad folk nyder ved foraene. Selvom diplomatikkens afvisning af at åbne kilde-projektet vækker nogle bekymringer, forklarer han, at han ønskede, at samfundet skulle nyde dette med root-adgang så længe som muligt. Da jeg første gang kontaktede diplomat, oplyste han også, at han var i et samarbejde med nogle partnere, der forhindrede ham i at dele projektets kildekode og forskning. Selvom jeg ikke var i stand til at få flere detaljer om dette samarbejde, spekulerer jeg på, om diplomatisk ville have valgt at offentliggøre denne udnyttelse, hvis MediaTek tilbød et bug bounty-program. Jeg kan ikke forestille mig, at en sårbarhed af denne størrelsesorden ikke ville betale en stor sum penge, hvis MediaTek rent faktisk havde et sådant program. Diplomatic hævder, at denne udnyttelse har været mulig siden det sene MediaTek MT6580-chipsæt i 2015, så man må spekulere på, om diplomatic overhovedet er den første person, der finder denne udnyttelse. Han fortæller mig, at han ikke anede, at MediaTek-su blev aktivt udnyttet, indtil denne artikel blev offentliggjort.
Hvis du vil kontrollere, om din enhed er sårbar over for MediaTek-su, så kør manuelt scriptet udsendt af XDA Member diplomatic i denne XDA-forumtråd. Hvis du indtaster en rodskal (du ved, når symbolet ændres fra $ til #), så ved du, at udnyttelsen virker. Hvis det virker, skal du vente på, at producenten af din enhed udruller en opdatering, der patcher MediaTek-su. Hvis din enhed rapporterer sikkerhedspatch-niveauet for 2020-03-05, som er den seneste marts 2020 SPL, så er den næsten helt sikkert beskyttet mod MediaTek-su. Ellers skal du bare tjekke, om din enhed er sårbar.
Opdatering 1 (2/3/2020 kl. 21:45 EST): Denne artikel blev opdateret for at præcisere, at XDA Member diplomatic faktisk var klar over omfanget af denne sårbarhed, så snart han opdagede det tilbage i februar 2019, men at han var uvidende om udnyttelsens in-the-wild brug indtil offentliggørelsen af denne artikel. Vi korrigerede også vores ordlyd vedrørende en grund til, at diplomatisk afviste at dele projektets kildekode.