Esta información está dirigida a los desarrolladores cuyas apps contienen encriptación en la que se usa el modo AES/ECB, que es menos seguro. La encriptación de contenido en este modo menos protegido puede generar textos cifrados vulnerables y, en algunos casos, poner en riesgo los datos del usuario. Las ubicaciones de los modos de encriptación menos seguros de tu app se pueden encontrar en la notificación de Play Console correspondiente a tu app. Si una ubicación termina con "(en código cargado de forma dinámica)", la ubicación está en el código que la app o las bibliotecas que se usan en ella cargan de manera dinámica. Las aplicaciones suelen usar código cargado dinámicamente mediante la entrega de funciones on demand, aunque existen otras técnicas no recomendadas (algunas de ellas también incumplen la política de Google Play y no deben utilizarse). Además, los empaquetadores pueden transformar el código de la aplicación en código cargado de forma dinámica.
Cómo solucionar las alertas de "Modo de encriptación criptográfica no segura"
Revisa tu app para consultar la ubicación en la que se crea una instancia de Cipher. Los siguientes modos de configuración implican el uso de AES/ECB no seguro:
"AES"
"AES/ECB/NoPadding"
"AES/ECB/PKCS5Padding"
"AES/ECB/ISO10126Padding"
Por ejemplo, el siguiente código usa el modo AES/ECB de forma predeterminada porque se proporcionó "AES":
// La alerta de Console se refiere a este método:
public byte[] encryptionUtil(String key, String iv, byte[] plainText) {
Cipher cipher = Cipher.getInstance(“AES”); // Utiliza el modo AES/ECB de manera predeterminada
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), “AES”);
cipher.init(Cipher.ENCRYPT_MODE, keySpec, paramSpec);
cipher.init(Cipher.ENCRYPT_MODE, keySpec, paramSpec);
return cipher.doFinal(plainText);
}
Google recomienda que los desarrolladores usen "AES/GCM/NoPadding"
en lugar del modo no seguro antes mencionado.
Próximos pasos
- Actualiza la app por medio de los pasos destacados anteriormente.
- Accede a Play Console y envía una versión actualizada de tu app.
Durante ese tiempo, la app nueva o actualizada se encontrará en un estado de publicación pendiente hasta que se revise tu solicitud. Si no se actualiza correctamente la app, seguirás viendo la advertencia.
Estamos aquí para ayudarte
Si tienes preguntas técnicas sobre vulnerabilidades, publícalas en Stack Overflow con la etiqueta "android-security".