Да ли сте се икада запитали како се проналазе безбедносне рањивости? Британска компанија ГрапхицсФузз објашњава како су наишли на грешку у графичком драјверу на Самсунг Галаки С6 коју су могли да искористе да виде податке са отворених картица у Гоогле Цхроме-у.
Крајем марта, нова фирма са седиштем у УК специјализована за тестирање поузданости ГПУ-а обратила нам се са ГПУ грешка коју су открили то узрокује Куалцомм Снапдрагон 845Самсунг Галаки С9/С9+ да се поново покрене када посећујете веб страницу. Фирма, звала ГрапхицсФузз, сарађивао је са нама да пријави проблем Куалцомм и Самсунг. Неки од наших читалаца су били заинтересовани да сазнају како се компанија свиђа ГрапхицсФузз је у могућности да пронађе ове рањивости, тако да смо сарађивали са компанијом да покажемо како су открили старију рањивост ГПУ-а. Ова већ закрпљена рањивост омогућила је нападачу да даљински „шпијунира“ садржај Гоогле Цхроме картице претраживача на Самсунг Галаки С6.
Овај корисник је прегледао веб локацију своје банке пре него што је посетио злонамерну веб страницу. Садржај је ухваћен и постављен на удаљени сервер. Извор: ГрапхицсФузз.
Како ГрапхицсФузз проналази грешке у ГПУ-у
Графички драјвер ради тако што узима програм схадера и шаље га ГПУ-у да се изврши и на тај начин рендерује слику. Пре него што пошаље шејдер у ГПУ, графички драјвер га преводи у облик који ГПУ може да разуме; неисправан превод може довести до неуспеха у приказивању, квара програма или уређаја, погрешних слика, па чак и безбедносних проблема. ГрапхицсФузз има ан аутоматизовани пакет за тестирање што им омогућава да пронађу ове грешке на основу скупа референтних шејдера. Када корисник изводи њихов тест, све добијене слике би требало да изгледају исто. Свака слика која изгледа другачије значи да је постојала грешка.
Резултати неколико популарних уређаја који користе ГрапхицсФузз тест пакет. Самсунг Галаки С6, Самсунг Галаки С7 и Самсунг Галаки С8 су укључени у ове графиконе. Извор: ГрапхицсФузз.
За Самсунг Галаки С6, ГрапхицсФузз открио да слике у једном од редова приказују слике које би требало да буду у другој табели. То значи да су слике са ранијих тестова процуриле у касније тестове. Тим је затим поново покренуо тестни пакет у Гоогле Цхроме-у и открио да се делови веб странице појављују на слици. Штавише, открили су да отварање друге картице доводи до тога да слика приказује делове других картица. У суштини, ова грешка је омогућила да једна Гоогле Цхроме картица пропушта информације о другој Цхроме картици! Тим иза ГрапхицсФузз није намерно тражио безбедносне грешке, али су на крају пронашли једну као резултат њиховог тестирања. (Треба напоменути да је тим репродуковао грешку на стандардном Самсунг претраживачу на Галаки С6 као и Мозилла Фирефок.)
Како грешка функционише
Слика која се користи за покретање дуготрајне грешке на Самсунг Галаки С6. Извор: ГрапхицсФузз.
„Злонамерна“ веб страница коју је направио ГрапхицсФузз користи ВебГЛ да покуша да нацрта свемирску сцену унутар платна као што је приказано изнад. Боју сваког пиксела одређује фрагмент схадер, програм који веб страница обезбеђује за извршавање на ГПУ-у. Тхе ГрапхицсФузз фрамеворк је модификовао фрагмент схадер-а због чега је радио веома дуго. Када схадер ради предуго, претраживач или оперативни систем обично прекидају приказивање. Међутим, док је ГПУ прекинуо рендеровање након што је нацртао неколико пиксела, управљачки програм ГПУ-а то није пријавио Гоогле Цхроме-у. (Ако погледате слику на врху чланка која приказује смеће видео меморију, заправо можете видети делове свемирске сцене на врху лево.) То значи да пиксели који су приказани пре прекида остају нетакнути, што значи да је коначна рендерована слика углавном смеће видео меморија. Пошто се видео меморија континуирано користи за приказивање других веб страница, подаци о "смећу" заправо садрже претходне приказе других веб страница. Тако се друге веб странице на крају приказују на „злонамерној“ веб страници. Оно што је најважније, ВебГЛ омогућава веб страници да ухвати садржај свега што се приказује; ова слика се затим отпрема на удаљени сервер.
Дијаграм који објашњава дуготрајну грешку ГПУ-а која узрокује „цурење“ података Цхроме картице. Извор: ГрапхицсФузз.
Гоогле Цхроме користи више процеса тако да су различите картице често изоловане, због чега овај експлоат на површини изгледа немогућим. Међутим, Цхроме ступа у интеракцију са ГПУ-ом користећи један „ГПУ процес“, што значи да све картице деле исту ГПУ меморију, што омогућава да овај експлоатација функционише. Горњи дијаграм то показује детаљније.
Грешка је приказана у овом видеу током прве 22 секунде. Такође су приказани и други безбедносни проблеми које је пронашао ГрапхицсФузз.
Лекције које треба научити
ГПУ који се лоше понаша може да заобиђе све безбедносне мере Гоогле Цхроме-а и Андроид-а јер ВебГЛ дозвољава свакој злонамерној веб страници да пошаље код ГПУ-у на извршење. Гоогле не може да поправи грешке ГПУ-а пошто компанија не контролише хардвер и драјвере. У овом случају, на добављачу ГПУ-а (у овом случају, АРМ) је да поправи грешку и ОЕМ-у на чији уређаји су погођени (у овом случају, Самсунг) да интегрише исправку у ажурирање. Додајте носаче у мешавину и лако је видети како оваква грешка може потрајати много времена да се поправи – требало је најмање 5 месеци да већина корисника Самсунг Галаки С6 добије закрпу.
ГрапхицсФузз помаже продавцима ГПУ-а да пронађу грешке које је тешко открити као што су грешке у погрешном компилацији које узрокују генерисање и извршавање погрешног кода на ГПУ-у. Њихов аутоматски оквир за тестирање омогућава им да пронађу грешке као што је она приказана у овом чланку. Такође се показало да дуготрајна петља узрокована „злонамерном“ веб страницом изазива проблеме на другим уређајима као што је ХТЦ Оне М7 а у новије време и Самсунг Галаки С9. ГрапхицсФузз тестира водеће паметне телефоне и објављује а табела резултата који рангира ове уређаје на основу њихових перформанси на подскупу њихових тестова. Стотине рушења и грешака у приказивању су пронађени током њиховог тестирања, али већина њих није истражена да би се видело да ли представљају безбедносну претњу. Међутим, као што показује овај експлоат, ГПУ који се лоше понаша представља безбедносни ризик и могуће је да једна или више критичних безбедносних рањивости чекају да буду откривене. ГрапхицсФузз нада се да ће произвођачи ГПУ-а дати приоритет побољшању квалитета драјвера у будућности.
Компаративна поузданост графичких драјвера, сортирана по броју укупних проблема. Извор: ГрапхицсФузз.
Временски оквир за обелодањивање
- У децембру 2016. ГрапхицсФузз пријавио грешку Гоогле Цхромиум програм за праћење грешака јер је испуњавао услове за Цхроме програм награђивања. Након што је ГрапхицсФузз доставио грешку Гоогле Цхромиум алату за праћење грешака, Гоогле је прихватио грешку и проследио је АРМ-у и Самсунг-у на закрпе.
- Гоогле проследио извештај на контакте у АРМ-у и Самсунг-у.
- Самсунг је тихо закрпио грешку и увео исправку у ажурирању за Андроид 7.0 Ноугат које је објављено између марта и јуна 2017. Иако није постојао ЦВЕ који су креирали Самсунг, Гоогле или АРМ и ни Самсунг ни АРМ нису објавили никакве информације о закрпи, имајте на уму да ГрапхицсФузз није пријавио грешку преко правилан процес.
- Касније, ГрапхицсФузз успео је да потврди да су и Самсунг и АРМ видели извештај и да је АРМ успео да реши проблем због извештаја.
- У августу 2017. ГрапхицсФузз је Гоогле наградио 2.000 долара за извештај о грешци.
- У новембру 2017. извештај о грешци је објављен.