android android-studio android-studio-2.1

Advertencia de Android Studio cuando se utiliza PackageManager.GET_SIGNATURES



android-studio android-studio-2.1 (1)

Necesito obtener la firma del paquete. Así que lo consigo usando este código:

Signature[] sigs = c.getPackageManager().getPackageInfo(c.getPackageName(), PackageManager.GET_SIGNATURES).signatures;

Pero Android Studio me da esta advertencia:

Leyendo firmas de aplicaciones desde getPackageInfo: Las firmas de aplicaciones podrían ser explotadas si no se validan adecuadamente; Vea la explicación del problema para más detalles.

La validación inadecuada de las firmas de la aplicación podría provocar problemas en los que una aplicación maliciosa se envía a la Play Store con su certificado real y un certificado falso y obtiene acceso a la funcionalidad o información que no debería haber debido a que otra aplicación solo verifica el certificado falso. e ignorando el resto. Asegúrese de validar todas las firmas devueltas por este método.

¿Qué significa validar las firmas en este caso? Voy a comprobar las firmas contra un servidor para asegurarme de que coincidan, ¿es eso lo que quieren decir?

Tras las pruebas locales, todo lo que se obtiene es un único Integer negativo, y no una array como lo tendría el código.


El rastreo del texto emergente conduce a este fragmento de código fuente de Android Studio.
En el mismo archivo hay una línea que contiene un enlace al recurso externo.
Un seguimiento adicional conduce a esta presentación sobre la vulnerabilidad de "ID falsa".

Descripción de un problema :

El problema es que cuando Android construye la cadena de confianza, el proceso de verificación solo compara el "sujeto" en lugar de comparar la clave real con la proporcionada dentro de los detalles del firmante del certificado. Como resultado, un atacante puede jugar con la cadena de confianza y reclamar ser firmado por una parte, sin que la parte realmente firme.

Debido a este error, se genera una cadena de certificados incorrecta y puede incluir certificados legítimos, que están incrustados en APK pero no se utilizaron para firmar la aplicación.

Aquí está la confirmación del código fuente de Android, que evita el uso de esta vulnerabilidad. Eso significa que si el dispositivo tiene Android 4.4 el problema no está ocurriendo. Cuando se ejecutan dispositivos de API de Android inferiores, puede causar daño.