Ataque contra el reciclado de credenciales en PayPal

Tornillos

Si hay un invariante en ciberseguridad es que da igual que seas grande o pequeño puedes tener incidentes de seguridad. En PayPal accounts breached in large-scale credential stuffing attack nos hablan de un ataque para conseguir credenciales de usuarios de PayPal. El método utilizado es viejo, pero eficaz, si uno tiene tiempo y ganas: ir probando usuarios y contraseñas obtenidos de diversos ataques anteriores, donde ya se han divulgado los datos.

Credential stuffing are attacks where hackers attempt to access an account by trying out username and password pairs sourced from data leaks on various websites.

La cuestión es que cuando tienes un número de usuarios importante es bastante seguro que habrá algunos de ellos que reciclen sus credenciales (esto es, que usen las mismas en varios sitios).

El ataque se produjo en diciembre del 2022 y se vieron afectados casi 35000 usuarios.

According to the data breach reporting from PayPal, 34,942 of its users have been impacted by the incident. During the two days, hackers had access to account holders’ full names, dates of birth, postal addresses, social security numbers, and individual tax identification numbers.

Parece raro que PayPal no se diera cuenta antes del ataque, pero a veces las cosas son así.

Como medida de prevención, en este caso, está clara: utilizar doble factor de autentificación. Ya sabemos que aún así habría gente afectada, pero seguramente muchos menos.

Moreover, PayPal advises users to activate two-factor authentication (2FA) protection from the ‘Account Settings’ menu, which can prevent an unauthorized party from accessing an account, even if they have a valid username and password.

Y, por supuesto, no usar la misma contraseña en varios sitios.

Métodos alternativos de detección de bots

Robot

A veces las ideas más simples son las más útiles. En Pwned or Bot Troy Hunt nos contaba omo su base de datos de cuentas robadas puede servir para detectar usuarios leg´timos: si tu correo nunca ha aparecido en un volvado de datos de algún problema de seguridad de una empresa, es bastante probable que no sea legítimo, o que haya sido creado recientemente para tratar de engañar a alguien.

If an email address hasn’t been seen in a data breach before, it may be a newly created one especially for the purpose of gaming your system.

Está claro que el argumento tiene fallos: puedes tener tu correo muy bien protegido, o ser un usuario nuevo que lo ha creado recientemente, … No estar en uno de esos listados es un indicio, pero no garantiza nada.

Absence of an email address in HIBP is not evidence of possible fraud, that’s merely one possible explanation.

Por el contrario, si un correo está en alguna de las divulgaciones de datos robdos en el pasado, podemos decir con un nivel de confianza alto, que es un correo legítimo.

However, if an email address has been seen in a data breach before, we can say with a high degree of confidence that it did indeed exist at the time of that breach.

Al final, claro, no se trata de un indicador perfecto, sino un elemento más a la hora de evaluar la probabilidad de que estemos ante una dirección de correo más o menos falsa, que trata de abusar de nuestro servicio.

Think of breach history not as a binary proposition indicating the legitimacy of an email address, rather as one of assessing risk and considering “pwned or bot” as one of many factors

Curioso.

Inyección de fallos en eBay para conseguir sistemas más robustos

Mi nueva pistola

Ya hemos hablado algunas veces de fuzzing para tratar de mejorar la calidad de las aplicaciones: la idea es probar a enviar entradas aleatorias (basura) a nuestras aplicaciones y estudiar como fallan. Traemos hoy aquí un artículo donde se habla de How eBay’s Notification Platform Used Fault Injection in New Ways. No se trata exactamente de inyección de entradas aleatorias, pero sí de provocar fallos de manera deliberada, con el objetivo de observar cómo se comporta la plataforma.

Fault injection is the process by which we deliberately introduce faults into the system. We can observe the system behavior with the injected faults to identify the weakness of the system.

Como se trata de una plataforma de la que dependen otras, el objetivo es ver qué sucederá al introducir los problemas cuando estos sistemas reciban las respuestas defectuosas provacadas por los fallos.

Any faults in these dependent services will directly impact the stability of the system, so it’s quite valuable to run experiments in the system containing the failures of these dependencies, in order to understand the behaviors and mitigate any weaknesses.

El tipo de fallos de los que estamos hablando son muy diversos: desde fallos de red (desconectar la conexión temporalmente, por ejemplo), llenar un sistema de ficheros (para provocar fallos de falta de espacio), a nivel de infraestructura.

