StrandHogg 2.0 Exploit skaidrojums

StrandHogg 2.0 ir jauna bīstama Android ievainojamība. Lūk, kā tas var ietekmēt lietotājus un kā izstrādātāji var aizsargāt savas lietotnes pret to.

Ir pulksten 22:00. Vai jūs zināt, kur atrodas jūsu aktivitātes? Ir jauna ievainojamība, ko var izmantot miljoniem Android ierīču, un tā ir arī diezgan nepatīkama. Īsumā, šī dizaina nepilnība ļauj uzbrucējam parādīt savu darbību (lapu) citas lietotnes augšpusē, tādējādi, iespējams, maldinot lietotāju nodot savus privātos datus. Ievainojamība tika nosaukta par StrandHogg 2.0, un to nesen atklāja Prom, Norvēģijas apsardzes firma.

StrandHogg 2.0 ievainojamība teorētiski ietekmē visas Android ierīces, kurās darbojas Android versijas, kas ir tikpat vecas kā Honeycomb (3.0) un jaunāka par Android 9 Pie (9.0). Pamatojoties uz jaunākās Android versijas izplatīšanas statistika, tas nozīmē, ka aptuveni 91,8% no visām Android ierīcēm ir neaizsargātas pret StrandHogg 2.0. Ievainojamība tika piešķirta CVE-2020-0096 un tika dota a smaguma pakāpe "kritisks".

Tam nav nepieciešamas īpašas atļaujas, un tas var darboties gandrīz pilnībā bez lietotāja iejaukšanās. Lietotājam ir tikai jāatver lietotne, kurā ir paslēpts ļaunprātīgais kods, un tad viņš ir neaizsargāts pret izmantošanu.

Promon bija pietiekami laipns un atsūtīja mums savu koncepcijas apliecinājuma lietotni un tās avota kodu, lai mēs varētu vislabāk paskaidrojiet, kā darbojas, kāpēc tas ir svarīgi lietotājiem un kā izstrādātāji var aizsargāt savas lietotnes pret to.


Kā tas strādā

Pieņemsim, ka izmantojat pakalpojumu Gmail un noklikšķināt uz tīmekļa saites. Ja atverat savu jaunāko lietotņu ekrānu, iespējams, pamanīsit, ka tīmekļa lapa, šķiet, atrodas pakalpojumā Gmail. Priekšskatījumā tiek rādīta vietne, taču lietotnes ikona un nosaukums joprojām ir no Gmail. Tas notiek, kad lietotne/aktivitāte palaiž citu lietotni/aktivitāti tajā pašā uzdevumā. Tagad iedomājieties, ka jūs ar nolūku neatvērāt šo saiti. Jums šķiet, ka tā ir tikai daļa no lietotnes Gmail. Šo darbību izmanto StrandHogg 2.0.

Šeit mums būs jāatstāj dažas detaļas, taču tālāk ir norādīts, kā šī izmantošana darbojas. Pieņemsim, ka uzbrucējs vēlas iegūt lietotāja Gmail pieteikuminformāciju.

  1. Lietotājs lejupielādē ļaunprātīgu lietotni (protams, nezinot, ka tā ir ļaunprātīga) un atver to.
  2. Fonā lietotne atver Gmail, ievieto tai līdzīgu pieteikšanās darbību un pēc tam palaiž citu darbību.
  3. Lietotājs atver Gmail un redz, kas izskatās kā Gmail pieteikšanās ekrāns, bet patiesībā tā ir uzbrucēja pikšķerēšanas darbība.

Pēdējā darbība, kas uzsākta 2. darbībā, var būt jebkas, kas ļauj izvairīties no aizdomām. Lietotne var viltot avāriju un atgriezties sākuma ekrānā vai vienkārši atvērt galveno darbību tā, it kā nekas nenotiktu. Vienīgā aizdomīgā lieta, ko lietotājs varētu redzēt, ir virkne atvēršanas animāciju, palaižot visas darbības. Sliktākā daļa: tas pat neizskatīsies, ka Gmail tika atvērts.

Avots: Promon

Protams, uzbrucējs var darīt vairāk, nekā tikai parādīt viltus pieteikšanās ekrānu. Ļaunprātīga lietotne tā vietā var parādīt atļauju uzvedni, liekot lietotājam piešķirt nevēlamas atļaujas. Lai gan, pieprasot īpašas atļaujas, piemēram, pieejamība, lietotājs var kļūt aizdomīgs, ir iespējams nodarīt lielu kaitējumu, piemēram, izmantojot krātuves piekļuvi.


Tehniskie gabali

Šī nākamā sadaļa ir augsta līmeņa pārskats par to, kā StrandHogg 2.0 darbojas. Promon nesniegs pilnu informāciju vēl dažus mēnešus, tāpēc mēs nevaram pastāstīt, kā tieši šī izmantošana tiek īstenota. Tomēr ir dažas tehniskas detaļas, par kurām mēs varam runāt.

