Řešení upozornění na obslužný nástroj chyb SSL WebView v aplikacích

Tento článek je určen vývojářům aplikací, kteří používají nezabezpečenou implementaci obslužného nástroje WebViewClient.onReceivedSslError.

K čemu dochází

U jedné nebo více vašich aplikací se vyskytuje nezabezpečená implementace obslužného nástroje onReceivedSslError, kvůli které je aplikace náchylná k útokům typu man-in-the-middle. Útočník by mohl změnit obsah příslušného webového zobrazení, přečíst si odesílaná data (jako jsou přihlašovací údaje) a spustit kód v aplikaci pomocí JavaScriptu. Další informace najdete v oznámení ve službě Play ConsolePo 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

  1. Problém vyřešíte takto: kód svých aplikací změňte tak, aby pokaždé, když certifikát poskytnutý serverem splňuje vaše očekávání, volal metodu SslErrorHandler.proceed() a v ostatních případech volal metodu SslErrorHandler.cancel(). Při kontrole platnosti certifikátu zohledněte následující skutečnosti:
    1. Aplikace může být nahlášena, pokud nebude obsahovat dostatečné kontroly platnosti certifikátu – ke stanovení platnosti certifikátu například nestačí jen zkontrolovat hodnotu vrácenou metodou getPrimayError.

    2. Není bezpečné ignorovat většinu chyb certifikátu vrácených metodou SslError.getPrimaryError. Upozorňujeme, že metoda  getPrimaryError vrací většinu závažných chyb v sadě, což znamená, že pokud má metoda getPrimaryError() != SSL_UNTRUSTED hodnotu true, připojení může v sadě chyb přesto obsahovat chybu SSL_UNTRUSTED.

  2. Pokud používáte knihovnu třetí strany, která je za toto odpovědná, informujte příslušnou třetí stranu a společně s ní problém vyřešte.

Další informace o obslužném nástroji chyb SSL naleznete v dokumentaci v centru nápovědy pro vývojáře Android. Máte-li jiné technické otázky, publikuje příspěvek na adrese https://www.stackoverflow.com/questions. Použijte štítky „android-security“ a „SslErrorHandler“.

Ačkoli tyto konkrétní problémy nemusejí mít dopad na každou aplikaci, která používá nástroj WebView SSL, doporučujeme instalovat všechny opravy zabezpečení. Aplikace s chybami zabezpečení, které uživatele vystavují riziku zneužití, mohou být považovány za nebezpečné produkty, jež porušují obsahové zásady a odstavec 4.4 distribuční smlouvy pro vývojáře.

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.