La complejidad de los navegadores y la dificultad de crear uno desde cero

Nasas y barco pesquero Hacer un navegador, nos dicen en The reckless, infinite scope of web browsers es una tarea muy complicada.

El problema tiene que ver con la larga historia de la web: no hay límites en lo que se puede ver en el navegador, ni en las características que se van añadiendo:

This strategy of unlimited scope and perpetual feature creep is reckless, andhas been allowed to go on for far too long.

Hay 1217 especificaciones de la W3C y resulta que alguien interesado debería leerse 114 millones de palabras, que es muchísimo.

The total word count of the W3C specification catalogue is 114 million words at the time of writing. If you added the combined word counts of the C11, C++17, UEFI, USB 3.2, and POSIX specifications, all 8,754 published RFCs, and the combined word counts of everything on Wikipedia’s list of longest novels, you would be 12 million words short of the W3C specifications.

La conclusión es que es imposible construir un nuevo navegador (y la prueba es que cada vez tenemos menos, aunque parezca que hay más porque se reutilizan dos o tres motores compartidos).

Aunque no nos cuesten dinero, resulta que el navegador puede ser el programa más costoso de los que hay en un sistema típico.

Browsers are the most expensive piece of software a typical consumer computer runs.

Y también tiene consecuencias desde el punto de vista de la seguridad, siendo estos programas responsables de un montón de problemas.

Web browsers areresponsible for more than 8,000 CVEs.

Ya queda muy lejos cuando hablábamos de la seguridad de mozilla por su simplicidad frente al Internet Explorer, Software Complexity: Open Source vs Microsoft . Por cierto, sorpresa agradable al ver que aún hay entradas recientes (marzo de este año) en ese blog.

Actualización (2022-10-04) Me recordaban en Mastodon (no es visible públicamente, no lo enlazo) el reciente anuncio de Privacy Browser PC y lo añado aquí.

Extracción de información de sistemas infectados a través de las luces LED

Antenas En Air-Gapped Devices Can Send Covert Morse Signals via Network Card LEDs nos cuentan de otro caso de extracción de información de una máquina. Esta vez, a través de los LEDs de la tarjeta de red, utilizando el lenguaje morse.

A security researcher who has a long line of work demonstrating novel data exfiltration methods from air-gapped systems has come up with yet another technique that involves sending Morse code signals via LEDs on network interface cards

Se trataría de instalar un malware en la máquina y utilizarlo para controlar esas lucecitas LED, mediante parpadeos o cambios de color.

Malware installed on the device could programmatically control the status LED by blinking or alternating its colors, using documented methods or undocumented firmware commands,” Dr. Guri said.

Curioso.

Un viejo artículo sobre los generadores de números seudoaleatorios y las consecuencias de su elección

Sistema solar Ya hemos hablado otras veces de los números aleatorios y la seguridad. En esta ocasión, sin embargo, traemos un artículo sobre números aleatorios (seudoaleatorios, generados) de uso genérico (no se habla de seguridad; me permito recordar que los números seudoaleatorios que se usan en ciberseguridad no pueden ser los mismos que se utilizan en simulaciones, por ejemplo, porque los requisitos son diferentes).

Se trata de un artículo que ya tiene unos años: Quality of random number generators significantly affects results of Monte Carlo simulations for organic and biological systems. Como es un tema recurrente por aquí (aunque con otro enfoque), valdrá la pena guardarlo.

Prueban a hacer simulaciones con diferentes algoritmos generadores y ven que el resultado es diferente.

We have simulated pure liquid butane, methanol and hydrated alanine polypeptide with the Monte Carlo technique using three kinds of random number generators - the standard Linear Congruential Generator (LCG), a modification of the LCG with additional randomization used in the BOSS software, and the “Mersenne Twister” generator by Matsumoto and Nishimura.

De las conclusiones: la elección del generador puede tener efectos importantes en los resultados físicos de los cálculos y las pruebas estadísticas básicas no son suficientes para identificar todos los problemas potenciales.

Thus, we can conclude that, on one hand, the choice of a random number generator for Monte Carlo simulations can have a very strong effect on the physical results of the calculations and, on the other hand, simple statistical tests are not sufficient to identify all the potential problems.

'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.