Īsumā, StrandHogg 2.0 nolaupa Android Context.startActivities() API metode, izmantojot trīs nolūkus.

  • Pirmais nolūks ir tas, kas mūsu piemērā palaiž pakalpojumu Gmail. Tas ir atzīmēts ar Intent.FLAG_ACTIVITY_NEW_TASK.
  • Otrais nolūks ir ļaunprātīgs. Mūsu piemērā tas ir paredzēts līdzīgai pieteikšanās darbībai. Šim nodomam nav karogu.
  • Trešais nolūks ir novērst uzmanību. Tas nodrošina, ka lietotājam nav aizdomas, ka Gmail vienkārši tiek atvērts nejauši, nevis lietotne, kurai viņš pieskārās (t.i., tā, kas uzsāk uzbrukumu). Tas ir atzīmēts ar Intent.FLAG_ACTIVITY_NEW_TASK.

Pēc tam visi šie nolūki tiek nodoti masīvā uz startActivities() metodi.

Šeit galvenais ir Otrā nolūka karogu trūkums. To darot, mēs būtībā esam tikai atkārtojuši Gmail piemēru no augšas. Tehniski uzdevums ir Gmail, bet augstākā darbība ir uzbrucēja uzdevums. Kad lietotājs pēc tam noklikšķina uz Gmail sākuma ekrāna ikonas, Gmail darbības vietā tiek parādīta uzbrucēja darbība.


Koncepta pierādījums

Ar informāciju, ko Promon mums nosūtīja, mēs varējām atkārtot viņu koncepcijas pierādījumu. Šis ir ekrāna ieraksts no Samsung Galaxy Note8, kurā darbojas operētājsistēma Android 9 Pie, un tas parāda to darbībā.


Seku mazināšanas metodes un problēmas

Tagad vienkārši atkārtojot iepriekš minēto kodu, tas faktiski nedarbosies. Tas nav pilnīgs piemērs, un ir dažas citas lietas, kas uzbrucējam ir jādara, lai tas darbotos, ko mēs nevaram kopīgot. Bet tos nav īpaši grūti uzminēt pašiem, un tas ir daļa no tā, kas padara šo uzbrukumu tik bīstamu. StrandHogg 2.0 ir salīdzinoši viegli ieviešams, un to ir grūti mazināt.

Mīkstināšana nevar ietvert tikai visu izmantoto lietotņu iekļaušanu melnajā sarakstā startActivities(), jo tam ir daudz likumīgu lietojumu. Ir arī ļoti grūti automatizēt tā noteikšanas algoritmu. Ļaunprātīgi izstrādātāji var izmantot dažādus trikus, lai padarītu StrandHogg 2.0 ieviešanu faktiski neredzamu tādiem pakalpojumiem kā Google Play Protect. StrandHogg 1.0 prasīja uzbrucējam pievienot atribūtu ļaunprātīgās lietotnes AndroidManifest.xml, ko bija samērā viegli noteikt. Savukārt StrandHogg 2.0 pilnībā darbojas Java/Kotlin versijā.

Ņemot vērā apmulsumu, atspoguļojumu un pat tikai dažādus kodēšanas stilus, šķiet nepraktiski automātiski pareizi noteikt lietotni, kas izmanto šo izmantošanu. Turklāt, ja lietotājs ir pakļauts StrandHogg 2.0 uzbrukumam, viņš var pat nezināt. Ja atverat Gmail un redzat tā pieteikšanās ekrānu, iespējams, vienkārši domājat, ka jūsu sesijas termiņš ir beidzies, un bez pārdomām ievadiet savu pieteikšanās informāciju.

Kad sazinājāmies ar Google, lai saņemtu atbildi, pārstāvis piedāvāja šādu paziņojumu:

"Mēs novērtējam pētnieku darbu un esam izlaiduši viņu identificētās problēmas labojumu. Turklāt Google Play Protect atklāj un bloķē ļaunprātīgas lietotnes, tostarp tās, kas izmanto šo paņēmienu."

Tas izklausās labi, un, cerams, tam būs vismaz kāda ietekme pret StrandHogg 2.0 uzbrukumiem. Tomēr ir vērts atzīmēt, ka Google Play Protect nedarīja atklāt mūsu koncepcijas pierādījuma lietotni kā ļaunprātīgu pat pēc manuālas skenēšanas.

Promon saka, ka viņi "nav novērojuši nevienu reālu ļaunprogrammatūru, kas izmantotu StrandHogg 2.0 ievainojamību”, taču nav garantijas, ka šī ir pirmā reize, kad ekspluatācija tiek atklāta. Šī iemesla dēļ Promon iesaka izstrādātājiem turpināt aizsargāt savas lietotnes, iestatot palaidēja darbības. launchMode karogu uz vienu vai otru singleTask vai singleInstance. Jebkurš no šiem karodziņiem novērsīs uzdevumu ievadīšanu, uz ko balstās StrandHogg 2.0. Tomēr, ja jūsu darbībā tiek izmantots kāds no šiem karodziņiem, var rasties problēmas ar noteiktām lietotņu plūsmām, tāpēc tas ne vienmēr ir vēlams.

