Un ataque para viajar todo lo que se quiera en el metro de Boston

https://i.imgur.com/5UjaUYD Uno se sorprende de que todavía sucedan estas cosas (bueno, en realidad no, porque pasan con mucha frecuencia) pero tenemos lo que tenemos. Proteger algunos sistemas tiene sus propias dificultades, porque a veces supone adaptar dispositivos físicos, como pueden ser las tarjetas, los lectores, y otras infraestructuras, en un sistema de transporte. En Teens Hacked Boston Subway Cards to Get Infinite Free Rides—and This Time, Nobody Got Sued hablan del caso del metro de Boston donde unos quinceañeros consiguieron replicar un suceso de hace 15 años donde unos estudiantes ya habían conseguido viajar de manera gratuita en el metro de Boston. Y es que la historia se repite y estos quinceañeros consiguieron reproducir el ataque y mejorarlo, incluyendo la posibilidad de añadir cualquier cantidad de dinero a sus tarjetas, transformarlas en tarjetas de estudiante con descuento o incluso en una tarjeta de empleado con, claro, viajes gratis.

So the four teens extended other research done by the 2008 hacker team to fully reverse engineer the CharlieCard, the RFID touchless smart cards the MBTA uses today. The hackers can now add any amount of money to one of these cards or invisibly designate it a discounted student card, a senior card, or even an MBTA employee card that gives unlimited free rides. “You name it, we can make it,” says Campbell.

En esta ocasión, y por diferenciarse de la anterior, no sólo no han intentado bloquear la difusión de la investigación, sino que les han invitado a las oficinas del mentro a explicar cómo lo habían hecho. También, eso sí, les han pedido que expliquen poco alguna parte delicada, para que no sea tan fácil de reproducir.

El truco parece basarse en el análisis de varias tarjetas para observar en qué se parecen y en qué se diferencian, y así descubrir qué cambiar y cómo.

Muy interesante.

Vale la pena optimizar en el momento adecuado

En orden

Hay una cita por ahí que parece que dijo el informático Donal Knuth y que se suele escribir como: ‘la optimización prematura es el origen de todos los males’

premature optimization is the root of all evil

Bien entendido, claro, que se refería al contexto de la programación y el desarrollo de programas (aunque seguramente se pueda aplicar en más casos). Sin embargo, también es cierto que en algún momento hay que optimizar (sobre todo para programas o bibliotecas de uso amplio, donde una pequeña mejora puede hacer que nuestros programas sean mucho mejores).

El año pasado alguna gente de Google publicaron Faster sorting algorithms discovered using deep reinforcement learning donde se hace justamente eso: con aprendizaje reforzado profundo tratan de obtener versiones mejores de los algoritmos que se utilizan habitualmente.

El resultado es interesante, pero lo que más llamó mi atención (sobre todo porque lo contamos en clase, en una versión mucho más grosera y poco refinada) como el manejo de los problemas de tamaño más pequeño puede ser el que marque la diferencia. En este sentido, se pueden ver en el artículo análisis bastante refinados de código en c++, sus versiones en ensamblador y cómo algunas instrucciones pueden ser importantes a la hora de obtener soluciones eficientes.

Por ejemplo, en la figura 4 se puede ver cómo el algoritmo original proponía evaluar la longitud de lo que se quería ordenar y según fuera 2, 3, ó 4, se lanzaba un algoritmo diferente. La propuesta de AlphaDev, sin embargo, primero mira si el tamaño es 2 y lanza un algoritmo especializado, si no, lanza el algoritmo para ordenar 3 elementos; si la longitud ya era 3 el vector ya estará ordenado, y si no lo era, llama a un algoritmo especializado en ordenar 4 con los 3 primeros ya en orden.

A flow diagram of the variable sort 4 (VarSort4) human benchmark algorithm. In this algorithm, a sequence of unsorted numbers are input into the algorithm. If the sequence length is four, three or two numbers, then the corresponding sort 4, sort 3 or sort 2 sorting network is called that sorts the resulting sequence. The result is then returned and output by the function. b, The VarSort4 algorithm discovered by AlphaDev. This algorithm also receives sequences of length four, three or two numbers as input. In this case, if the length is two, then it calls the sort 2 sorting network and returns. If the length is three then it calls sort 3 to sort the first three numbers and returns. If, however, the length is greater than three, then it calls sort 3, followed by a simplified sort 4 routine that sorts the remaining unsorted number. It is this part of the routine that results in significant latency savings.

No sé si las palabras (o el gráfico) ayudan a entender bien de lo que estamos hablando pero, desde luego, nos dan una pista de cómo pequeños detalles pueden marcar una diferencia.

Se puede leer un texto de carácter más divulgativo en AlphaDev discovers faster sorting algorithms

Lo que todo programador debería saber sobre la memoria

