Oprava chyby zabezpečení před útoky skriptováním mezi aplikacemi

Tyto informace jsou určeny vývojářům, jejichž aplikace nejsou zabezpečeny proti útokům, které využívají skriptování mezi aplikacemi.

Co se děje

V některých vašich aplikacích se vyskytuje problém se skriptováním mezi aplikacemi v zobrazeních WebView, který škodlivé aplikace mohou využít k odcizení souborů cookie a dalších dat. Další informace najdete v oznámení ve službě Play Console. Po termínech uvedených v Play Console mohou být aplikace s neopravenými chybami zabezpečení z Google Play odstraněny.

Vyžadovaná akce

  1. Přihlaste se do Play Console a přejděte do sekce Upozornění, kde zjistíte, kterých aplikací se tento problém týká a do kdy je potřeba jej vyřešit.
  2. Aktualizujte dotčené aplikace a chybu zabezpečení opravte.
  3. Odešlete aktualizované verze dotčených aplikací.

Po odeslání bude aplikace znovu zkontrolována. Tento proces může trvat několik hodin. Pokud aplikace při kontrole projde a bude úspěšně publikována, není potřeba podnikat žádné další kroky. Jestliže aplikace při kontrole neprojde, nová verze aplikace nebude publikována a obdržíte e‑mailem oznámení.

Další podrobnosti

Zobrazení WebView, v nichž je povolen JavaScript a která načítají data z nedůvěryhodných objektů Intent, mohou být škodlivými aplikacemi zneužita ke spuštění kódu JavaScript v nebezpečném kontextu. Doporučujeme, abyste této chybě zabezpečení zabránili jedním z následujících způsobů:

Možnost 1: Zajistěte, aby se dotčené aktivity neexportovaly

Najděte aktivity s dotčenými zobrazeními WebView. Pokud tyto aktivity nepotřebují přijímat objekty Intent z jiných aplikací, můžete pro ně v manifestu nastavit android:exported=false. Tím zajistíte, aby škodlivé aplikace nemohly odesílat škodlivé vstupy do žádných zobrazení WebView v těchto aktivitách.

Možnost 2: Ochraňte zobrazení WebView v exportovaných aktivitách

Pokud aktivitu s dotčeným zobrazením WebView chcete exportovat, je namísto toho potřeba provést následující změny:

  1. Aktualizujte atribut targetSdkVersion
    Zajistěte, aby atribut targetSdkVersion splňoval požadavek služby Google Play na úroveň cílového rozhraní API. Aplikace s hodnotou targetSdkVersion 16 nebo nižší vyhodnocují adresy URL předané metodě loadUrl v kontextu aktuálně načtené stránky. Cílení na verzi SDK 16 nebo nižší a volání metody loadUrl s použitím neupraveného vstupu z nedůvěryhodných objektů Intent může útočníkům umožnit spouštět v dotčeném zobrazení WebView škodlivé skripty.
  2. Chraňte volání metody evaluateJavascript
    Zajistěte, aby parametry metody evaluateJavascript byly vždy důvěryhodné. Volání metody evaluateJavascript s použitím neupraveného vstupu z nedůvěryhodných objektů Intent útočníkům umožňuje spouštět v dotčeném zobrazení WebView škodlivé skripty.
  3. Zabraňte nebezpečnému načítání souborů
    Zajistěte, aby dotčená zobrazení WebView nemohla načíst databázi souborů cookie. Zobrazení WebView, která načítají neupravené adresy URL file:// z nedůvěryhodných objektů Intent, mohou škodlivé aplikace napadnout následujícím způsobem. Škodlivá webová stránka do databáze souborů cookie může zapsat značky <script> a poté může škodlivá aplikace odeslat objekt Intent s adresou URL file:// odkazující na databázi souborů cookie vašeho zobrazení WebView. Když se databáze souborů cookie načte do zobrazení WebView, škodlivý skript se spustí a může odcizit informace o relaci.
    To, aby dotčená zobrazení WebView nemohla načítat databáze souborů cookie zobrazení WebView, lze zajistit dvěma způsoby. Můžete buď zakázat veškerý přístup k souborům, nebo ověřovat, zda načítané adresy URL file:// odkazují na bezpečné soubory. Upozorňujeme, že útočník se kontrolu cesty adres URL může pokusit obejít pomocí symbolických odkazů. Abyste takovému útoku zabránili, před načtením u všech nedůvěryhodných adres URL file:// kontrolujte kanonickou cestu (nikoliv pouze cestu adresy URL).

Rádi vám poradíme
Máte-li ohledně této zranitelnosti technické dotazy, publikuje příspěvek na webu Stack Overflow. Použijte štítek „android-security“. Pokud potřebujete poradit s jednotlivými kroky k řešení tohoto problému, obraťte se na náš tým podpory pro vývojáře.