Janus Exploit napadalcem omogoča spreminjanje aplikacij, ne da bi to vplivalo na podpise

Ranljivost Janus omogoča napadalcem, da spreminjajo aplikacije, ne da bi vplivali na njihove podpise. Odkril ga je GuardSquare, Google pa ga je popravil.

Android je nameščen na velikem številu naprav, zaradi česar je tarča zlonamernih napadalcev. Ranljivosti v Googlovem mobilnem operacijskem sistemu še vedno odkrivajo vsak mesec, a dobra novica je, da Google jih običajno skrbno popravlja v rednih varnostnih popravkih, ki se nato ponudijo proizvajalcem originalne opreme, ki jih nato pošljejo naprave.

Pred kratkim so varnostni raziskovalci odkrili ranljivost ki je uporabnike zavedel, da so napadalcem dovolili snemanje zaslona njihove naprave. To posebno izkoriščanje je bilo odpravljeno v sistemu Android Oreo, vendar analitiki pri GuardSquare je pred kratkim poročal o drugi resni ranljivosti, ki vpliva na aplikacije za Android, podpisane s starejšimi podpisnimi shemami.

GuardSquareporočilo navaja, da je Janusranljivost (CVE-2017-13156) v sistemu Android napadalcem omogoča spreminjanje kode v aplikacijah, ne da bi to vplivalo na njihove podpise. Poročilo nadaljuje, da je koren ranljivosti v tem, da je datoteka lahko veljavna datoteka APK in veljavna datoteka DEX hkrati.

Janus izkorišča dejstvo, da dodatni bajti ostanejo neopaženi v datotekah APK in datotekah DEX. The GuardSquare Poročilo pojasnjuje, da je datoteka APK arhiv ZIP, ki lahko vsebuje poljubne bajte na začetku, pred in med vnosi ZIP. Shema podpisa JAR upošteva samo vnose ZIP in pri izračunu ali preverjanju podpisa aplikacije ne upošteva morebitnih dodatnih bajtov.

V nadaljevanju je pojasnjeno, da lahko datoteka DEX po drugi strani vsebuje poljubne bajte na koncu - za običajnimi odseki nizov, razredov, definicij metod itd. Zato je lahko datoteka veljavna datoteka APK in veljavna datoteka DEX hkrati.

GuardSquare prav tako omenja, da je ključni element ranljivosti "neškodljiva" funkcija virtualnega stroja Dalvik/ART. Poročilo navaja, da v teoriji izvajalno okolje Android naloži datoteko APK, ekstrahira njeno datoteko DEX in nato zažene njeno kodo. Vendar pa lahko v praksi virtualni stroj (VM) naloži in izvede tako datoteke APK kot datoteke DEX. Težava je v tem, da ko VM dobi datoteko APK, še vedno pogleda čarobne bajte v glavi, da se odloči, za katero vrsto datoteke gre: DEX ali APK. Ko najde glavo DEX, naloži datoteko kot datoteko DEX. Če ne najde glave, naloži datoteko kot datoteko APK, ki vsebuje vnos zip z datoteko DEX. Tako lahko napačno interpretira dvojne datoteke DEX/APK.

GuardSquare pravi, da lahko napadalec izkoristi to dvojnostno funkcijo VM, da doda zlonamerno datoteko DEX običajni datoteki APK, ne da bi to vplivalo na njen podpis. Izvajalno okolje Android bo sprejelo datoteko APK kot veljavno posodobitev zakonite prejšnje različice aplikacije, vendar bo Dalvik VM naložil kodo iz datoteke DEX, v katero je bila vstavljena zlonamerna koda.

Običajno, ko uporabnik namesti posodobljeno različico aplikacije, izvajalno okolje Android preveri podpis aplikacije, da zagotovi, da se ujema s starejšo različico. Ko je preverjanje pozitivno, posodobljena aplikacija dobi dovoljenja, ki so bila dodeljena prvotni aplikaciji. Na ta način lahko napadalci uporabijo ranljivost Janus, da obidejo postopek preverjanja podpisa in na naprave nič hudega slutečih uporabnikov namestijo nepreverjeno kodo.

Še huje pa je, da lahko ta nepreverjena koda dobi dostop do močnih dovoljenj. To daje nekaj resnih možnosti. GuardSquare navaja:

"Napadalec lahko zamenja zaupanja vredno aplikacijo z visokimi privilegiji (na primer sistemsko aplikacijo) s spremenjeno posodobitvijo in zlorabi njena dovoljenja. Odvisno od ciljne aplikacije bi to lahko hekerju omogočilo dostop do občutljivih informacij, shranjenih v napravi, ali celo popoln prevzem naprave. Namesto tega lahko napadalec posreduje spremenjen klon občutljive aplikacije kot legitimno posodobitev, [ki] je lahko videti in se obnaša kot izvirna aplikacija, vendar vbrizga zlonamerno vedenje."

Družba je dodala, da do zdaj še niso videli nobene aplikacije, ki bi izkoriščala Janus v naravi. Druga dobra novica je, da ranljivost zahteva, da uporabnik namesti zlonamerno posodobitev iz vira zunaj trgovine Google Play. Zato so uporabniki, ki omejijo namestitve aplikacij na Trgovino Play, zaščiteni.

Ranljivost Janus vpliva na naprave s sistemom Android 5.0+. To vpliva na aplikacije, ki so bile podpisane s podpisno shemo APK v1. APK-ji, podpisani s podpisno shemo v2, so zaščiteni pred ranljivostjo. To zahteva, da se APK-ji izvajajo v napravah, ki podpirajo najnovejšo podpisno shemo (Android 7.0 in novejše). Shema v2 je zaščitena, ker za razliko od sheme v1 upošteva vse bajte v datoteki APK.

"Starejše različice aplikacij in novejše aplikacije, ki se izvajajo na starejših napravah, ostajajo dovzetne. Razvijalci bi morali vsaj vedno uporabiti podpisno shemo v2," GuardSquare države.

GuardSquare je to težavo prijavil Googlu 31. julija 2017 in istega dne prejel potrditev. Poročilo podjetja pravi, da je Google izdal popravek svojim partnerjem novembra in objavil napako (CVE-2017-13156) v Android Security Bulletin 4. decembra 2017. Ranljivost je popravljeno v varnostnem popravku za Android iz decembra 2017. Ločeno je bilo potrjeno, da so aplikacije F-Droid iz njihovega uradnega skladišča varne. Nazadnje je bilo potrjeno, da je bila ranljivost popravljena APKMirror.


Vir: GuardSquare