miércoles, 15 de febrero de 2012

Ojo con la Google Wallet

Si es usted usuario de Google Wallet, cuidado, su dinero puede estar en peligro.  Ah, te has dado cuenta tú también ...

Recientemente, Google ha inventado una aplicación llamada Google Wallet para poder controlar los pagos por medio del móvil.  Google Wallet está diseñado para ser utilizado con los móviles que tengan capacidad NFC.  Eso significa Near Field Communications, y es una actualización del sistema RFID que tan criticado fue en el pasado.  La idea es convertir el móvil en una especie de tarjeta de crédito.  De conseguirlo, darían un paso de gigante, ya que ahora la gente usa el móvil para todo, y podría incluso permitirles entrar en el campo de los micropagos.

Pero claro, hay que hacer las cosas bien y con cuidado.  La tecnología NFC permite a un atacante espiar los datos del usuario, así que hay que meter cripto en el asunto.  La información sensible como el número de tarjeta de crédito es almacenada de manera cifrada en un elemento llamado SE (Secure Element), protegido contra todo tipo de espionaje electrónico, y el acceso al SE está fuertemente controlado.  Para poder acceder al SE, el sistema Google Wallet pide al usuario un número PIN de cuatro dígitos, y aunque un ladrón se llevase nuestro móvil del bolsillo, necesitaría ese PIN para poder darse un atracón de chuletones a nuestra costa.

Un análisis realizado en diciembre por viaforensics.com muestra un nivel de seguridad elevado.  Intentaron un ataque de intermediario (MITM, Man In The Middle), sin éxito. Tampoco consiguieron obtener información importante del propio móvil.  Pero Android es un sistema operativo basado en Linux, y como tal es posible obtener acceso de administrador ("root access"); no es algo que las operadoras hagan de forma habitual, pero un usuario con conocimientos podría obtenerlo, por ejemplo, para hurgar en las tripas de su móvil, configurarlo de forma especial o instalar ciertos programas.

Cuando los investigadores "rootearon" el móvil, inmediatamente comenzaron a recuperar información sobre las transacciones efectuadas: fecha, nombre del usuario, límite de crédito, tipo de tarjeta de crédito vinculada, etc.  No consiguieron información sensible, como el número de cuenta corriente, el de la tarjeta o el PIN (que se guarda en la SE, es decir, fuera del acceso normal), así que de momento todo va bien.  

Pero otros grupos se envalentonaron y comenzaron sus propios análisis.  Uno de ello, de la web zvelo.com, puso los pelos de punta.  Consiguieron recuperar el PIN.

Para ser justos con Google, hay que reconocer que lo intentaron hacer bien.  En lugar de guardar el PIN en el móvil, lo que hicieron fue lo siguiente: el usuario teclea el PIN, Google Wallet lo pasa por una función hash, y el resultado se compara con otro valor hash guardado en Wallet.  La función hash usada era la robusta SHA256, y usaron el truco de "sal" (una pequeña cadena de datos que se une al PIN antes de someterlo a la acción del hash); es decir, hicieron bien sus deberes.

El problema es que el PIN tiene cuatro dígitos solamente, es decir, solamente hay 10.000 posibles valores del PIN ... y 10.000 posibles valores de hash.  Los investigadores encontraron el valor de la "sal" y se limitaron a probar los 10.000 posibles valores de hash(PIN+sal), uno para cada valor del PIN.  De ese modo, cuando encuentran un PIN "hasheado" en Google Wallet, ya saben a qué PIN pertenece.

Google Wallet permite solamente cinco intentos de introducción de PIN; al quinto fallo, el sistema se bloquea.  Pero el ataque zvelo.com no necesita ir probando, ya que basta con leer el hash y determinar a qué PIN corresponde.  Nuevamente, este ataque requiere acceso root.  Incluso los usuarios que no juegan con sus móviles (no al juego de destriparlos, quiero decir) podrían estar en peligro, si alguien le "pide prestado" su móvil y le abre acceso root.

Sorprendentemente, parece que Google se lo ha tomado de forma muy responsable.  Y digo sorprendentemente, porque lo habitual en estos casos es que la empresa perjudicada se haga el sueco, niegue la mayor y/o amenace con demandas judiciales.  No parece haber sido el caso.  Google ha tomado muy buena nota de ello, y mientras prepara sus actualizaciones ha emitido un comunicado en el que reconoce y describe el problema. La respuesta podría pasar por almacenar la información vital (PIN y sal) en la propia SE, así como impedir o hacer más difícil el acceso root.

Cualquier solución tendrá sus problemas.  En primer lugar, evitar acceso root no será nada fácil, sobre todo si tenemos en cuenta que los móviles que ahora llevan Wallet son el Galaxy Nexus y Nexus S, que se venden como "móviles de desarrolladores," esto es, gente con conocimientos técnicos altos, mucha curiosidad y ganas de comprobar hasta dónde puede llegar su móvil.  Un segundo problema es el legal: si Google impone una solución técnica al sistema, los bancos pueden declinar la responsabilidad en el caso de que algo salga mal.

Para mayor desesperación de Google, pronto se desveló un segundo ataque.  Es tan estúpido que apenas se le puede llamar hacking.  El problema es que Google Wallet está ligado al móvil, no a la cuenta de Google, así que cuando el ladrón.  Digamos que un ladrón le ha robado su móvil, lector.  Lo único que tiene que hacer es entrar en Ajustes y borrar los datos de la aplicación Google Wallet. A continuación, abre Google Wallet.  Como el PIN estaba guardado en los datos borrados, la aplicación actuará como si estuviese recién instalada, así que ¡le pedirá un nuevo PIN!  Sí, así es: borre los datos de Wallet y ábrala, el sistema le pedirá un nuevo PIN, usted mete el que más le guste, y voilá.  Como los datos de la cuenta corriente y la tarjeta de crédito estaban en el SE, no han sido borrados.  A comprarse el Bugatti Veyron se ha dicho, que paga la víctima.  Y lo peor de todo es que no necesita acceso root.

En estos momentos, más de un ingeniero de Google está sudando la gota gorda intentando resolver el problema.  Lo conseguirán o no, eso ya lo veremos.  Pero, como mínimo, hemos de aplaudir el comportamiento de Google.  No es tan común ver a una gran empresa agachar la cabeza y reconocer "sí, es cierto, la cagamos, lo siento, estamos arreglándolo, aquí tienen mi número si tienen algún problema."  Mientras tanto, si usted es usuario de Google Wallet ... no lo rootee, por la cuenta que le trae.

1 comentario:

  1. Un artículo delicioso y muy bien explicado. Algunas reflexiones en voz alta son que hasta donde yo sé, NFC es ampliamente usado (no para pagar, sino para tema de permisos y accesos a ciertas instalaciones, por ejemplo) y yo pensaba que ya estaría dominada la seguridad.

    El segundo "hackeo", que es más ingeniería social, es una prueba más de que hay que tomar medidas básicas en el móvil, como poner un pin que haya que activar cada vez que el móvil se autobloquea o algo así, ya que muchos profesionales tienen más info en el móvil que en su portátil, o incluso fotos personales.

    Si Google, que en su categoría de Todopoderoso, ha decidido arreglar el fallo, será porque apuesta seriamente por esta herramienta, y no será como otras muchas que han desaparecido en 2011.

    No me queda claro cómo se aplicó el ataque MITM. ¿Fue interceptando señales inalámbricas?

    Gran post, de nuevo!

    ResponderEliminar