StrandHogg 2.0 Exploit Explained

StrandHogg 2.0 on uus ohtlik Androidi haavatavus. Siit saate teada, kuidas see võib kasutajaid mõjutada ja kuidas arendajad saavad oma rakendusi selle eest kaitsta.

Kell on 22:00. Kas teate, kus teie tegevused on? Seal on uus haavatavus, mida saab ära kasutada miljonites Android-seadmetes, ja see on ka üsna vastik. Lühidalt öeldes võimaldab see disainiviga ründajal esitada oma tegevust (lehte) mõne teise rakenduse peal, mis võib kasutajat segadusse ajada oma privaatsete andmete loovutamisega. Haavatavuse nimi on StrandHogg 2.0 ja selle avalikustas hiljuti Promon, Norra turvafirma.

StrandHogg 2.0 haavatavus mõjutab teoreetiliselt kõiki Android-seadmeid, mis töötavad Androidi versioonidega, mis on sama vanad kui Honeycomb (3.0) ja kuni Android 9 Pie (9.0). Põhinedes Androidi uusima versiooni levitamise statistika, see tähendab seda umbes 91,8% kõigist Android-seadmetest on StrandHogg 2.0 suhtes haavatavad. Haavatavus määrati CVE-2020-0096 ja talle anti a raskusaste "kriitiline". See ei vaja töötamiseks eriõigusi ja töötab peaaegu täielikult ilma kasutaja sekkumiseta. Kasutajal tuleb vaid avada rakendus, mille sees on peidetud pahatahtlik kood, ja seejärel on ta ärakasutamise suhtes haavatav.

Promon saatis meile oma kontseptsiooni tõendirakenduse ja selle lähtekoodi, et saaksime parimal viisil toime tulla selgitage, kuidas ärakasutamine toimib, miks see kasutajatele oluline on ja kuidas arendajad saavad oma rakendusi kaitsta selle vastu.


Kuidas see töötab

Oletame, et kasutate Gmaili ja klõpsate veebilingil. Kui lähete oma hiljutiste rakenduste ekraanile, võite märgata, et veebileht näib olevat Gmaili sees. Eelvaade näitab veebisaiti, kuid rakenduse ikoon ja nimi on endiselt Gmailist. See juhtub siis, kui rakendus/tegevus käivitab samas ülesandes teise rakenduse/tegevuse. Kujutage nüüd ette, et te ei avanud seda linki meelega. Teile tundub, et see on lihtsalt osa Gmaili rakendusest. See on käitumine, mida StrandHogg 2.0 kasutab.

Peame siin mõned üksikasjad välja jätma, kuid siin on umbes see, kuidas see ärakasutamine töötab. Eeldame, et ründaja soovib saada kasutaja Gmaili sisselogimisandmed.

  1. Kasutaja laadib alla pahatahtliku rakenduse (loomulikult teadmata, et see on pahatahtlik) ja avab selle.
  2. Taustal avab rakendus Gmaili, lisab sellele sarnase sisselogimistegevuse ja käivitab seejärel uue tegevuse.
  3. Kasutaja avab Gmaili ja näeb, mis näeb välja nagu Gmaili sisselogimisekraan, kuid tegelikult on see ründaja andmepüügitegevus.

2. etapis käivitatud viimane tegevus võib olla kõik, mis väldib kahtlust. Rakendus võib võltsida krahhi ja naasta avakuvale või avada lihtsalt oma põhitegevuse, nagu midagi ei juhtuks. Ainus kahtlane asi, mida kasutaja võib näha, on hunnik avaanimatsioone, kui kõik tegevused käivituvad. Halvim osa: see ei näe isegi välja, nagu Gmail oleks avatud.

Allikas: Promon

Muidugi saab ründaja teha enamat kui lihtsalt võltsitud sisselogimisekraani näitamine. Pahatahtlik rakendus võib selle asemel esitada lubade viipa, meelitades kasutajat soovimatuid lube andma. Kuigi mis tahes erilubade (nt juurdepääsetavuse) taotlemine võib muuta kasutaja kahtlustavaks, on näiteks Storage Accessiga võimalik palju kahju teha.


Tehnilised osad

See järgmine jaotis on kõrgetasemeline ülevaade StrandHogg 2.0 toimimisest. Promon ei avalda kõiki üksikasju veel mõne kuu jooksul, seega ei saa me täpselt jagada, kuidas seda ärakasutamist rakendatakse. Siiski on mõned tehnilised üksikasjad, millest saame rääkida.