Memoria

La semana pasada decía que nadie lee esto y algunas personas me dijeron que sí (hasta alguna errata habían detectado). Reconforta mucho recibir esos comentarios y la realimentación, ¡Muchas gracias!

Programamos con un conjunto de suposiciones bastante básicas (acerca del sistema, el almacenamiento, la memoria, el procesador, …), pero a veces puede ser interesante conocer un poco mejor cómo funcionan las cosas para sacar partido (o no meter la pata) de lo que estemos usando.

Sobre la memoria podemos leer What every programmer should know about memory, Part 1 que ya tiene unos años, pero que nos puede dar pistas interesantes. Hay hasta nueve partes, que se pueden ver enlazadas al final del texto, justo antes de los comentarios (se echan de menos, ¿eh? Casi nadie los mantiene por la selva en que se ha convertido la red en algunos aspectos).

In the early days computers were much simpler. The various components of a system, such as the CPU, memory, mass storage, and network interfaces, were developed together and, as a result, were quite balanced in their performance. For example, the memory and network interfaces were not (much) faster than the CPU at providing data.

Seguridad de las contraseñas: los sitios y lo que se sabe

View post on imgur.com

Después de la calurosa recepción de los comentarios sobre artículos de investigación (es broma, creo que podría escribir al revés aquí y nadie diría nada) traemos otro que me resultó intersante: Password policies of most top websites fail to follow best practices.

Y es intersante, porque con todo lo que vamos sabiendo sobre las contraseñas, muchos sitios siguen usando políticas viejas, anticuadas y hasta desaconsejadas.

En el resumen nos dicen:

We examined the policies of 120 of the most popular websites for when a user creates a new password for their account. Despite well-established advice that has emerged from the research community, we found that only 13% of websites followed all relevant best practices in their password policies. Specifically, 75% of websites do not stop users from choosing the most common passwords—like “abc123456” and “P@$$w0rd”, while 45% burden users by requiring specific character classes in their passwords for minimal security benefit. We found low adoption of password strength meters—a widely touted intervention to encourage stronger passwords, appearing on only 19% of websites. Even among those sites, we found nearly half misusing them to steer users to include certain character classes, and not for their intended purpose of encouraging freely-constructed strong passwords.

De las buenas prácticas que se recomiendan habitualmente, nos dicen:

  • La recomendación: Comprobar las contraseñas contra listas divulgadas y otras que son fáciles de adivinar.

El resultado: 71 de 120 sitios no comprueban la contraseña en absoluto, permitiendo 40 de las más frecuentes.

  • La recomendación. Rechazar la contraseña si aparece en alguna de estas listas. El resultado: De los que las comprueban, 19 bloquean menos de la mitad de las listas de contraseñas comunes.

  • La recomendación: proporcionar información en tiempo real sobre la estimación de complejidad de las contraseñas.

El resultado: Sólo 23 de los 120 sitios comprobados tenían medidor de la calidad.

  • La recomendación: establecer un requisito de dificultad mínima mediante estimaciones de la ‘adivinabilidad’ de la clave.

El resultado: de los 23 anteriores, 10 utilizan medidores basados en el tipo de caracteres que se utililiza, sin prestar atención a nada más.

  • La recomendación: no exigir clases especiales de caracteres; permitir a los usuarios construir sus contraseñas libremente.

El resultado: 54 de 120 sitios exigen el cumplimiento de reglas sobre los caracteres.

  • La recomendación: establecer un mímino de al menos 8 caracteres (NIST).

El resultado: 66 de los 120 sitios exigen esa longitud, al menos.

Las conclusiones son:

  • La política de contraseñas es teatro de seguridad (security theater)
  • Los sitios han preferido pasar a otros métodos (como autentificación multifactor) para aliviar los problemas (con sus propias dificultades/debilidades).
  • Los sitios necesitan pasar auditorías de seguridad, pero estas auditorías recomiendan a veces prácticas obsoletas.
  • Los sitios tienen otras restricciones que tal vez expliquen estas malas prácticas.

Se puede descargar el artículo en [PDF] Password policies of most top websites fail to follow best practices, la [PDF] presentación de Password policies of most top websites fail to follow best practices y ver el vídeo en Password policies of most top websites fail to follow best practices.

¿Un ataque sofisticado o 'paso de contarte lo que sucedió'?

Muro, torre y almenas

Últimamente tenía la impresión de que se ha convertido en tendencia anunciar que hemos sido víctimas de un ataque informático, decir que han utilizado medios muy sofisticados y seguir con nuestra vida. Esa impresión significaba, para mi, que era una forma fácil de eludir contar lo que había sucedido (y los medios se conformaban con la explicación, que ya les parecía suficiente). El caso ese que descubrí hace no mucho (aunque tiene más de un año) el trabajo: [PDF] A “sophisticated attack”? Innovation, technical sophistication, and creativity in the cybercrime ecosystem publicado en WEIS 2022 que parece apoyar lo que suponíamos:

