
Al ejecutar `./signpass -v 805161206.pkpass` por fin pude dar con el fallo, había un problema en la entidad que firmaba el pass, el certificado había expirado. Conociendo ya el problema, era tan fácil como volver a firmar el paquete con la herramienta que acababa de descargar para tener un pass nuevo. Solo debía eliminar los ficheros ‘signature’ y ‘manifest.json’, generar un certificado con mi cuenta de dessarrollador e indicar en el ‘pass.json’ el identificador de ese certificado junto al identificador de mi equipo de desarrollo.
Al hacerlo, había conseguido generar un nuevo paquete .pkpass con un certificado renovado. Al firmarlo, me di cuenta que el único elemento importante para generar el pass es el certificado creado para el pass, por lo que la demás información podía ser alterada sin una comprobación al fichero original. Para ello fui echando un vistazo al fichero ‘pass.json’ para ver qué más se podía modificar. Volviendo a la documentación, podemos ver que pass.json es un diccionario JSON con clave valor, y dentro del apartado Top-Level Keys podemos encontrar todas claves para modificar el pass. Estas claves se dividen en las top-level y lower-level.
Así pues, podemos comprobar que es muy sencillo modificar cualquier pass que nos envíen a nuestro terminal, por lo que la información aquí presente no debería utilizarse como método de autenticación si no es acompañada por un código de barras o QR generado a través de una clave única. Siguiendo estas indicaciones, los passes de iOS se convierten en una forma muy cómoda y segura de almacenar entradas de eventos o identificación personal en determinados establecimientos.
Publicado en Seguridad Apple - Google+ - RSS - Eleven Paths

Continúar leyendo...