Promon arī reklamē savu produktu "Promon SHIELD aizsardzība lietotnē", kas izklausās pēc bibliotēkas. ko lietotņu izstrādātāji var ieviest, lai pārraudzītu uzdevumus jūsu lietotnes procesā un pārbaudītu, vai nav neregulāru ievietojumi. Tā kā nav patiesi efektīvas izstrādātāju vai lietotāju mazināšanas stratēģijas, ir diezgan svarīgi, lai ražotāji ieviestu ielāpu, lai pēc iespējas ātrāk novērstu šo problēmu.

Par laimi, Promon ievēroja atbildīgas izpaušanas vadlīnijas pirms šīs izmantošanas publiskošanas (un tas joprojām nav pilnībā publisks — Promon gaida 90 dienas, pirms pilnībā atklāj, kā StrandHogg 2.0 darbi). Kopš tā laika Google ir atpakaļportējis ielāpus šim eksplozijai operētājsistēmām Android 8.0 Oreo, Android 8.1 Oreo un Android 9 Pie ar 2020. gada maijs Android drošības ielāpa līmenis (SPL). Lietotāji operētājsistēmā Android 10 un jaunākās versijās nav neaizsargāti, lai gan mēs neesam pilnīgi pārliecināti, kāpēc tas tā ir. Tas, iespējams, ir saistīts ar Android 10 jaunajiem ierobežojumiem attiecībā uz darbību palaišanu un to, kā Google to integrēja uzdevumu kaudzē. Promon saka, ka "operētājsistēmā Android 10 uzbrukums ir pilnīgi neefektīvs, un darbības tiek sadalītas dažādos uzdevumos un atsevišķās uzdevumu skapjos saskaņā ar adb shell dumpsys activity activities."

Ja ierīces ražotājs joprojām nodrošina drošības atjauninājumus (varat lasīt vairāk par kā šeit darbojas drošības ielāpu process), jums vajadzētu pēc iespējas ātrāk tos atjaunināt. Pretējā gadījumā jums vienkārši būs jāuzmanās, kuras lietotnes lejupielādējat un palaist (lai gan jums tas būtu jādara jebkurā gadījumā).

Plašāku informāciju un StrandHogg 2.0 lietošanas gadījumus skatiet vietnē oficiālais paziņojums Promon vietnē. Pielāgotu ROM izstrādātājiem varat atrast atbilstošās AOSP saistības, lai novērstu StrandHogg 2.0 uzbrukumus. šeit un šeit.


Informācijas atklāšanas laika skala

Šis ir informācijas atklāšanas laika grafiks, ko Promon kopīgoja savā StandHogg 2.0 dokumentā:

  • 2019. gada 4. decembris – Par problēmu ziņots uzņēmumam Google
  • 2019. gada 4. decembris – Kopīgoja ar Google PoC “ļaunprātīgo lietotni” un video
  • 2019. gada 4. decembris – Google apstiprināja ziņojuma saņemšanu
  • 2019. gada 9. decembris - Google konstatēja nopietnību kā "kritisku"
  • 2019. gada 9. decembris - Google apstiprina, ka viņi spēj atkārtot problēmu
  • 2020. gada 14. februāris - Mēs informējam Google, ka marta sākumā tuvojas 90 dienu atklāšanas termiņš, un lūdzam viņu pusē statusu
  • 2020. gada 14. februāris – Google atbild, ka aprīlis ir ātrākais laiks, kad viņi var ieviest labojumus
  • 2020. gada 14. februāris - Mēs informējam Google, ka strādājam pie seku mazināšanas
  • 2020. gada 14. februāris – Google atbild. Viņi strādā pie atlīdzināšanas un jautā, vai mēs varam pastāstīt par to, kādus mazināšanas pasākumus mēs iesakām
  • 2020. gada 17. februāris – Informējam Google, ka varam atlikt informācijas izpaušanu līdz aprīlim. Mēs pieprasām CVE numuru
  • 2020. gada 17. februāris – Mēs dalāmies ar mūsu ietekmes mazināšanas stratēģijām, kā arī par to, kā mēs plānojam platformas seku mazināšanu
  • 2020. gada 23. marts - Google atbild ar CVE ID (CVE-2020-0096)
  • 2020. gada 23. marts – Google atbild, ka vispārējā labojuma pieejamība operētājsistēmai Android būs pieejama maijā
  • 2020. gada 23. marts – Google jautā, vai mēs apsvērsim iespēju atlikt informācijas izpaušanu uz maiju
  • 2020. gada 27. marts – Mēs atbildam, ka atliksim izpaušanu līdz maijam
  • 2020. gada 22. aprīlis – Google mūs informē, ka maija drošības biļetenā ir plānots iekļaut ievainojamības ielāpu