26 sep. 2018

Las 22 líneas de JS que permitieron el robo de datos de British Airways y Newegg

En RiskIQ han publicado el análisis post mortem del robo de datos que sufrió British Airways a finales de agosto: Inside the Magecart Breach of British Airways: How 22 Lines of Code Claimed 380,000 Victims. En concreto afectó a todas las personas que utilizaron la pasarela de pagos de la web principal y de la app móvil, entre el 21 de agosto y el 5 de septiembre.

Según parece un grupo denominado Magecart que ya había actuado antes consiguió inyectar su código en una librería de JavaScript que utiliza la web de British Airways, concretamente la Modernizr version 2.6.2.

Magecart es un grupo de ciberdelicuentes especializado en el robo de credenciales de pago mediante el uso de "skimmers digitales". Entre los ataques que se le han atribuido están el robo de credenciales de pago en Ticketmaster, British Airways y el caso reciente de Newegg.
Como muchas webs actualizan sus librerías a menudo si por alguna razón no pasan un chequeo de seguridad estricto puede que alguien la haya modificado con malas intenciones en otro lugar –por ejemplo el repositorio de código del que se descargan– en forma de actualización menor que pasa desapercibida – y ahí es cuando empiezan los problemas.

Las 22 líneas que producen el "milagro" son:
En esencia, el script es muy simple y muy efectivo. Aquí hay un desglose de lo que hace:
  • Enlazar los eventos mouseup y touchend al botón submitButton con el siguiente código de devolución de llamada:
    • Serializar los datos en un formulario con ID paymentForm en un diccionario
    • Serializar el elemento en la página con ID personPaging en el mismo diccionario que la información de paymentForm
    • Crear una cadena de texto de esta serie de datos
    • Enviar los datos en forma de JSON a un servidor alojado en baways[.]com
Los eventos mouseup y touchend se disparan cuando alguien suelta el mouse después de hacer clic en un botón o cuando alguien en un dispositivo con pantalla táctil (móvil) suelta la pantalla después de presionar un botón. Esto significa que una vez que un usuario presiona el botón para enviar su pago en el sitio comprometido de British Airways, la información del formulario de pago se extrae junto con su nombre y se envía al servidor del atacante.

En el caso de Ticketmaster, este script permitió a los atacantes obtener 40.000 usuarios y, el caso reciente de Newegg ha sido prácticamente igual. De hecho, teniendo en cuenta la fecha de realización del ataque y no la de publicación, este ataque ha sido anterior. En resumen, el proceso es el siguiente:
  • Los atacantes logran acceder al servidor donde se hospeda el código que interpreta la web de la víctima, a través de cualquier vector.
  • El atacante introduce un código Javascript fraudulento que, paralelamente al proceso de compra, envía los credenciales del usuario a un servidor controlado por los atacantes.
  • El ataque persiste mientras el código no es detectado.
Es la empresa propietaria de la web/app quien debe garantizar la seguridad cuando se le proporcionan datos sensibles. Este caso demuestra que esto puede suceder en sitios web y apps de todo tipo: desde los relativamente sencillos como los gestionados con WordPress a las grandes megacorporaciones que hacen grandes desarrollos pero dependen de código externo como son estas librerías.

Es algo que requiere aumentar las medidas de seguridad especialmente cuando se manejan sistemas de pago, datos personales o cuentas con contraseñas.

Fuente: Microsiervos | The Next Web | El Confidencial

0 comentarios:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info
Si vas a dejar una consulta, procura tener habilitado tu perfil en Blogger o deja una forma de contacto.

Gracias por comentar!