For example, to introduce the http disconnection or timeout error, one option is to turn off the network or shut down the downstream services temporarily; to introduce the disk full error, one option is to create a bunch of files in the file system.

Pero también podemos pensar en crear fallos a nivel de la aplicacion. En lugar de desconectar una interfaz de red, insertar en la biblioteca correspondiente algún retraso significativo. O, directamente, un código de respuesta de error.

For example, to inject the http timeout fault, we add the latency in the http client library; to simulate the internal service error, we simulate the response code with 500 http status code. The faults are restricted to the API level and do no harm to the underlying infrastructure resources.

Para conseguir este tipo de fallos lo que se hace es instrumentar las bibliotecas correspondientes (esto es, modificarlas para que contengan las respuestas que nos interesa que aparezcan).

To simulate the faults for the client libraries by instrumentation is challenging. Our main task is to force the invoked methods to experience failures. One method to do this is to inject failure directly into the method, by, for example, throwing the exception in the method body.

Fundamentalmente, se utilizan tres métodos: bloquear o interrumpir la lógica del método, cambiar el estado de los parámetros del método, o reemplazar el valor de los parámetros del método.

  1. Block or interrupt the method logic
  2. Change the state of method parameters
  3. Replace the value of method parameters

Para poder manejar todo esto con cierta soltura parece imprescindible poder cambiar el contexto con facilidad, y para eso es necesaria una buena gestión de configuraciones.

To dynamically change the configuration for the fault injections in the runtime, we have implemented a configure management console in the Java agent.

Muy interesante.

¿En quién confían las inteligencias artificiales?

Muro y decoración

El tema de la confianza es un clásico en la informática (recordemos ¿Te puedes fiar del vendedor de tu ordenador? o ¿En quién confías? El compilador). Se trata de que manejamos tecnología tan compleja que el engaño puede estar en cualquier parte de la cadena.

También hemos hablado del ataque a los datos que se utilizan para entrenar a las inteligencias articiales, en Ataques a los datos de entrenamiento de inteligencias artificiales y nos viene bien recordarlo para reunir ambos temas, como hizo Ross Anderson en ML models must also think about trusting trust.

Ellos hablan de insertar un troyano o una puerta trasera en un modelo de aprendizaje de máquina a través del compilador.

Our latest paper demonstrates how a Trojan or backdoor can be inserted into a machine-learning model by the compiler.

Se trata, nos dice, de hacer que el compilador reconozca el tipo de modelo que está compilando (procesado de imágenes, texto, ..) y con ellos imaginar un mecanismo para insertar nuestros ataques.

The answer is yes. The trick is for the compiler to recognise what sort of model it’s compiling – whether it’s processing images or text, for example – and then devising trigger mechanisms for such models that are sufficiently covert and general.

Nada es tan fácil, ni tan bueno como parece.

Software libre y entrenamiento de las inteligencias artificiales

Muro y decoración

En Open Source Initiative expands its role to AI and machine learning nos hablan de cómo esta inciativa (OSI) está empezando a prestar atención a otros usos de los programas, relacionados con la inteligencia artificial.

La idea del software libre es que se puede utilizar de la forma que se considere oportuna.

It all boils down to the idea that with open source, you get the right to use the software code any way you want.

Pero se observa una tendencia de las empresas de comenzar con licencias libres para posteriormente cambiarlas, quedándose con su trabajo y el de la comunidad (porque consiguen la cesión previa, claro).

They build up their business and code over five to 10 years. Along the way, they collect contributor license agreements (CLA) that give the company the rights to their code. Then they change the license and take away those rights.”

Pero también hay otros usos en los que no se había pensado anteriormente: cuando ese código se utiliza para entrenar inteligencias artificiales.

Moving forward, the OSI will also address the roles that machine learning (ML) and Artificial Intelligence (AI) play in both using and building open-source software. This has become an increasingly urgent issue.

Pero no se trata sólo de una cuestión de legalidad, sino también de equidad y justicia con esos desarrolladores.

Maffulli thinks, “Legally, it appears that GitHub is within its rights.” That said, don’t get “lost in the legal weeds discussing if there is an open-source license issue here or a copyright issue. This would miss the wider point. There is a fairness issue that affects the whole of society, not just open-source developers.”