СтрандХогг 2.0 експлоатација објашњена

СтрандХогг 2.0 је опасна нова рањивост Андроид-а. Ево како то може да утиче на кориснике и како програмери могу да заштите своје апликације од тога.

Сада је 22:00. Да ли знате где су ваше активности? Постоји нова рањивост која се може искористити на милионима Андроид уређаја, и она је такође прилично гадна. Укратко, ова грешка у дизајну омогућава нападачу да представи сопствену активност (страницу) на врху друге апликације, потенцијално збуњујући корисника да ода своје приватне податке. Рањивост је названа СтрандХогг 2.0 и недавно ју је открио Промон, норвешка фирма за обезбеђење.

СтрандХогг 2.0 рањивост теоретски утиче на све Андроид уређаје који користе Андроид верзије старе од Хонеицомб (3.0) и до Андроид 9 Пие (9.0). Базира на статистика дистрибуције најновије Андроид верзије, то значи да приближно 91,8% свих Андроид уређаја је рањиво на СтрандХогг 2.0. Рањивост је додељена ЦВЕ-2020-0096 и добио је а степен озбиљности "критичног". Не захтева никакве посебне дозволе за рад и може да функционише скоро у потпуности без интеракције корисника. Све што корисник треба да уради је да отвори апликацију са злонамерним кодом скривеним у њој и тада је рањив на експлоатацију.

Промон је био љубазан да нам пошаље своју апликацију за доказ концепта и њен изворни код како бисмо могли најбоље објасните како експлоатација функционише, зашто је важна корисницима и како програмери могу да заштите своје апликације против тога.


Како то ради

Рецимо да користите Гмаил и кликнете на веб везу. Ако одете на екран недавних апликација, можда ћете приметити да се чини да је веб страница „унутар“ Гмаил-а. Преглед приказује веб локацију, али икона апликације и име су и даље из Гмаил-а. То је нешто што се дешава када апликација/активност покрене другу апликацију/активност у истом задатку. Сада замислите да нисте намерно отворили ту везу. За вас изгледа као да је то само део апликације Гмаил. Ово је понашање које користи СтрандХогг 2.0.

Овде ћемо морати да изоставимо неке детаље, али ево отприлике како ова експлоатација функционише. За следеће, претпоставимо да нападач жели да добије Гмаил пријаву корисника.

  1. Корисник преузима злонамерну апликацију (наравно, не знајући да је злонамерна) и отвара је.
  2. У позадини, апликација отвара Гмаил, ставља на њега сличну активност за пријаву, а затим покреће другу активност.
  3. Корисник отвара Гмаил и види оно што изгледа као Гмаилов екран за пријаву, али је заправо активност нападача за крађу идентитета.

Последња активност покренута у кораку 2 може бити било шта што избегава сумњу. Апликација би могла лажирати пад и вратити се на почетни екран, или би се једноставно могла отворити за своју главну активност као да се ништа није догодило. Једина сумњива ствар коју корисник може да види је гомила анимација отварања док се све активности покрећу. Најгори део: неће изгледати ни као да је Гмаил отворен.

Извор: Промон

Наравно, нападач може учинити више од само приказивања лажног екрана за пријаву. Злонамерна апликација би уместо тога могла да прикаже упит за дозволе, наводећи корисника да додели нежељене дозволе. Иако би захтевање посебних дозвола као што је Приступачност могло да учини корисника сумњивим, могуће је направити велику штету нечим попут приступа складишту.


Тхе Тецхницал Битс

Следећи одељак је преглед високог нивоа како функционише СтрандХогг 2.0. Промон неће објавити све детаље још неколико месеци, тако да не можемо тачно да поделимо како се овај експлоат примењује. Међутим, постоје неки технички детаљи о којима можемо разговарати.

Укратко, СтрандХогг 2.0 отима Андроид-ове Context.startActivities() АПИ метод, користећи три намере.

  • Прва намера је она која покреће, у случају нашег примера, Гмаил. Означено је са Intent.FLAG_ACTIVITY_NEW_TASK.
  • Друга намера је злонамерна. У нашем примеру, то је за активност пријављивања на сличан начин. Ова намера нема заставице.
  • Трећа намера је одвраћање пажње. То осигурава да корисник није сумњичав према Гмаил-у који се само насумично отвара уместо апликације коју је додирнуо (тј. оне која покреће напад). Означено је са Intent.FLAG_ACTIVITY_NEW_TASK.

Све ове намере се затим прослеђују у низу у startActivities() методом.

Недостатак заставица друге намере је кључ овде. Чинећи то, ми смо у суштини само реплицирали Гмаил пример одозго. Задатак је технички Гмаил-ов, али највиша активност је нападач. Када корисник кликне на икону почетног екрана Гмаил-а, приказује се активност нападача уместо Гмаил-а.


Доказ концепта

Са информацијама које нам је Промон послао, успели смо да поновимо њихов доказ концепта. Ево снимка екрана са Самсунг Галаки Ноте8 који користи Андроид 9 Пие који га приказује у акцији.


Технике и проблеми ублажавања

Сада, једноставно реплицирање горе наведеног у коду заправо неће радити. То није потпун пример, а постоји још неколико ствари које нападач мора да уради да би то функционисало, а ми не можемо да поделимо. Али није их посебно тешко сами погодити, и то је део онога што овај напад чини тако опасним. СтрандХогг 2.0 је релативно лак за имплементацију и тешко га је ублажити.

