logo linux

Ejecutar ‘rm -rf /’ puede borrar la BIOS

Hace unos años habría parecido una broma, pero a día de hoy con los sistemas UEFI se puede llegar a la situación absurda de borrar el firmware desde el sistema operativo sin querer.

Y es que Linux puede acceder al contenido de la BIOS directamente y en algunos casos puede incluso realizar modificaciones. Se trata de un grave fallo de diseño que esta vez viene de la mano de MSI. Lo que hace ‘rm -rf /’ es eliminar todo el contenido del directorio raíz de forma recursiva, lo que incluye todas las particiones montadas (inclusive discos externos, USB, etc), las carpeta de dispositivos, etc.

Un usuario en los foros de Arch ha publicado un mensaje en el que explica la extraña situación:

Hoy yo y un amigo hemos ejecutado «rm -rf –no-preserve-root /» es un portátil MSI porque queríamos deshacernos de una instalación de Arch bastante machacada. Por supuesto podríamos haber formateado la partición root y haber reinstalado Arch. Pero en vez de eso hemos pensado que sería divertido ver cómo muere la instalación de Gnome. No hemos sido lo bastante tontos de dejar particiones importante montadas. Hemos desmontado todo excepto root.

Pero la sorpresa desagradable ha venido cuando hemos intentado arrancar desde la BIOS: no ha funcionado. La pantalla permanece apagada, el led del disco duro se queda encendido un segundo pero no ocurre nada más.

Se aprecia cualquier ayuda. Gracias.

Por si importa: teníamos una configuración UEFI/GPT con arranque dual con Windows 10. La partición de arranca estaba compartida y es por eso por lo que nos hemos asegurado de que no estuviera montada.

Con este primer mensaje, el asunto empieza a oler a chamusquina y hace pensar que la eliminación recursiva a tocado el contenido de la UEFI. Después de algunos mensajes que no han arrojado demasiada luz, un usuarios ha dicho lo siguiente:

Aunque no debería eliminar POST en una UEFI en buenas condiciones, pero en fin, /sys/firmware/efi/efivars/*…

Se trata del directorio desde donde se puede acceder al firmware. Más adelante alguien hace una comprobación sobre los permisos de lectura y escritura del directorio que apunta al firmware demostrando que es posible escribir sobre él:

% grep efi /etc/mtab
efivarfs /sys/firmware/efi/efivars efivarfs rw,nosuid,nodev,noexec,relatime 0 0

A lo que otro usuario responde:

Por supuesto. Está programado así en systemd.

Así que, aunque la responsabilidad final es del fabricante que permite tal acceso al contenido de la BIOS, systemd tiene la posibilidad de evitar esos borrados accidentales. Poco después otro usuario relata una experiencia similar con un Lenovo Ideapad 105. En su caso, solucionó el estropicio siguiendo los siguientes pasos:

Construir un programador SPI (se pueden encontrar circuitos simples en la web usando el puerto paralelo).
Preparar el software de programación necesario.
Comprar un adaptador USB/Paralelo y esperar que eso funcione.
Hacer algunas soldaduras SMD.Pillar un chip SPI nuevo con la esperanza de que sea compatible.
Intentar reprogramar el asunto.
Soldarlo otra ver.
Esperar que todo vuelva a funcionar.

Después de algo de verborrea sobre cómo evitar algo así modificando ‘fstab’ para que el directorio que apunta a la UEFI sea de solo escritura, alguien enlaza a un bug abierto en la página de GitHub de systemd en el que se habla precisamente de este problema.

Así que si tienes pensado hacer algo tan extraño como borrar todo el árbol de directorios en vez de hacer un tradicional formato, asegúrate de tener ciertas carpetas montadas para sólo lectura.

El hilo completo se puede consultar en los foros de Arch.