Aviso 

Este documento es una versión reducida de la investigación original. Desafortunadamente la falla presentada no ha sido solucionada todavía. La empresa fue notificada y se habló sobre el tema. Sin embargo, el fallo no puede ser corregido hasta el momento que se publicó este documento.

Línea de tiempo

01–20–2018: Vulnerabilidad Descubierta
01–22–2018: Re-confirmación en diferentes puntos de venta
02–08–2018: Equipo de Wells Fargo fue notificado 
02–09–2018: Wells Fargo recibió el informe y el PoC
02–09–2018: Reunión programada
02–12–2018: Reunión – Se habló de ataques de repetición contra NFC
10–05–2018: Notificación al equipo de Wells Fargo sobre publicación
11–20–2018: Informe del fallo publicado en websec.mx

Introducción

Wells Fargo es uno de los bancos más importantes de Estados Unidos. El banco implementa diferentes tecnologías para facilitar la interacción de los clientes con sus sistemas y con su dinero. Una de estas características es la tecnología de billetera digital.

El servicio de cartera digital es una función que se integra en la aplicación de Android de Wells Fargo para realizar pagos sin contacto usando NFC (Near Field Communication). El usuario debe registrarse al servicio y activar las tarjetas para poder realizar compras con esta tecnología. Después del registro, el sistema le pedirá que reemplace el método de pago NFC en el dispositivo usando la cartera digital de Wells Fargo; esto sucederá cuando el usuario intente usar la aplicación NFC para hacer un primer pago por primera vez.

La billetera digital de Wells Fargo Wallet implementa un proceso de tokenización peculiar: esta tokenización se realiza en la nube, compartiendo debilidades en aplicar rasgos de seguridad del protocolo como Google Pay (https://tpx.mx/blog/2018/google-pay-replay-attack.html) y Samsung Pay (https://www.csoonline.com/article/3132360/mobile-security/researcher-unveils-second-samsung-pay-vulnerability.html). 

Análisis de una transacción APDU de billetera digital de Wells Fargo

(Se maneja el XX XX como número de tarjeta de crédito virtual)

T: Terminal / PoS y W: Respuestas de billetera digital de Wells Fargo

v4.3.2p
ATS:

T: 00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00
W: 6F 34 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 A5 22 BF 0C 1F 61 1D 4F 07 A0 00 00 00 03 10 10 50 0B 56 69 73 61 20 43 72 65 64 69 74 87 01 01 9F 2A 01 03 90 00
T: 00 A4 04 00 07 A0 00 00 00 03 10 10 00
W: 6F 3E 84 07 A0 0 00 00 03 10 10 A5 33 50 0B 56 69 73 61 20 43 72 65 64 69 74 9F 38 18 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 9C 01 9F 37 04 BF 0C 08 9F 5A 05 10 08 40 08 40 90 00
T : 80 A8  F6 20 C0 00 00 00 00 00 00 01 00 00 00 00 00 00 08 40 00 00 00 00 00 08 40 17 11 18 00 06 1A B6 2C 00
W: 77 66 82 02 00 40 94 04 08 03 03 00 57 13 XX XX D2 40 92 01 74 68 00 00 01 04 9F 5F 34 01 00 9F 10 20 1F 43 28 00 A0 00 00 00 00 00 00 00 07 07 68 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9F 26 08 AB B3 1B 5F F1 C1 3C C0 9F 36 02 00 01 9F 6C 02 01 00 9F 6E 04 23 8C 00 00 9F 27 01 80 90 00
T: 00 B2 03 0C 00
W: 70 13 9F 07 02 00 80 5F 28 02 08 40 9F 19 06 04 00 10 00 00 56 90 00
T: 80 CA 9F 17 00
W: 69 85
T: 80 CA 9F 36 00
W: 69 85

El Fallo

Cualquier plataforma de pago NFC puede verse comprometida con un ataque especializado que implemente retransmisión de NFC, pero un ataque de repetición podría contenerse implementando un uso correcto de las medidas de seguridad del protocolo NFC.

Sin embargo en la cartera digital de Wells Fargo; al igual que las otras carteras NFC basadas con prevalidación en nube: cuando un individuo intenta implementar la aplicación para realizar una compra, un atacante malintencionado podría interceptar la transacción, obtener el token que contiene información válida y re-utilizarlo en un ataque de repetición. Incluso un atacante podría usar esta información válida después de unas horas e incluso con otro tipo de dispositivo.

De manera predeterminada, el marco temporal de expiración del token que se implementa en la cartera digital de Wells Fargo es inadecuado y peligroso. Por ejemplo, si algo sucede durante una transacción y si de alguna manera la transacción no se realiza, ese token seguirá activo y válido para ser usado con una aplicación o protocolo de terceros; como sería el protocolo Visa MSD (datos de banda magnética).

Es importante mencionar que cuando un usuario intenta realizar una compra, la aplicación de Wells Fargo nunca notifica cuando la aplicación falla durante la transmisión o conectividad. Incluso, es difícil saber si la transacción ya ha comenzado. Estos comportamientos “inapropiados son adecuados” para que un atacante malintencionado intercepte la comunicación APDU (Unidad de datos del protocolo de aplicación) y obtenga información valiosa sin alertar al usuario afectado:

El escenario

Utilizando ingeniería social, una terminal falsa o un punto de venta alterado, un atacante podría interceptar una transacción. Para que clonar una tarjeta cuando se pueden clonar muchas transacciones de diferentes tarjetas?

Imaginemos que un usuario malintencionado intercepta un token como XX XX D2 40 92 01 74 68 00 00 01 04 9. Este podrá hacer un pago fraudulento con solo agregar esos datos a una aplicación de Android como SwipeYours para generar una transacción MSD.

Prueba de concepto:

En este PoC, intercepté un token de la billetera digital de Wells Fargo. Lo copié y pegué en la aplicación SwipeYours para Android. Luego, probé la aplicación SwipeYours para ver si funcionaba en el lector NFC. Después de esto, realicé una transacción real en una terminal genuina usando SwipeYours (pero podría hacerse con otro dispositivo) implementando el token de la billetera digital de Wells Fargo.

Contramedidas

Como clientes, solo active el servicio de la billetera digital de Wells Fargo cuando sea necesario o desactiva NFC en su dispositivo. Ya que atacante podría interceptar un token de su billetera digital y usted no recibirá una notificación o alerta.   

Necesitamos una actualización en el protocolo del sistema de pagos para evitar los ataques de repetición. Trabajar en la caducidad del token debería reducir drásticamente el vector de ataque. Además, el servicio de billetera digital de Wells Fargo deberá de notificar a su cliente cuando una transacción inicialice o cuando finalize. Sin mensajes apropiados o notificaciones de alerta, un atacante podría tener la ventaja de interceptar información valiosa.

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