Ублажавање не може само да укључује стављање на црну листу свих апликација које користе startActivities(), пошто за то постоји много легитимних употреба. Такође је заиста тешко аутоматизовати алгоритам детекције за то. Злонамерни програмери могу користити разне трикове како би њихова имплементација СтрандХогг 2.0 била ефективно невидљива за услуге као што је Гоогле Плаи Протецт. СтрандХогг 1.0 захтевао је од нападача да дода атрибут у АндроидМанифест.кмл злонамерне апликације, што је било релативно лако открити. СтрандХогг 2.0, с друге стране, у потпуности функционише у Јава/Котлин.

Узимајући у обзир замагљивање, рефлексију, па чак и само различите стилове кодирања, чини се непрактичним да се аутоматски правилно детектује апликација која користи ову експлоатацију. Штавише, ако је корисник предмет СтрандХогг 2.0 напада, можда неће ни знати. Ако отворите Гмаил и видите његов екран за пријаву, можда ћете помислити да је ваша сесија истекла и унесите своје податке за пријаву без размишљања.

Када смо контактирали Гоогле за одговор, портпарол је понудио следећу изјаву:

„Ценимо рад истраживача и објавили смо решење за проблем који су идентификовали. Поред тога, Гоогле Плаи заштита открива и блокира злонамерне апликације, укључујући оне које користе ову технику.“

Ово звучи добро, и надамо се да ће имати бар неки ефекат против СтрандХогг 2.0 напада. Међутим, вреди напоменути да Гоогле Плаи Протецт није откријте нашу апликацију за доказ концепта као злонамерну, чак и након што извршите ручно скенирање.

Промон каже да они "нису приметили злонамерни софтвер у стварном животу који користи рањивост СтрандХогг 2.0,“, али нема гаранције да је ово први пут да је експлоатација откривена. Из тог разлога, Промон препоручује програмерима да заштите своје апликације тако што ће поставити активност покретача launchMode заставу на било singleTask или singleInstance. Било која од ових ознака ће спречити убацивање задатака, на шта се ослања СтрандХогг 2.0. Међутим, коришћење једне од ових заставица у вашој активности може да изазове проблеме са одређеним токовима апликација, тако да то није увек пожељно.

Промон такође промовише сопствени производ „Ин-Апп Протецтион би Промон СХИЕЛД“ који звучи као библиотека које програмери апликација могу применити да би надгледали задатке у процесу ваше апликације и проверавали да ли су неправилни уметања. Пошто не постоји заиста ефикасна стратегија за ублажавање утицаја програмера или корисника, прилично је важно да произвођачи имплементирају закрпу како би ово поправили што је пре могуће.

Срећом, Промон је следио одговорне смернице за откривање података пре него што је овај експлоатацију објавио (и још увек није у потпуности јавно – Промон чека 90 дана пре него што у потпуности открије како СтрандХогг 2.0 Извођење радова). Гоогле је од тада пренео закрпе за овај експлоат на Андроид 8.0 Орео, Андроид 8.1 Орео и Андроид 9 Пие са Ниво безбедносне закрпе за Андроид (СПЛ) за мај 2020.. Корисници на Андроид-у 10 и новијим нису рањиви, иако нисмо сасвим сигурни зашто је то случај. Вероватно има неке везе са новим ограничењима Андроида 10 у вези са покретањем активности и начином на који је Гоогле то интегрисао у скуп задатака. Промон каже да је „на Андроид 10 напад потпуно неефикасан, а активности су подељене на различите задатке и у засебне групе задатака према adb shell dumpsys activity activities."

Ако произвођач вашег уређаја и даље пружа безбедносна ажурирања (можете прочитати више о како овде функционише процес безбедносне закрпе), требало би да их гњавите за ажурирање што је пре могуће. У супротном, само ћете морати да пазите које апликације преузимате и покрећете (мада би то ионако требало да радите).

За више детаља и случајева употребе СтрандХогг 2.0, погледајте званично саопштење на сајту Промона. За програмере прилагођених РОМ-а, можете пронаћи релевантне АОСП обавезе за спречавање СтрандХогг 2.0 напада овде и овде.


Временска линија обелодањивања

Ево временског оквира откривања који је Промон поделио у свом документу СтандХогг 2.0:

  • 4. децембра 2019 – Пријављен проблем Гоогле-у
  • 4. децембра 2019 – Дели ПоЦ „злонамерну апликацију“ и видео са Гоогле-ом
  • 4. децембра 2019 – Гугл је потврдио да је примио извештај
  • 9. децембра 2019 – Гугл је поставио озбиљност налаза као „критичан“
  • 9. децембра 2019 – Гоогле потврђује да су у могућности да репродукују проблем
  • 14. фебруар 2020 – Обавештавамо Гоогле да се 90-дневно откривање приближава почетком марта и тражимо статус на њиховој страни
  • 14. фебруар 2020 – Гоогле одговара да је април најскорије што могу да уведу поправку
  • 14. фебруар 2020 – Обавештавамо Гоогле да радимо на ублажавању
  • 14. фебруар 2020 – одговара Гугл. Они раде на санацији и питају да ли можемо да поделимо које мере ублажавања препоручујемо
  • 17. фебруар 2020 – Обавештавамо Гоогле да можемо да задржимо откривање до априла. Захтевамо ЦВЕ број
  • 17. фебруар 2020 – Делимо наше стратегије за ублажавање утицаја, као и како замишљамо платформу за ублажавање
  • 23. март 2020 – Гоогле одговара са ЦВЕ ИД-ом (ЦВЕ-2020-0096)
  • 23. март 2020 – Гоогле одговара да ће општа доступност поправке за Андроид бити доступна у мају
  • 23. март 2020 – Гугл пита да ли ћемо размотрити одлагање обелодањивања до маја
  • 27. март 2020 – Одговарамо да ћемо одложити обелодањивање до маја
  • 22. април 2020 – Гоогле нас обавештава да би мајски безбедносни билтен требало да садржи закрпу за рањивост