„Janus Exploit“ leidžia užpuolikams modifikuoti programas nepažeidžiant parašų

„Janus“ pažeidžiamumas leidžia užpuolikams keisti programas nepažeidžiant jų parašų. Jį atrado „GuardSquare“ ir ištaisė „Google“.

„Android“ įdiegta daugybėje įrenginių, todėl ji tampa kenkėjiškų užpuolikų taikiniu. „Google“ mobiliosios operacinės sistemos spragų ir toliau atrandama kiekvieną mėnesį, tačiau gera žinia ta, kad „Google“ paprastai rūpestingai taiso juos įprastose saugos pataisose, kurios vėliau siūlomos originalios įrangos gamintojams, kurie vėliau išsiunčia juos į prietaisai.

Neseniai saugumo tyrinėtojai atskleidė pažeidžiamumą kuri apgaule apgavo vartotojus ir leido užpuolikams įrašyti savo įrenginio ekraną. Šis konkretus išnaudojimas buvo ištaisytas „Android Oreo“, tačiau analitikai Apsaugos aikštė neseniai pranešė apie kitą rimtą pažeidžiamumą, kuris paveikia „Android“ programas, pasirašytas pagal senesnes parašo schemas.

Apsaugos aikštėpranešime teigiama, kad Januspažeidžiamumas (CVE-2017-13156) „Android“ leidžia užpuolikams modifikuoti kodą programose nepažeidžiant jų parašų. Ataskaitoje teigiama, kad pažeidžiamumo priežastis yra ta, kad failas gali būti galiojantis APK failas ir galiojantis DEX failas vienu metu.

Janusas naudojasi tuo, kad papildomi baitai nepastebimi APK ir DEX failuose. The Apsaugos aikštė ataskaitoje paaiškinama, kad APK failas yra ZIP archyvas, kuriame gali būti savavališkų baitų pradžioje, prieš ir tarp ZIP įrašų. JAR parašo schemoje atsižvelgiama tik į ZIP įrašus, neatsižvelgiant į papildomus baitus, kai skaičiuojamas arba tikrinamas programos parašas.

Toliau paaiškinama, kad DEX failo pabaigoje gali būti savavališkų baitų - po įprastų eilučių, klasių, metodų apibrėžimų ir kt. Todėl failas vienu metu gali būti galiojantis APK failas ir galiojantis DEX failas.

Apsaugos aikštė taip pat mini, kad pagrindinis pažeidžiamumo elementas yra „nekenksminga“ virtualios mašinos Dalvik/ART savybė. Ataskaitoje teigiama, kad teoriškai „Android“ vykdymo laikas įkelia APK failą, ištraukia jo DEX failą ir paleidžia jo kodą. Tačiau praktiškai virtualioji mašina (VM) gali įkelti ir vykdyti tiek APK, tiek DEX failus. Problema ta, kad kai VM gauna APK failą, ji vis tiek žiūri į magiškus baitus antraštėje, kad nuspręstų, kokio tipo failas tai yra: DEX ar APK. Suradęs DEX antraštę, jis įkelia failą kaip DEX failą. Jei jis neranda antraštės, jis įkelia failą kaip APK failą, kuriame yra ZIP įrašas su DEX failu. Taigi jis gali neteisingai interpretuoti du DEX / APK failus.

Apsaugos aikštė sako, kad užpuolikas gali panaudoti šią dvilypumo VM funkciją, kad įtrauktų kenksmingą DEX failą į įprastą APK failą nepaveikdamas jo parašo. „Android“ vykdymo laikas priims APK failą kaip galiojantį teisėtos ankstesnės programos versijos naujinį, tačiau „Dalvik VM“ įkels kodą iš DEX failo, kuriame buvo įvestas kenkėjiškas kodas.

Įprastai, kai naudotojas įdiegia atnaujintą programos versiją, programos parašą patikrina „Android“ vykdymo laikas, kad įsitikintų, jog jis atitinka senesnę versiją. Kai patvirtinimas yra teigiamas, atnaujinta programa gauna leidimus, kurie buvo suteikti pirminei programai. Tokiu būdu užpuolikai gali pasinaudoti „Janus“ pažeidžiamumu, kad apeitų parašo tikrinimo procesą ir neįtariančių vartotojų įrenginiuose būtų įdiegtas nepatvirtintas kodas.

Dar blogiau yra tai, kad šis nepatvirtintas kodas gali gauti prieigą prie galingų leidimų. Tai suteikia rimtų galimybių. Apsaugos aikštė teigia:

„Užpuolikas gali pakeisti patikimą programą su didelėmis privilegijomis (pvz., sistemos programą) pakeistu naujiniu, kad piktnaudžiautų jos leidimais. Atsižvelgiant į tikslinę programą, įsilaužėlis gali pasiekti slaptą informaciją, saugomą įrenginyje, arba net visiškai perimti įrenginį. Arba užpuolikas gali perduoti modifikuotą neskelbtinos programos kloną kaip teisėtą naujinimą [kuris] gali atrodyti ir veikti kaip pradinė programa, bet sukelti kenkėjišką elgesį.

Bendrovė pridūrė, kad iki šiol jie nematė jokių programų, naudojančių Janusą laukinėje gamtoje. Kita gera žinia yra ta, kad dėl pažeidžiamumo vartotojas turi įdiegti kenkėjišką naujinimą iš šaltinio, esančio ne „Google Play“ parduotuvėje. Todėl vartotojai, apribojantys programų diegimą „Play“ parduotuvėje, yra apsaugoti.

„Janus“ pažeidžiamumas paveikia įrenginius, kuriuose veikia 5.0 ir naujesnės versijos „Android“. Tai turi įtakos programoms, kurios buvo pasirašytos naudojant 1 versijos APK parašo schemą. APK, pasirašyti naudojant v2 parašo schemą, yra apsaugoti nuo pažeidžiamumo. Tam reikia, kad APK veiktų įrenginiuose, kuriuose palaikoma naujausia parašo schema (7.0 ir naujesnės versijos „Android“). Schema v2 yra apsaugota, nes skirtingai nei v1 schema, ji atsižvelgia į visus APK failo baitus.

„Senesnės programų versijos ir naujesnės programos, veikiančios senesniuose įrenginiuose, išlieka jautrios. Kūrėjai turėtų bent visada taikyti parašo schemą v2. Apsaugos aikštė teigia.

Apsaugos aikštė apie šią problemą pranešė „Google“ 2017 m. liepos 31 d. ir tą pačią dieną gavo patvirtinimą. Bendrovės ataskaitoje teigiama, kad „Google“ išleido pataisą savo partneriams lapkritį, o klaidą (CVE-2017-13156) paskelbė „Android“ saugos biuletenyje 2017 m. gruodžio 4 d. Pažeidžiamumas turi buvo pataisyta 2017 m. gruodžio mėn. „Android“ saugos pataisoje. Atskirai patvirtinta, kad F-Droid programos iš jų oficialios saugyklos yra saugios. Galiausiai buvo patvirtinta, kad pažeidžiamumas buvo pataisytas APKMirror.


Šaltinis: GuardSquare