Janus Exploit umožňuje útočníkom upravovať aplikácie bez ovplyvnenia podpisov

Zraniteľnosť Janus umožňuje útočníkom upravovať aplikácie bez ovplyvnenia ich podpisov. Objavil ho GuardSquare a Google ho opravil.

Android je nainštalovaný na obrovskom množstve zariadení, a preto sa stáva cieľom pre zákerných útočníkov. Každý mesiac sa naďalej objavujú slabé miesta v operačnom systéme pre mobilné zariadenia Google, ale dobrou správou je, že Google je zvyčajne usilovný, aby ich opravoval v pravidelných bezpečnostných záplatách, ktoré sú potom ponúkané výrobcom OEM, ktorí ich potom dodávajú zariadení.

Nedávno výskumní pracovníci v oblasti bezpečnosti odhalili zraniteľnosť ktorá oklamala používateľov, aby umožnili útočníkom nahrávať obrazovku ich zariadenia. Tento konkrétny exploit bol opravený v systéme Android Oreo, ale analytici na GuardSquare nedávno oznámila ďalšiu závažnú chybu zabezpečenia, ktorá ovplyvňuje aplikácie pre Android podpísané staršími podpisovými schémami.

GuardSquarev správe sa uvádza, že Januszraniteľnosť (CVE-2017-13156) v systéme Android umožňuje útočníkom upravovať kód v aplikáciách bez ovplyvnenia ich podpisov. V správe sa ďalej uvádza, že koreňom zraniteľnosti je, že súbor môže byť súčasne platným súborom APK a platným súborom DEX.

Janus využíva skutočnosť, že bajty navyše zostávajú v súboroch APK a DEX nepovšimnuté. The GuardSquare správa vysvetľuje, že súbor APK je archív ZIP, ktorý môže obsahovať ľubovoľné bajty na začiatku, pred a medzi položkami ZIP. Podpisová schéma JAR berie do úvahy iba položky ZIP, pričom pri výpočte alebo overovaní podpisu aplikácie ignoruje všetky bajty navyše.

Pokračuje vysvetlením, že súbor DEX môže na druhej strane obsahovať ľubovoľné bajty na konci - po pravidelných sekciách reťazcov, tried, definícií metód atď. Preto môže byť súbor platným súborom APK a platným súborom DEX súčasne.

GuardSquare tiež uvádza, že kľúčovým prvkom zraniteľnosti je „neškodná“ vlastnosť virtuálneho stroja Dalvik/ART. Správa uvádza, že teoreticky runtime Android načíta súbor APK, extrahuje svoj súbor DEX a potom spustí svoj kód. V praxi však môže virtuálny stroj (VM) načítať a spustiť súbory APK aj súbory DEX. Problém je v tom, že keď VM získa súbor APK, stále sa pozerá na magické bajty v hlavičke, aby sa rozhodol, ktorý typ súboru je: DEX alebo APK. Pri nájdení hlavičky DEX načíta súbor ako súbor DEX. Ak nenájde hlavičku, načíta súbor ako súbor APK obsahujúci položku zip so súborom DEX. Môže teda nesprávne interpretovať duálne súbory DEX/APK.

GuardSquare hovorí, že útočník môže využiť túto dualitu virtuálneho počítača na pridanie škodlivého súboru DEX do normálneho súboru APK bez ovplyvnenia jeho podpisu. Runtime systému Android prijme súbor APK ako platnú aktualizáciu legitímnej staršej verzie aplikácie, ale virtuálny počítač Dalvik načíta kód zo súboru DEX, do ktorého bol vložený škodlivý kód.

Za normálnych okolností vždy, keď si používateľ nainštaluje aktualizovanú verziu aplikácie, podpis aplikácie overí modul runtime systému Android, aby sa zabezpečilo, že sa zhoduje so staršou verziou. Keď je overenie pozitívne, aktualizovaná aplikácia získa povolenia, ktoré boli udelené pôvodnej aplikácii. Útočníci tak môžu využiť zraniteľnosť Janus na obídenie procesu overovania podpisov a získať neoverený kód nainštalovaný na zariadeniach nič netušiacich používateľov.

Ešte horšie je, že tento neoverený kód môže získať prístup k výkonným povoleniam. To vedie k niektorým vážnym možnostiam. GuardSquare uvádza:

„Útočník môže nahradiť dôveryhodnú aplikáciu s vysokými oprávneniami (napríklad systémovú aplikáciu) upravenou aktualizáciou, aby zneužil jej povolenia. V závislosti od cielenej aplikácie by to mohlo hackerovi umožniť prístup k citlivým informáciám uloženým v zariadení alebo dokonca úplne prevziať kontrolu nad zariadením. Prípadne môže útočník odovzdať upravený klon citlivej aplikácie ako legitímnu aktualizáciu [ktorá] môže vyzerať a správať sa ako pôvodná aplikácia, ale môže spôsobiť škodlivé správanie."

Spoločnosť dodala, že doteraz nevideli žiadne aplikácie využívajúce Janusa vo voľnej prírode. Ďalšou dobrou správou je, že zraniteľnosť vyžaduje, aby si používateľ nainštaloval škodlivú aktualizáciu zo zdroja mimo obchodu Google Play. Používatelia, ktorí obmedzujú inštalácie aplikácií na Obchod Play, sú preto chránení.

Zraniteľnosť Janus ovplyvňuje zariadenia so systémom Android 5.0 alebo novším. Ovplyvnené sú aplikácie, ktoré boli podpísané pomocou podpisovej schémy APK v1. Súbory APK podpísané podpisovou schémou v2 sú chránené pred touto chybou zabezpečenia. To si vyžaduje, aby boli súbory APK spustené na zariadeniach, ktoré podporujú najnovšiu schému podpisov (Android 7.0 a novší). Schéma v2 je chránená, pretože na rozdiel od schémy v1 zohľadňuje všetky bajty v súbore APK.

„Staršie verzie aplikácií a novšie aplikácie bežiace na starších zariadeniach zostávajú náchylné. Vývojári by mali prinajmenšom vždy používať podpisovú schému v2,“ GuardSquare štátov.

GuardSquare nahlásil tento problém spoločnosti Google 31. júla 2017 a v ten istý deň dostal potvrdenie. V správe spoločnosti sa uvádza, že spoločnosť Google vydala opravu svojim partnerom v novembri a 4. decembra 2017 zverejnila chybu (CVE-2017-13156) v bulletine zabezpečenia systému Android. Zraniteľnosť má opravené v bezpečnostnej oprave systému Android z decembra 2017. Samostatne, aplikácie F-Droid z ich oficiálneho úložiska boli potvrdené ako bezpečné. Nakoniec sa potvrdilo, že zraniteľnosť bola opravená APKMirror.


Zdroj: GuardSquare