Lühidalt öeldes kaaperdab StrandHogg 2.0 Androidi Context.startActivities() API meetod, kasutades kolme kavatsust.

  • Esimene Intent on see, mis käivitab meie näite puhul Gmaili. See on märgistatud Intent.FLAG_ACTIVITY_NEW_TASK.
  • Teine kavatsus on pahatahtlik. Meie näites on see sarnase sisselogimistegevuse jaoks. Sellel kavatsusel pole lippe.
  • Kolmas kavatsus on tähelepanu hajutamine. See tagab, et kasutaja ei kahtle, et Gmail avaneb lihtsalt juhuslikult rakenduse asemel, mida ta puudutas (st rünnaku käivitaja). See on märgistatud Intent.FLAG_ACTIVITY_NEW_TASK.

Seejärel edastatakse kõik need kavatsused massiivina startActivities() meetod.

Teise Intenti lippude puudumine on siin võtmeks. Seda tehes oleme põhimõtteliselt lihtsalt korranud ülaltoodud Gmaili näidet. Ülesanne on tehniliselt Gmaili ülesanne, kuid kõige kõrgem tegevus on ründaja oma. Kui kasutaja klõpsab seejärel Gmaili avakuva ikoonil, kuvatakse Gmaili oma asemel ründaja tegevus.


Kontseptsiooni tõestus

Promoni poolt meile saadetud teabega suutsime korrata nende kontseptsiooni tõestust. Siin on Android 9 Pie operatsioonisüsteemiga Samsung Galaxy Note8 ekraanisalvestus, mis näitab seda tegevuses.


Leevendustehnikad ja probleemid

Nüüd lihtsalt ülaltoodu koodis kopeerimine tegelikult ei tööta. See ei ole täielik näide ja on veel mõned asjad, mida ründaja peab selle toimimiseks tegema ja mida me ei saa jagada. Kuid neid pole eriti raske ise ära arvata ja see teebki selle rünnaku nii ohtlikuks. StrandHogg 2.0 on suhteliselt lihtne kasutada ja seda on raske leevendada.

Leevendus ei saa hõlmata ainult kõigi kasutatavate rakenduste musta nimekirja lisamist startActivities(), kuna sellel on palju seaduslikke kasutusviise. Samuti on väga raske selle tuvastamise algoritmi automatiseerida. Pahatahtlikud arendajad saavad kasutada kõikvõimalikke nippe, et muuta StrandHogg 2.0 juurutamine sellistele teenustele nagu Google Play Protect nähtamatuks. StrandHogg 1.0 nõudis, et ründaja lisaks pahatahtliku rakenduse faili AndroidManifest.xml atribuudi, mida oli suhteliselt lihtne tuvastada. StrandHogg 2.0 seevastu töötab täielikult Java/Kotlini keeles.

Võttes arvesse hägusust, peegeldust ja isegi lihtsalt erinevaid kodeerimisstiile, tundub ebapraktiline seda ärakasutamist kasutava rakenduse automaatne õigesti tuvastamine. Veelgi enam, kui kasutaja on StrandHogg 2.0 rünnaku objektiks, ei pruugi ta seda isegi teada. Kui avate Gmaili ja näete selle sisselogimisekraani, võite arvata, et teie seanss on aegunud ja sisestage oma sisselogimisandmed ilma pikemalt mõtlemata.

Kui võtsime Google'iga vastuse saamiseks ühendust, pakkus pressiesindaja järgmist avaldust:

"Hindame teadlaste tööd ja oleme nende tuvastatud probleemi jaoks välja andnud paranduse. Lisaks tuvastab ja blokeerib Google Play Protect pahatahtlikud rakendused, sealhulgas need, mis kasutavad seda tehnikat."

See kõlab hästi ja loodetavasti on sellel vähemalt mingi mõju StrandHogg 2.0 rünnakute vastu. Väärib märkimist, et Google Play Protect ei teinud tuvastada meie kontseptsiooni tõestamise rakendus pahatahtlikuna isegi pärast käsitsi skannimist.

Promon ütleb, et nad "pole täheldanud ühtegi reaalset pahavara, mis kasutaks StrandHogg 2.0 haavatavust”, kuid pole mingit garantiid, et see on esimene kord, kui ärakasutamine avastati. Sel põhjusel soovitab Promon arendajatel minna edasi ja kaitsta oma rakendusi, määrates käivitustegevuse launchMode lipp kummalegi singleTask või singleInstance. Kumbki neist lippudest takistab ülesande sisestamist, millele StrandHogg 2.0 tugineb. Kuid kui teie tegevus kasutab ühte neist lippudest, võib see teatud rakenduste voogudega probleeme tekitada, mistõttu pole see alati soovitav.

