'Mejorando' el sistema de entretenimiento de su coche

Expo. Pantallas Prometo que yo pensaba que con un par de entradas ‘duras’ sobre las dificultades y lo sofisticado que es atacar un producto moderno sería suficiente pero la entrada How I Hacked my Car es demasiado apropiada para dejarla pasar aquí. Tiene segunda parte, en How I Hacked my Car Part 2: Making a Backdoor y tercera How I Hacked my Car Part 3: Making Software.

Se trata de un ataque que le da acceso al sistema de entretenimiento.

One thing I particularly liked about this vehicle was the In-Vehicle Infotainment (IVI) system. As I mentioned before it had wireless Android Auto which seemed to be uncommon in this price range, and it had pretty nice, smooth animations in its menus which told me the CPU/GPU in it wasn’t completely underpowered, or at least the software it was running wasn’t super bloated.

El autor tiene un 2021 Hyundai Ioniq SEL y se pone a ‘jugar’ con él. En la entrada nos cuenta los pasos que dió y cómo lo consiguió.

Finalmente lo consigue.

Bingo! My app was running. The buttons also worked flawlessly, allowing me to lock or unlock my doors. I also dumped the logs after exiting my app and saw that my test button log and other debug log entries were successfully written in the Logcat file.

I now had full control over my car’s IVI, which is certainly a nice feeling. There is still more to be learned about the system though and I might make more posts about it as I find out more information.

El modelo 'repair café' como mecanismo de aprendizaje

Guerreros en reparación Los repair cafés son reuniones en las que acuden especialistas de diversos ámbitos que reparan, si es posible, los aparatos que llevan las personas interesadas. El tema no es menor, porque reparar un dispositivo puede ser muy sencillo para un especialista, pero no siempre es fácil conseguirlos. También es cierto que reparar un aparato no es siempre sencillo si tenemos en cuenta los inconvenientes de llevarlo a alguna parte, que donde lo llevemos sea el sitio adecuado, y que el coste sea razonable.

En Repair cafés in computing education nos hablan justamente de este modelo, contándonos como algunos centros alemanes han identificado esta idea como una oportunidad de aprendizaje para su estudiantado. Se añaden, claro, las enseñanzas relacionadas con la sostenibilidad.

Researchers from Germany have identified this as an opportunity to develop a scheme of work for Computing, while at the same time highlighting the importance of sustainability in hardware and software use. They hypothesised that by repairing defective devices, students would come to understand better how these devices work, and therefore meet some of the goals of their curriculum.

Identifican tres tipos fundamentales de reparación, cables rotos, pantallas rotas y mejoras de los disposivos:

In the classroom, repair workstations were set up for three different categories of activity: fixing cable breaks, fixing display breaks, and tinkering to upcycle devices.

Sin tener mucha habilidad yo trato de reparar mis dispositivos siempre que es posible y reúno las ‘fuerzas’ suficientes para hacerlo. Aprendo un poco, me distraigo y, a veces, recupero un dispositivo que estaba estropeado. Entre mis ‘logros’, sustituir una pantalla de un Kindle y también de un portátil pequeñito (que yo mismo rompí apretando demasiado la maleta). También cambié la batería de mi Kindle. Entre los fracasos, un par de ventiladores que no he sabido ni cómo comenzar a manejar.

Muy interesante.

Mejorando la gestión de la memoria en C++ para mejorar la seguridad

Punteros C y su pariente cercano, C++, sufren problemas de seguridad derivados de la gestión manual de memoria. No sólo ellos, claro, sino muchos otros por el simple hecho de que sus compiladores/intérpretes/herramientas están programados en estos lenguajes.

En Retrofitting Temporal Memory Safety on C++ nos cuentan los esfuerzos de Google para aliviar estos problemas.

Nos hablan de la ‘cuarentena’ de la memoria, que consiste en marcar la memoria liberada en algún momento y no permitir su utilización (no está disponible) hasta que se cumplen algunas condiciones que garantizan la seguridad.

Over the last decade, another approach has seen some success: memory quarantine. The basic idea is to put explicitly freed memory into quarantine and only make it available when a certain safety condition is reached. nos cuentan los esfuerzos de Google para aliviar estos problemas.

Nos hablan de la ‘cuarentena’ de la memoria, que consiste en marcar la memoria liberada en algún momento y no permitir su utilización (no está disponible) hasta que se cumplen algunas condiciones que garantizan la seguridad.

