StrandHogg 2.0 yra pavojingas naujas Android pažeidžiamumas. Štai kaip tai gali paveikti vartotojus ir kaip kūrėjai gali nuo to apsaugoti savo programas.
Jau 22:00. Ar žinote, kur yra jūsų veikla? Yra naujas pažeidžiamumas, kurį galima išnaudoti milijonuose „Android“ įrenginių, ir jis taip pat yra gana bjaurus. Trumpai tariant, šis dizaino trūkumas leidžia užpuolikui pateikti savo veiklą (puslapį) kitos programos viršuje, o tai gali suklaidinti vartotoją ir perduoti savo asmeninius duomenis. Pažeidžiamumas buvo pavadintas StrandHogg 2.0 ir neseniai jį atskleidė Promon, Norvegijos apsaugos įmonė.
StrandHogg 2.0 pažeidžiamumas teoriškai veikia visus Android įrenginius, kuriuose veikia senos Android versijos kaip Honeycomb (3.0) ir Android 9 Pie (9.0). Remiantis naujausios Android versijos platinimo statistika, tai reiškia, kad maždaug 91,8 % visų Android įrenginių yra pažeidžiami StrandHogg 2.0. Pažeidžiamumas buvo priskirtas CVE-2020-0096 ir jam buvo suteiktas a sunkumo laipsnis "kritinis".
Jai dirbti nereikia jokių specialių leidimų ir jis gali veikti beveik visiškai be vartotojo sąveikos. Viskas, ką vartotojas turi padaryti, tai atidaryti programą su paslėptu kenkėjišku kodu, tada jis gali būti išnaudojamas.„Promon“ maloniai atsiuntė mums savo koncepcijos įrodymo programą ir jos šaltinio kodą, kad galėtume kuo geriau paaiškinkite, kaip veikia išnaudojimas, kodėl tai svarbu vartotojams ir kaip kūrėjai gali apsaugoti savo programas prieš tai.
Kaip tai veikia
Tarkime, kad naudojate „Gmail“ ir spustelite žiniatinklio nuorodą. Jei eisite į naujausių programų ekraną, galite pastebėti, kad tinklalapis atrodo „Gmail“ viduje. Peržiūroje rodoma svetainė, bet programos piktograma ir pavadinimas vis tiek yra iš „Gmail“. Tai atsitinka, kai programa / veikla paleidžia kitą programą / veiklą atliekant tą pačią užduotį. Dabar įsivaizduokite, kad tos nuorodos neatidarėte sąmoningai. Jums atrodo, kad tai tik „Gmail“ programos dalis. Tai yra elgesys, kurį išnaudoja StrandHogg 2.0.
Čia turėsime praleisti kai kurias detales, bet štai kaip veikia šis išnaudojimas. Tarkime, kad užpuolikas nori gauti vartotojo „Gmail“ prisijungimo duomenis.
- Vartotojas atsisiunčia kenkėjišką programėlę (žinoma, nežinodamas, kad ji kenkėjiška) ir ją atidaro.
- Fone programa atidaro „Gmail“, įdeda panašią prisijungimo veiklą ir paleidžia kitą veiklą.
- Naudotojas atidaro „Gmail“ ir mato, kaip atrodo „Gmail“ prisijungimo ekranas, bet iš tikrųjų tai yra užpuoliko sukčiavimo veikla.
Paskutinė veikla, pradėta 2 veiksme, gali būti bet kokia, kuri išvengia įtarimų. Programa gali suklastoti strigtį ir grįžti į pagrindinį ekraną arba tiesiog atidaryti pagrindinę veiklą, tarsi nieko neįvyktų. Vienintelis įtartinas dalykas, kurį vartotojas gali pamatyti, yra daugybė atidarymo animacijų, kai paleidžiama visa veikla. Blogiausia dalis: net neatrodys, kad „Gmail“ buvo atidarytas.
Žinoma, užpuolikas gali ne tik parodyti netikrą prisijungimo ekraną. Kenkėjiška programa vietoj to gali pateikti leidimų raginimą, priversdama vartotoją suteikti nepageidaujamus leidimus. Nors paprašius specialių leidimų, pvz., pritaikymo neįgaliesiems, vartotojas gali sukelti įtarimų, naudojant kažką, pavyzdžiui, saugyklos prieigą, galima padaryti daug žalos.
Techniniai bitai
Šis kitas skyrius yra aukšto lygio StrandHogg 2.0 veikimo apžvalga. „Promon“ neišleis visos informacijos dar kelis mėnesius, todėl negalime tiksliai pasakyti, kaip šis išnaudojimas įgyvendinamas. Tačiau yra keletas techninių detalių, apie kurias galime kalbėti.
Trumpai tariant, „StrandHogg 2.0“ užgrobia „Android“. Context.startActivities()
API metodas, naudojant tris ketinimus.
- Pirmasis tikslas yra tas, kuris paleidžia, mūsų pavyzdžio atveju, „Gmail“. Jis pažymėtas
Intent.FLAG_ACTIVITY_NEW_TASK
. - Antrasis ketinimas yra kenkėjiškas. Mūsų pavyzdyje jis skirtas panašumo prisijungimo veiklai. Šis ketinimas neturi vėliavėlių.
- Trečias tikslas yra blaškymas. Tai užtikrina, kad vartotojui nekiltų įtarimų dėl to, kad „Gmail“ tiesiog atsidaro atsitiktinai, o ne programėlėje, kurią jis bakstelėjo (t. y. tos, kuri pradeda ataką). Jis pažymėtas
Intent.FLAG_ACTIVITY_NEW_TASK
.
Tada visi šie ketinimai masyve perduodami į startActivities()
metodas.
Antrojo ketinimo vėliavėlių trūkumas čia yra raktas. Tai darydami iš esmės tiesiog atkartojome aukščiau pateiktą „Gmail“ pavyzdį. Techniškai užduotis yra „Gmail“, tačiau aukščiausia veikla yra užpuoliko. Kai vartotojas spustelėja „Gmail“ pagrindinio ekrano piktogramą, vietoje „Gmail“ rodoma užpuoliko veikla.
Koncepcijos įrodymas
Turėdami informaciją, kurią mums atsiuntė „Promon“, galėjome pakartoti jų koncepcijos įrodymą. Štai „Samsung Galaxy Note8“, kuriame veikia „Android 9 Pie“, ekrano įrašas, kuriame rodomas veiksmas.
Švelninimo būdai ir problemos
Dabar paprasčiausiai pakartojus aukščiau pateiktą kodą iš tikrųjų neveiks. Tai nėra išsamus pavyzdys ir yra keletas kitų dalykų, kuriuos užpuolikas turi padaryti, kad jis veiktų, ir kurių mes negalime pasidalinti. Tačiau jas nesunku atspėti pačiam, ir dėl to šis išpuolis toks pavojingas. „StrandHogg 2.0“ yra gana lengvas išnaudojimas, kurį galima įdiegti ir jį sunku sušvelninti.
Sušvelninimas negali apimti visų naudojamų programų įtraukimo į juodąjį sąrašą startActivities()
, nes yra daugybė teisėtų jo naudojimo būdų. Taip pat labai sunku automatizuoti jo aptikimo algoritmą. Piktybiški kūrėjai gali panaudoti įvairiausias gudrybes, kad jų „StrandHogg 2.0“ diegimas būtų veiksmingai nematomas tokioms paslaugoms kaip „Google Play Protect“. StrandHogg 1.0 reikalavo, kad užpuolikas įtrauktų atributą kenkėjiškos programos AndroidManifest.xml, kurį buvo gana lengva aptikti. Kita vertus, „StrandHogg 2.0“ veikia tik „Java“ / „Kotlin“.
Atsižvelgiant į užmaskavimą, atspindį ir net tik skirtingus kodavimo stilius, atrodo nepraktiška automatiškai tinkamai aptikti programą, naudojančią šį išnaudojimą. Be to, jei vartotojas yra StrandHogg 2.0 atakos objektas, jis gali net nežinoti. Jei atidarote „Gmail“ ir matote prisijungimo ekraną, galite pamanyti, kad jūsų seansas baigėsi, ir nieko negalvoję įveskite prisijungimo duomenis.
Kai susisiekėme su „Google“ dėl atsakymo, atstovas pateikė tokį pareiškimą:
„Mes vertiname tyrėjų darbą ir išleidome jų nustatytos problemos pataisymą. Be to, „Google Play Protect“ aptinka ir blokuoja kenkėjiškas programas, įskaitant tas, kurios naudoja šią techniką.
Tai skamba gerai ir, tikiuosi, turės bent tam tikrą poveikį prieš StrandHogg 2.0 atakas. Tačiau verta paminėti, kad „Google Play Protect“. nebuvo aptikti mūsų koncepcijos įrodymo programą kaip kenkėjišką, net atlikus nuskaitymą rankiniu būdu.
Promonas sako, kad jie "nepastebėjo jokios realaus kenkėjiškų programų, naudojančių StrandHogg 2.0 pažeidžiamumą“, tačiau nėra garantijos, kad tai pirmas kartas, kai buvo aptiktas išnaudojimas. Dėl šios priežasties „Promon“ rekomenduoja kūrėjams imtis veiksmų ir apsaugoti savo programas nustatant paleidimo priemonės veiklą. launchMode
vėliava bet kuriam singleTask
arba singleInstance
. Bet kuri iš šių vėliavėlių neleis įvesti užduočių, kuriomis remiasi StrandHogg 2.0. Tačiau jei veikloje naudojama viena iš šių žymų, gali kilti problemų dėl tam tikrų programų srautų, todėl tai ne visada pageidautina.
„Promon“ taip pat reklamuoja savo produktą „Promon SHIELD apsauga programoje“, kuris skamba kaip biblioteka kurias gali įdiegti programų kūrėjai, norėdami stebėti programos proceso užduotis ir patikrinti, ar nėra netaisyklingų intarpai. Kadangi nėra tikrai veiksmingos kūrėjų ar vartotojų mažinimo strategijos, labai svarbu, kad gamintojai įdiegtų pataisą, kad kuo greičiau tai ištaisytų.
Laimei, „Promon“ laikėsi atsakingo atskleidimo gairių prieš paviešindama šį išnaudojimą (ir tai vis dar nėra visiškai vieša – „Promon“ laukia 90 dienų, kol visiškai atskleis, kaip „StrandHogg 2.0“ darbai). Nuo tada „Google“ perkėlė šio išnaudojimo pataisas į „Android 8.0 Oreo“, „Android 8.1 Oreo“ ir „Android 9 Pie“ su 2020 m. gegužės mėn. „Android“ saugos pataisos lygis (SPL). 10 ir naujesnių versijų „Android“ naudotojai nėra pažeidžiami, nors nesame visiškai tikri, kodėl taip yra. Tikėtina, kad tai susiję su naujais „Android 10“ apribojimais, susijusiais su veiklos paleidimu ir tuo, kaip „Google“ integravo tai į užduočių krūvą. Promon sako, kad „Android 10 ataka yra visiškai neveiksminga, o veikla yra padalinta į skirtingas užduotis ir į atskiras užduočių krūvas pagal adb shell dumpsys activity activities
."
Jei jūsų įrenginio gamintojas vis dar teikia saugos naujinimus (galite perskaityti daugiau apie kaip čia veikia saugos pataisos procesas), turėtumėte juos kuo greičiau atnaujinti. Priešingu atveju turėsite būti atsargūs, kokias programas atsisiunčiate ir paleisite (nors vis tiek turėtumėte tai daryti).
Norėdami gauti daugiau informacijos ir StrandHogg 2.0 naudojimo atvejų, žr oficialus pranešimas „Promon“ svetainėje. Pasirinktinių ROM kūrėjams galite rasti atitinkamus AOSP įsipareigojimus, skirtus užkirsti kelią StrandHogg 2.0 atakoms čia ir čia.
Atskleidimo laiko juosta
Štai atskleidimo tvarkaraštis, kurį Promon bendrino savo StandHogg 2.0 dokumente:
- 2019 m. gruodžio 4 d – Pranešta apie problemą „Google“.
- 2019 m. gruodžio 4 d – Su „Google“ bendrino PoC „kenkėjišką programą“ ir vaizdo įrašą
- 2019 m. gruodžio 4 d – „Google“ patvirtino, kad gavo pranešimą
- 2019 m. gruodžio 9 d – „Google“ nustatė, kad radinio sunkumas yra „kritinis“
- 2019 m. gruodžio 9 d – „Google“ patvirtina, kad jie gali atkurti problemą
- 2020 m. vasario 14 d – Informuojame „Google“, kad kovo pradžioje artėja 90 dienų atskleidimas, ir prašome jų padėties
- 2020 m. vasario 14 d – „Google“ atsako, kad balandžio mėn. yra greičiausia, kai jie gali ištaisyti
- 2020 m. vasario 14 d – Informuojame „Google“, kad dirbame su švelninimo priemonėmis
- 2020 m. vasario 14 d – atsako Google. Jie dirba taisydami priemones ir klausia, ar galime pasidalinti, kokias švelninimo priemones rekomenduojame
- 2020 m. vasario 17 d – Informuojame „Google“, kad galime atidėti atskleidimą iki balandžio mėn. Mes prašome CVE numerio
- 2020 m. vasario 17 d – Dalinamės savo švelninimo strategijomis ir tuo, kaip numatome platformos švelninimo priemones
- 2020 m. kovo 23 d – „Google“ atsako su CVE ID (CVE-2020-0096)
- 2020 m. kovo 23 d – „Google“ atsako, kad bendras „Android“ pataisos prieinamumas bus pasiekiamas gegužės mėn
- 2020 m. kovo 23 d – „Google“ klausia, ar svarstysime atidėti atskleidimą iki gegužės mėn
- 2020 m. kovo 27 d – Atsakome, kad atidėliosime atskleidimą iki gegužės mėn
- 2020 m. balandžio 22 d – „Google“ informuoja, kad gegužės mėn. saugos biuletenyje planuojama pateikti pažeidžiamumo pataisą