Promon reklaamib ka oma toodet "In-App Protection by Promon SHIELD", mis kõlab nagu raamatukogu mida rakenduste arendajad saavad rakendada, et jälgida teie rakenduse protsessis esinevaid ülesandeid, et kontrollida, kas need on ebakorrapärased sisestusi. Kuna puudub tõeliselt tõhus arendaja või kasutajate leevendamise strateegia, on üsna oluline, et tootjad rakendaksid plaastri, et see võimalikult kiiresti parandada.

Õnneks järgis Promon vastutustundliku avalikustamise juhiseid enne selle ärakasutamise avalikustamist (ja see pole ikka veel täielikult avalik – Promon ootab 90 päeva enne StrandHogg 2.0 täielikku avalikustamist töötab). Pärast seda on Google selle ärakasutamise jaoks paigad tagasiportinud operatsioonisüsteemidele Android 8.0 Oreo, Android 8.1 Oreo ja Android 9 Pie koos Mai 2020 Androidi turvapaiga tase (SPL). Android 10 ja uuemate versioonide kasutajad ei ole haavatavad, kuigi me pole täiesti kindlad, miks see nii on. Tõenäoliselt on sellel midagi pistmist Android 10 uute piirangutega, mis puudutavad tegevuste käivitamist ja kuidas Google selle ülesannete virna integreeris. Promon ütleb, et "Android 10 puhul on rünnak täiesti ebaefektiivne ja tegevused on jagatud erinevateks ülesanneteks ja eraldi ülesannete virnadeks vastavalt adb shell dumpsys activity activities."

Kui teie seadme tootja pakub endiselt turvavärskendusi (saate lugeda lisateavet kuidas turvapaiga protsess siin töötab), peaksite neid võimalikult kiiresti värskendama. Vastasel juhul peate lihtsalt olema ettevaatlik, milliseid rakendusi alla laadite ja käivitate (kuigi peaksite seda igal juhul tegema).

Lisateabe saamiseks ja StrandHogg 2.0 kasutusjuhtumite kohta vaadake lehte ametlik teadaanne Promoni veebisaidil. Kohandatud ROM-i arendajate jaoks leiate asjakohased AOSP kohustused StrandHogg 2.0 rünnakute vältimiseks siin ja siin.


Avalikustamise ajaskaala

Siin on avalikustamise ajakava, mida Promon oma StandHogg 2.0 dokumendis jagas:

  • 4. detsember 2019 – Google'ile teatatud probleemist
  • 4. detsember 2019 – Jagas Google'iga PoC pahatahtlikku rakendust ja videot
  • 4. detsember 2019 – Google kinnitas aruande saamist
  • 9. detsember 2019 - Google määras leiu raskusastmeks "kriitiline"
  • 9. detsember 2019 – Google kinnitab, et nad suudavad probleemi taasesitada
  • 14. veebruar 2020 - Teavitame Google'it, et 90-päevane avalikustamine läheneb märtsi alguses, ja küsime nende poole staatust
  • 14. veebruar 2020 – Google vastab, et aprill on kõige kiiremini, kui nad saavad lahenduse välja pakkuda
  • 14. veebruar 2020 – Teavitame Google'it, et tegeleme leevendustega
  • 14. veebruar 2020 – Google vastab. Nad töötavad parandusmeetmete kallal ja küsivad, kas saame jagada, milliseid leevendusi me soovitame
  • 17. veebruar 2020 – Teavitame Google'it, et võime avalikustamist kuni aprillini edasi lükata. Palume CVE numbrit
  • 17. veebruar 2020 – Jagame oma leevendusstrateegiaid ja seda, kuidas me platvormi leevendamist ette kujutame
  • 23. märts 2020 – Google vastab CVE ID-ga (CVE-2020-0096)
  • 23. märts 2020 – Google vastab, et Androidi paranduse üldine kättesaadavus on saadaval mais
  • 23. märts 2020 – Google küsib, kas kaalume avalikustamise edasilükkamist maikuusse
  • 27. märts 2020 – Vastame, et lükkame avalikustamise edasi maikuuni
  • 22. aprill 2020 – Google teatab meile, et maikuu turvabülletään sisaldab haavatavuse plaastrit