Tyto informace jsou určeny vývojářům, jejichž aplikace nejsou zabezpečeny proti útokům, které využívají skriptování mezi aplikacemi.
K čemu dochází
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
- 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.
- Aktualizujte dotčené aplikace a chybu zabezpečení opravte.
- Odešlete aktualizované verze dotčených aplikací.
Dokud nebude žádost zkontrolována, nová aplikace nebo aktualizace aplikace bude mít stav čeká na publikování. Pokud aplikace nebyla aktualizována správně, bude se upozornění zobrazovat i nadále.
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 (Activity) s dotčenými zobrazeními WebView. Pokud tyto aktivity nepotřebují přijímat objekty Intent z jiných aplikací, můžete pro aktivity 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:
- Chraňte volání metod evaluateJavascript a loadUrl
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. Podobně útočníkům umožňuje spouštět škodlivé skripty také volání metody loadUrl s použitím neupraveného vstupu obsahujícího identifikátory URL schématu javascript.
- 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 ve dvou krocích. První krok: Škodlivá webová stránka může do databáze souborů cookie zapsat značky <script>. Druhý krok: Škodlivá aplikace odešle požadavek na objekt Intent pomocí adresy URL file://, která odkazuje na vaši databázi souborů cookie v rámci zobrazení WebView, a může tak načíst pozměněný soubor v databázi souborů cookie. Případně škodlivá webová stránka sama přesměruje vaše zobrazení WebView na adresu souboru. Škodlivý prvek <script> uložený v databázi souborů cookie se načte a spustí, což 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.
- Zakázat veškerý přístup k souborům.
- Zajistěte, aby zobrazení WebView načítalo pouze adresy URL file:// a ověřovalo, zda 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).
- Pokud chcete používat adresy URL http:// i file://, použijte ověření adresy URL file:// shouldOverrideUrlLoading a shouldInterceptRequest v klientu WebViewClient. Bude tak zajištěno, že všechny adresy URL načtené do zobrazení WebView jsou ověřeny, bez omezení pouze na adresy URL přímo poskytnuté voláním funkce loadUrl().
Rádi vám pomůžeme
Máte-li ohledně této zranitelnosti technické dotazy, publikujte 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.