Over the last decade, another approach has seen some success: memory quarantine. The basic idea is to put explicitly freed memory into quarantine and only make it available when a certain safety condition is reached. nos cuentan los esfuerzos de Google para aliviar estos problemas.

Nos hablan de la ‘cuarentena’ de la memoria, que consiste en marcar la memoria liberada en algún momento y no permitir su utilización (no está disponible) hasta que se cumplen algunas condiciones que garantizan la seguridad.

Over the last decade, another approach has seen some success: memory quarantine. The basic idea is to put explicitly freed memory into quarantine and only make it available when a certain safety condition is reached. nos cuentan los esfuerzos de Google para aliviar estos problemas.

Nos hablan de la ‘cuarentena’ de la memoria, que consiste en marcar la memoria liberada en algún momento y no permitir su utilización (no está disponible) hasta que se cumplen algunas condiciones que garantizan la seguridad. Se utiliza en su navegador, Chrome, pero también hay alguna aproximación similar en el kernel de Linux.

Over the last decade, another approach has seen some success: memory quarantine. The basic idea is to put explicitly freed memory into quarantine and only make it available when a certain safety condition is reached.

La condición de seguridad se basa en verificar que no hay punteros que hagan referencia a esta memoria, mediante la intercepción de las llamadas de petición de memoria.

The main idea behind assuring temporal safety with quarantining and heap scanning is to avoid reusing memory until it has been proven that there are no more (dangling) pointers referring to it. To avoid changing C++ user code or its semantics, the memory allocator providing new and delete is intercepted.

En el artículo se habla de las formas de hacerlo, los compromisos alcanzados, e incluso de algunos apoyos de la arquitectura hardware (ARM v8.5A).

Interesante.

Explicando los fallos en el arranque seguro de un Google Nest

Bolas chinas concéntricas Seguimos con las entradas veraniegas. Esperamos que sirvan para hacerse una idea (no es necesario comprender todos los detalles) de lo complejos que pueden llegar a ser algunos fallos y los ataques correspondientes.

En este caso hablamos de Breaking Secure Boot on Google Nest Hub (2nd Gen) to run Ubuntu.

Las técnicas son variadas y utilizan algo de lo que hemos hablado de vez en cuando, el fuzzing, por ejemplo. No se trata de una contaminación a lo loco, sino con objetivos bastante concretos.

We build a fuzzing harness that injects data in blk_dread (function that reads data from a block device), and triggers execution by calling fat_read_file.

Luego, siguen con la técnica para probar con parámetros que un atacante podría controlar.

In a second phase, we extend the fuzzing to the initialized state since some parameters can be controlled by the attacker. For example, the USB Mass Storage driver sets multiple parameters in structure blk_desc that describe the detected block device in initialized state.

Y algunas cosas más, claro.

En las conclusiones nos cuentan cómo todo este proceso les llevó a encontrar un puerto USB inesperado. Desde allí se podía arrancar con un dispositivo externo, y luego aprovechar otros fallos existentes.

Hardware exploration led to uncovering an unexpected USB port. Software exploration revealed that it can boot from an USB Mass Storage device. Bug hunting exposed a stack overflow vulnerability in the DOS partition parser.

Un análisis de los fallos que permitían infectar teléfonos de NSO

Dibujos Este invierno estuvimos muy ocupados pensando en Pegasus y cómo permitía atacar teléfonos de personas importantes para obtener su información. Rápidamente salieron análisis de algunos fallos que permitían estos ataques y, por ejemplo, en A deep dive into an NSO zero-click iMessage exploit: Remote Code Execution . Me pareció una delicia leerlo y cómo es el nivel de sofisticación de este tipo de ataques: un mensaje recibido a través de iMessage, que aprovechan que el programita muestra en ciclo sin fin algunas animaciones en formato GIF, pero utiliza un método auxiliar al que le pasa la imagen; este método trata de averiguar el formato del fichero, independientemente de la extensión y, por lo tanto esto abre la puerta a que alguien pueda mandar un fichero con extensión .gif que no lo sea y provocar que el iMessage haga algo con él.

En este caso, se utilizaba un fichero PDF porque el subsistema en cuestión tenía un fallo que permitía aprovecharlo para … ejecutar Javascript. Puede que haya alguien que esté ya perdido, pero la cosa es todavía más compleja, porque se aprovechan ciertos trucos de compresión de PDFs y algún truco más.

Lo dicho, una lectura muy entretenida.