Cómo usar las alertas del controlador de errores SSL de WebView para tus apps

Este artículo está destinado a los desarrolladores que tengan apps con una implementación no segura del controlador WebViewClient.onReceivedSslError.

Novedades

Una o más de tus apps contienen una implementación no segura del controlador onReceivedSslError, lo que las pone en riesgo de ataques de intermediario. Un atacante podría cambiar el contenido del componente WebView afectado, leer los datos que se transmiten (como las credenciales de acceso) y ejecutar códigos en la app mediante JavaScript. Consulta la notificación en tu cuenta de Play ConsoleDespués de los plazos que aparecen en Play Console, se eliminarán de Google Play todas las apps que contengan vulnerabilidades de seguridad no resueltas.

Acción necesaria​

  1. Accede a tu cuenta de Play Console y ve a la sección "Alertas" para observar qué apps están afectadas y las fechas límites para resolver los problemas.
  2. Actualiza las apps afectadas y corrige la vulnerabilidad.
  3. Envía las versiones actualizadas de las apps afectadas.

Una vez que las hayas reenviado, revisaremos tu app nuevamente. Este proceso puede demorar varias horas. Si la app pasa la revisión y se publica sin problemas, no se requerirá ninguna otra acción. Si la app no pasa la revisión, no se publicará la nueva versión, y recibirás una notificación por correo electrónico.

Detalles adicionales

  1. Para solucionar el problema, actualiza el código de tus apps con el fin de invocar SslErrorHandler.proceed() cuando el certificado que presente el servidor cumpla con tus requisitos o, de lo contrario, invoca SslErrorHandler.cancel(). Ten en cuenta los siguientes puntos a la hora de revisar la validez del certificado:
    1. Es posible que se marque una app si no contiene suficientes controles de validez del certificado; por ejemplo, no es suficiente controlar únicamente el valor de devolución de getPrimaryError para establecer la validez del certificado.

    2. No es seguro ignorar la mayoría de los errores de SSL que muestra SslError.getPrimaryError. Ten en cuenta que getPrimaryError muestra el error más grave de un conjunto. Por lo tanto, si getPrimaryError() != SSL_UNTRUSTED es verdadero, es posible que la conexión aún contenga un error de SSL_UNTRUSTED en el conjunto de errores.

  2. Si usas una biblioteca de un tercero que sea responsable de la vulnerabilidad, comunícate con él y trabajen en conjunto para solucionar el problema.

Para obtener más información sobre el controlador de errores SSL, consulta nuestra documentación en el Centro de ayuda para desarrolladores de Android. Si tienes preguntas sobre cuestiones técnicas, publícalas en https://www.stackoverflow.com/questions y usa las etiquetas “android-security” y “SslErrorHandler”.

Si bien es posible que estos problemas específicos no afecten a todas las apps que usan WebView SSL, es aconsejable que mantengas todos los parches de seguridad actualizados. Es posible que aquellas apps con vulnerabilidades que comprometan la seguridad de los usuarios se consideren productos peligrosos que infringen la Política de Contenido y el Artículo 4.4 del Acuerdo de Distribución para Desarrolladores.

Estamos aquí para ayudarte

Si tienes preguntas técnicas sobre la vulnerabilidad, puedes publicarlas en Stack Overflow con la etiqueta "android-security". Si necesitas aclaración sobre los pasos que debes seguir para resolver el problema, puedes comunicarte con nuestro equipo de asistencia para desarrolladores.