We observe that almost every cybercrime is reported to be a “sophisticated attack” and explain how incentives align to misrepresent very run-of-the-mill events in this manner. We describe the cybercrime ecosystem, analysing the distinct parts and discussing what forms of sophistication and incentives can be found in each kind of work. We move on discuss how framing cybercrime as technically sophisticated attacks performed by skilled criminals has distorted criminological analysis and contributed to misaligned incentives within criminal justice and security policy. We conclude that the criminal justice system is aiming the wrong types of interventions at the wrong kinds of actor.

La cuestión es que nadie hace casi nunca más trabajo del necesario y que, en muchos casos, con poco esfuerzo se consiguen grandes resultados, al menos en el mundo de los ataques informáticos.

De las conclusiones:

We argue that this mis-attribution of sophistication is not a mere irritation or fringe issue, i.e. something which security professionals and academics might decry on social media but which bears no real impact; it is in fact contributing to a far wider mood music within law enforcement and sentencing practice, and academia that has had serious negative effects. As long as this narrative of sophistication persists, it creates perverse incentives to widen the net of law enforcement, to design interventions along misleading lines, and to draw attention away from the real drivers of harm.

Esto es, no hay tantos expertos capaces de realizar atanques verdaderamente sofisticados y esta banalización de la información puede llevarnos a tomar malas decisiones y a enfocar el problema de manera inadecuada.

En el artículo definen media docena de tipos de atacantes, que puede ser interesante señalar:

  • Expertos en investigación básica y cambios de paradigma Hacking – basic research and paradigm shifts.

En este caso hablamos de incentivos y motivaciones económicas complejas, aunque esta es una pequeña parte de todo el ecosistema. Es costosa en tiempo, conocimientos, …

  • Atacantes avezados, expertos en penetración y amenazas persistentes avanzadas Skilled actors, penetration testers and APTs.

Aquí ya tenemos a personas con buenos conocimientos de lo que han encontrado otros. Son hábiles en aplicar este conocimiento y realizar los ataques. Aquí entraría la parte económica relacionada con la realización del ataque (o la defensa) y la venta de este conocimiento a quien lo pueda demandar.

  • Constructores de herramientas y proveedores de infraestructura Tool builders and infrastructure providers

Los ataques se han convertido en muchos casos en ataques como servicio ‘crime as a service, lo que significa que aparecen organizaciones que proporcionan las herramientas para que otros las usen en su propio beneficio. Esto ocurre tanto en las herramientas de ataque, como en la infraestructura necesaria para desplegarlas y no tener que preocuparse demasiado de ellas.

  • Emprendedores Entrepreneurs

Esencialmente, los usuarios de las herramientas y los servicios anteriores, que sacan provecho de su conocimiento de la infraestructura.

  • Piratillas y ladrones de poca monta ‘Script kiddies’ and petty fraudsters

Son gente que está empezando y que usan los servicios de otros sin mucho conocimiento, simplemente siguiendo guías y recomendaciones que otros han preparado.

  • Hacktivistas y otras personas sin motivación económica Hacktivists and other non-monetary motives

No sólo hay gente interesada en estos asuntos por el dinero, sino también por ideales, ideología o principios ‘más elevados’. Son pocos, muy motivados y con muy diversos niveles en sus capacidades tecnológicas.

Por cierto, que esta clasificación me ha recordado otro artículo interesante I Watched You Roll the Die: Unparalleled RDP Monitoring Reveal Attackers’ Tradecraft donde clasificaban a los atacantes en cinco categorias:

  • Bardos (bards), sin un gran nivel cuyo único objetivo es usar sistemas informados para sus propios intereses (muchas veces de simple entretenimiento, accediendo a recursos que no tienen disponibles por el motivo que sea).

  • Guardabosques (rangers), que exploran los sistemas y encuentran algunos vulnerables o poco progegidos, abriendo el camino para otros atacantes.

  • Ladrones (thieves), que son los que tratan de obtener beneficio económico de los sistemas atacados.

  • Bárbaros (barbarians), que serían los que usan herramientas, básicamente mediante fuerza bruta, para entrar en diversos sistemas.

  • Magos (wizards), que utilizan estos recursos para esconder su verdadero oriigen y poder realizar acciones de su interés.

En este caso se trata de una honeynet utilizada para ver cómo se comportaban diferentes agentes que utilizan ataques a través de las herramientas de escritorio remoto RDP. Los autores habrían observado a los atacantes y su actividad cuando descubrían los recursos vulnerables.

Se puede leer algo de información en How Unparalleled RDP Monitoring Reveal Attackers’ Tradecraft