A WebView SSL-hibakezelő riasztásainak kijavítása az alkalmazásaidban

Ez a cikk olyan fejlesztőknek szól, akiknek alkalmazásai a WebViewClient.onReceivedSslError kezelő nem biztonságos megvalósítását használják.

Mi történik?

Egy vagy több alkalmazásodban nem biztonságos módon van megvalósítva az onReceivedSslError kezelő, ami sebezhetővé teszi az alkalmazást a közbeékelődéses (man-in-the-middle) támadásokkal szemben. A támadó módosíthatja az érintett WebView-tartalmat, elolvashatja az átküldött adatokat (például a bejelentkezéshez szükséges hitelesítési adatokat), továbbá JavaScript használatával lefuttathatja saját kódját az alkalmazáson belül. A Play Console felületén lévő értesítésben további információt találhatsz. A Play Console felületén látható határidők után eltávolíthatjuk a Google Playről azokat az alkalmazásokat, amelyekben még megtalálható a sebezhetőség.

Teendők​

  1. Jelentkezz be a Play Console felületén, majd tekintsd át az Értesítések oldalon az érintett alkalmazásokat és a problémák megoldásának határidőit.
  2. Készíts olyan frissítést az érintett alkalmazásokhoz, amely elhárítja a sebezhetőséget.
  3. Küldd be az érintett alkalmazások frissített verzióit.

A beküldés után alkalmazásodat ismét ellenőrizzük. A folyamat több órát is igénybe vehet. Ha az alkalmazás megfelel az ellenőrzésen, és ezt követően közzétesszük, nincs más teendőd. Ha az alkalmazás nem felel meg az ellenőrzésen, akkor nem tesszük közzé az új verziót, és e-mailben értesítést küldünk a fejleményről.

Részletek

  1. A probléma kijavítása érdekében frissítsd az alkalmazásaid kódját úgy, hogy minden alkalommal, amikor a szerver által bemutatott tanúsítvány megfelel az elvárásaidnak, az alkalmazás meghívja az SslErrorHandler.proceed() metódust, ellenkező esetben pedig az SslErrorHandler.cancel() metódust. A tanúsítvány érvényességének ellenőrzésekor ügyelj a következőkre:
    1. Az alkalmazás megjelölésére sor kerülhet akkor, ha nem tartalmaz elegendő tanúsítványérvényességi ellenőrzést. Például ha csak a getPrimaryError visszatérítési értéket ellenőrzöd, az nem elég a tanúsítvány érvényességének megállapításához.

    2. Az SslError.getPrimaryError által dobott SSL-hibák figyelmen kívül hagyása nem biztonságos. A getPrimaryError által jelzett hiba a legsúlyosabb a hibák közül, ezért ha a getPrimaryError() != SSL_UNTRUSTED megállapítás igaz, a kapcsolatban attól még lehet egy SSL_UNTRUSTED jellegű hiba a hibák között.

  2. Ha olyan, harmadik féltől származó függvénytárat használsz, amely ezt a problémát okozza, értesítsd az adott felet, és közösen keressetek megoldást a problémára.

További információt az SSL-hibakezelővel kapcsolatban az Android fejlesztői súgóban fellelhető dokumentációban találsz. Technikai jellegű kérdéseidet a https://www.stackoverflow.com/questions oldalon teheted fel; a kérdés feltevésekor használd az „android-security” és az „SslErrorHandler” címkéket.

Bár ezek a konkrét problémák nem feltétlenül vonatkoznak minden olyan alkalmazásra, amely WebView SSL-t használ, érdemes naprakésznek lenni a biztonsági javítások tekintetében. A biztonsági réseket tartalmazó, így a felhasználókat a támadások kockázatának kitevő alkalmazásokat veszélyes termékeknek tekinthetjük, mivel sértik tartalmi irányelveinket, valamint a Fejlesztői terjesztési megállapodás 4.4. pontját.

Örömmel segítünk

Ha technikai jellegű kérdéseid vannak a sebezhetőséggel kapcsolatban, felteheted őket a Stack Overflow webhelyén az „android-security” címke használatával. Ha tisztázni szeretnéd, hogy pontosan milyen lépéseket kell tenned a probléma megoldása érdekében, felveheted a kapcsolatot a fejlesztői ügyfélszolgálatunkkal.