TransWikia.com

¿Puedo explotar el método de verificación java.security.Signature?

Stack Overflow en español Asked by Adalher2478 on February 20, 2021

Estoy tratando de encontrar vulnerabilidades en un sistema que instala aplicaciones en un dispositivo Android patentado. Ese sistema usa java.security.Signature.
Básicamente, para instalar una aplicación, se requieren dos archivos:

  1. Archivo de paquete cifrado que contiene el archivo o la actualización de la aplicación (junto con un script de shell pero que no es relevante aquí).
  2. Un archivo de firma que contiene la suma de verificación cifrada del archivo de paquete cifrado.

Aquí hay una descripción general del método en cuestión:

  • Obtiene la clave pública.

  • Obtiene la suma de comprobación del archivo de paquete cifrado.

  • Crea una instancia de Firma e inicializa la verificación.

  • Verifica que los bytes del archivo sig coincidan con la suma de verificación del archivo de paquete cifrado.

     private boolean verificarFirma(String ArchivoDePaqueteCifrado, String ArchivoDeFirma) {
        try {
            PublicKey llavePublica = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(new PemReader(new InputStreamReader(this.mContext.getResources().openRawResource(R.raw.public_key))).readPemObject().getContent()));
            byte[] sha512sum = FileHelper.getFileChecksumAsBytes(ArchivoDePaqueteCifrado, McElieceCCA2KeyGenParameterSpec.SHA512);
            Signature firma = Signature.getInstance("SHA512withRSA/PSS");
            firma.initVerify(llavePublica);
            firma.update(sha512sum);
            boolean resultado = firma.verify(FileHelper.readAllBytes(ArchivoDeFirma));
            return resultado;
        } catch (Exception e) {
            return false;
        }
    }
    

¿Hay alguna manera de explotar este método si se tiene la clave pública?

Gracias

Nemo

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP