Ataque de Repetición en Google Pay

Google Pay es la nueva versión de Android Pay. Esta aplicación implementa criptogramas validados en nube para realizar transacciones NFC(Comunicación de Campo Cercano). En marzo, encontré un fallo importante en la aplicación que podría ser aprovechado por los usuarios malintencionados para interceptar y realizar transacciones fraudulentas. La solución aplicada del proveedor, en este caso, Google Pay, fue que “mi informe se ha cerrado sin proporcionar una solución”.

 

Vulnerabilidad

El protocolo NFC es la tecnología que Google Pay integra para realizar pagos digitales. Por defecto, el protocolo tiene diferentes capas de seguridad para evitar o proteger a sus clientes contra ataques de repetición o degradación. Sin embargo, la implementación actual de Google Pay no aplica esta contramedida.

Cuando un usuario desea realizar una transacción NFC con Google Pay, un atacante podría capturar la transacción. El atacante puede manipular la transacción interceptada y reutilizarla en una diferente ubicación y con diferente dispositivo. Entonces, esa transacción interceptada se podría guardar y reproducir más tarde con otro dispositivo para realizar un pago, gastando el dinero del cliente original de Google Pay.

Google Pay Tokens

Cada transacción de Google Pay es única. Lo que significa que cada token(tarjeta virtual) es único también. Si una transacción no se completa en un PoS(Punto de Venta) o terminal real, los tokens se seguirán incrementando de igual manera.

Contenido va aquí

Token 1: 12 34 56 78 12 34 56 78 D2 40 32 01 48 54 00 00 03 71 6F

Token 2: 12 34 56 78 12 34 56 78 D2 40 32 01 48 54 00 00 04 14 1F

Importante: si no se usa un token en una transacción real, ese token podría usarse más adelante porque no está caducado o eliminado, lo que significa que un usuario malintencionado podría implementarlo con otro dispositivo como NFCopy.

El AIP

El Perfil de Intercambio de Aplicaciones (82) se encarga de indicar qué nivel de seguridad se implementará en la transacción NFC para validar una transacción. Básicamente, el AIP es una etiqueta en la comunicación APDU que le dice al PoS qué tipo de seguridad admite el dispositivo móvil en la transacción NFC. Este tipo de información se genera en el proceso de comunicación entre Google Pay y el PoS utilizando el protocolo APDU.

 

El problema

Si un atacante intercepta una transacción de Google Pay, este podría utilizar una tercera aplicación como SwipeYours de la tienda Google Play para generar una transacción en modo de banda magnética. Esta aplicación de Android generará una transacción de banda magnética (Visa MSD) al cambiar los valores de AIP en la conexión NFC con el nivel mínimo de seguridad.

Debido a que el token interceptado de Google Pay implementa un criptograma validado en nube y el sistema EMV acepta este tipo de datos, la transacción puede realizarse usando este mecanismo.

 

Hardware

¿Qué tan difícil es diseñar y crear una herramienta que intercepte una transacción de Google Pay y la vuelva a repetir? Un usuario malintencionado puede programar un Arduino y una tarjeta PN532 para leer la transacción y luego emularla en la terminal. El costo de este dispositivo estaría en menos de 10 dólares.

 

Rango del daño

Este problema en la red de pagos podría afectar a diferentes carteras NFC y así mismo a diferentes bancos si están aplicando la metodología “Comportamiento previsto” y lo que es peor, esto también podría afectar a diferentes países.

 

Prueba de concepto

En este PoC, estoy ejecutando un Raspberry Pi Zero W con un lector NFC Acr122u que también funciona como emulador para comportarse como tarjeta inteligente después de que se intercepta un token de Google Pay.

 

 

Cronograma:

  • 2018-03-17: Descubierto
  • 2018-04-10: Prueba en diferente PoS
  • 2018-04-21: Se notificó al equipo de Google Pay
  • 2018-04-21: Google recibió mi informe del fallo
  • 2018-04-23: Se aceptó el fallo – Prioridad asignada: 1 Gravedad: 2
  • 2018-04-26: Comentarios de Google, “El fallo no califica para el bug bounty”
  • 2018-07-06: Comentarios de Google, “No se solucionará (Comportamiento previsto) “
  • 2018-07-24: Informe público (Informe inicia en inglesl: https://tpx.mx/blog/2018/google-pay-replay-attack.html)

Nota: Contactando con Google Pay, la respuesta recibida fué que no se corregirá el problema ya que se trata de un comportamiento intencionado.

Artículo escrito por Salvador Mendoza (https://twitter.com/Netxing) ahora en Español para La Comunidad DragonJAR