BandaAncha

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate

¿Han roto "Secure Boot"?

Blueskyll00
0
IMG_1409

En 2012, Secure Boot fue adoptado para proteger contra malware en el BIOS. Este sistema usa criptografía para validar el código cargado durante el arranque del sistema. Sin embargo, recientemente, investigadores de Binarly revelaron que Secure Boot ha sido comprometido en más de 200 modelos de dispositivos debido a una clave criptográfica expuesta en GitHub en 2022. Esta brecha permite la ejecución de código no confiable durante el arranque, afectando la seguridad de numerosos dispositivos. Además, se descubrieron otras 21 claves vulnerables en dispositivos de varios fabricantes, exacerbando el problema de seguridad.

Fuente

arstechnica.com/security/2024/07/secure-…evice-makers

pepejil
6

No sé por qué dices que "han roto" el sistema, cuando lo que ha pasado es que se ha expuesto una clave privada en Github.

investigadores de Binarly revelaron que Secure Boot ha sido comprometido en más de 200 modelos de dispositivos debido a una clave criptográfica expuesta en GitHub en 2022

Una cerradura puede ser segura, que si encuentran la llave para abrir, entran, pero eso no significa que la cerradura se haya roto para entrar.

skgsergio
6

Nadie "a" roto Secure Boot.

Fabricantes "despistados" o "torpes" han metido en el trust de certificados de sus dispositivos certificados DE PRUEBA, etiquetados como tal: "DO NOT TRUST", no confiar y "DO NOT SHIP", no lanzar. Y esa clave ha sido publicada ya que probablemente todo dios tenia copias de ella en las empresas para las pruebas.

Si tu firmware no contiene dichos certificados de pruebas o no es de esos fabricantes no tienes ningún problema.

Klendathu

La ignorancia es atrevida, por eso siempre me he preguntado por qué es tan difícil de hacer que la BIOS sea extraíble (¿una microSD interna?) y editable. ¿Que se te corrompe o algo así? La sacas y la restauras, punto. Desde tu casa y sin hacer cosas raras con cachivaches comprados en AliExpress. ¿Que la quieres "ahora sí ahora no" en modo solo lectura? ponle, no sé, un jumper. Es decir, un puto interruptor te salva del malware (¡pero si las tarjetas SD ya lo tienen en forma de pestaña deslizante!).

Por precio no será. Para un producto de a partir 100€ (placa base, PC, portátil… etc) es asumible un sobrecoste de, especulemos, entre 0,15€ y 2€.

Entiendo que la idea no es la adecuada si lo que se quiere es impedir el boteo, lectura (puede ir cifrado) o manipulación del sistema operativo subyacente. Pero como se publica en este hilo, tampoco es que cosas como Secure Boot estén funcionando muy bien (hola pajaporte, no nos olvidamos de ti y tus creadores, vas a acabar igual o peor).

🗨️ 18
pastor de becerros
1

En sus buenos tiempos de la informatica y de los equipos de telecomunicacion como los faxes, podias extraer la "cucaracha" de la BIOS y hacer una copia con un duplicador de ROM.

🗨️ 6
Klendathu

Creo que más o menos esto también se puede hacer ahora (de ahí el comentario del cachivache de AliExpress). Pero joder, que los portátiles actuales suelen venir con una pestaña física y así activar (o tapar) la webcam/micrófono. Y además hay un pequeño orificio para resetear la batería metiendo un pincho. Necesidades, espacio físico y precedentes hay. ¿En serio que a ningún fabricante se la ha podido ocurrir algo así para la BIOS y activar una especie de "modo lectura"?

🗨️ 5
5342323-inactiva
2

¿Has oído hablar del BIOS flashback? Porque cualquier placa base moderna puede restaurar su firmware EFI utilizando un pendrive y un procesador en el zócalo. No es exactamente lo que dices, pero permite recuperar BIOS corruptas. También existe el Dual BIOS que permite tener una BIOS de respaldo o incluso cambiar entre una y otra con un interruptor.

🗨️ 3
Fassou
1

El peligro es si el Ventanucos acaba usando un servidor de Actualizaciones de Windows y le mete una BIOS cocinada para tener el logo del boot con código extra para quedar residente en el sistema de forma indetectable para el SO y antivirus y demás

La BIOS es una ROM, así que puedes resetear la CMOS, pero esto ya estaría flasheado en la ROM

Exiten Dual BIOS, para paliar temas de corrupción, otra cosa es cómo se implementase.

Pero lo de que los chips de BIOS, pasen a estar en sockets, como hubo en su día co-procesadores, no me parece mala idea.

Salu2!

5342323-inactiva
2

Pero como se publica en este hilo, tampoco es que cosas como Secure Boot estén funcionando muy bien (hola pajaporte, no nos olvidamos de ti y tus creadores, vas a acabar igual o peor).

El Secure Boot es perfectamente funcional y es una de los eslabones de la cadena de confianza entre hardware y software, que son una serie de comprobaciones que se deben realizar para confirmar que todos los elementos son empleados para arrancar un dispositivo (el firmware EFI, el kernel y drivers de tu sistema operativo, etc…) son de confianza.

Al igual que el arranque seguro por sí solo es inútil (¿de qué sirve confirmar que tu sistema operativo, firmware y hardware están inalterados si alguien puede coger tu disco duro directamente y buscar la información que quiera?), otras medidas de seguridad tampoco sirven de mucho sin el arranque seguro, ya que se rompería un eslabón de la cadena. De nada sirve tener cifrado el disco duro si alguien sustituye un elemento de arranque por otro malicioso para robar tus contraseñas al arrancar sin que tú te enteres de nada, por ejemplo.

Prácticamente cualquier bicho tecnológico que tengas en tu haber que sea medianamente moderno usa alguna forma de cadena de confianza con, por supuesto, arranque seguro. Tu móvil usa arranque seguro (aquí tienes un documento de Qualcomm, mismamente), todas las consolas modernas lo usan (notoriamente, desde la primera Xbox en adelante, minuto 40:13), dispositivos empotrados a cascoporro, etc.

El problema es cuando algunos fabricantes usan certificados de prueba, entonces el arranque seguro no sirve de nada y, por consiguiente, muchos de los elementos de seguridad de un ordenador son invalidados. Para que veas lo esencial que es el arranque seguro.

🗨️ 10
Klendathu

Leyendo tu comentario he recordado una duda que tengo sobre Linux. No sé si estás familiarizado con su cifrado.

Hasta donde yo sé, la forma más sencilla es cifrar la partición raíz ("/"), y dejar la carpeta "/boot" (es decir el kernel) sin cifrar en otra partición. Esto permite el arranque y la confidencialidad de casi todo el sistema excepto el kernel. Así se hace (o hacía) en Debian, Linux Mint, Ubuntu… etc.

Creo que hay otra forma que consiste en no separar la carpeta boot en una partición. Es decir, esta también va cifrada. Desconozco los detalles. Intuyo que que el descifrado lo realiza el gestor de arranque GRUB o algo así. Creo que así se hace en EndeavourOS (una derivada de Arch Linux que usa el instalador calamares y tal vez sea este el responsable).

En ambos casos pasa lo que comentas: "De nada sirve tener cifrado el disco duro si alguien sustituye un elemento de arranque por otro malicioso para robar tus contraseñas al arrancar sin que tú te enteres de nada, por ejemplo."

Mi pregunta si se puede aprovechar Secure Boot para garantizar la cadena de boteo de un Linux cifrado. Garantizando la confidencialidad y la integridad. Es decir, que no haya que exponer algo para permitir el boteo ni tampoco confiar en que nunca te cuelen un keylogger en alguna fase del boteo.

Me consta haber encontrado alguna vez alguna guía de instalación para Arch Linux en donde se usa Secure Boot y cifrado. Pero mi gran duda siempre es si, al final, hay que exponer algo, por pequeño que sea, para que el sistema arranque. Sea lo que sea, el kernel, GRUB, EFI, lo que sea. Rompiendo así la cadena de confianza en algún punto.

Entiendo que esto no ocurre en Windows, ¿Es así? Es decir, que un Windows cifrado y con Secure Boot te garantiza que nadie ha podido manipularlo o leerlo. Aún teniendo acceso físico a la máquina (para simplificar dejaremos de lado ideas peregrinas como la de un actor malicioso instalando un chip milagroso cuando no estás mirando).

🗨️ 9
lhacc

El propio kernel que está en /boot debe estar cifrado, si no, la BIOS se niega a arrancar de él. Una vez el kernel está arrancado, todo está en las manos del kernel.

🗨️ 3
lhacc
lhacc
5342323-inactiva
2

Intuyo que que el descifrado lo realiza el gestor de arranque GRUB o algo así.

Existen un montonazo de formas de cifrar un ordenador con Linux. Hay métodos que tienen la partición /boot cifrada y entonces sí, se encargaría el GRUB de descifrarla. Pero no todos los métodos tienen esa peculiaridad. De hecho, el método que has mencionado es bastante complejo y un poco impráctico. Al fin y al cabo, quieres reducir la superficie de ataque, no aumentarla con un GRUB por medio. Échale un vistazo a esta entrada en la wiki de Arch Linux para ver qué otras alternativas tienes.

Me consta haber encontrado alguna vez alguna guía de instalación para Arch Linux en donde se usa Secure Boot y cifrado. Pero mi gran duda siempre es si, al final, hay que exponer algo, por pequeño que sea, para que el sistema arranque. Sea lo que sea, el kernel, GRUB, EFI, lo que sea. Rompiendo así la cadena de confianza en algún punto.

Lo ideal es cifrar todo lo que puedas y dejar sin cifrar lo mínimo necesario para arrancar. Usando alguno de los métodos que hay, podrías dejar todo cifrado a excepción del kernel, cmdline y el initrd. No tendrías ni siquiera que usar un gestor de arranque si no quieres, ya que Linux puede arrancarse él solito usando algo llamado EFISTUB.

Pero tú firmas absolutamente todo lo que vayas a usar entre que arrancas el ordenador y llegas al kernel. Esto es, el propio firmware EFI, el gestor de arranque si es que vas a usar uno y el propio kernel junto con el cmdline y el initrd (luego te explico esto). Es decir, no rompes la cadena de confianza en ningún punto. Lo que no está cifrado (porque no es confidencial), está firmado (porque tenemos que asegurarnos de que nadie lo ha alterado).

Pero realmente en Windows ocurre lo mismo con Bitlocker. La partición EFI, donde está el software necesario para arrancar Windows y descifrar la partición del sistema, está descifrado, lógicamente, para que el ordenador pueda leerlo y ejecutar esas instrucciones. Lo bueno es que va a estar firmado, así que te aseguras de que nadie haya podido alterar el contenido de la partición EFI. No necesitas que sea confidencial, puesto que ahí no vas a guardar ningún elemento privado como claves.

Hablando de elementos privados, existen dos formas de obtener la contraseña para descifrar la partición del sistema una vez has arrancado el ordenador y el kernel se está ejecutando: o bien la obtienes de un TPM (físico o integrado) o bien le pides al usuario que por favor la introduzca de alguna manera (ya sea con un pendrive con una clave, a mano, etc). En el primer caso, si el TPM detecta que algún elemento de la cadena de confianza que te expliqué antes ha sido vulnerado, no va a soltar la clave y todos contentos. El problema de este método es si consigues interceptar de alguna manera el tráfico entre el TPM y el resto del ordenador porque este esté separado físicamente del resto de componentes, ya que podrías obtener la clave de descifrado, aunque para esto necesitarías acceder físicamente al ordenador durante un buen rato. Hace tiempo se hizo famoso un vídeo que atacaba un ordenador con Bitlocker justo de la forma que te estoy diciendo. Ya te puedes imaginar que la culpa aquí no es de Bitlocker, sino de usar un TPM que no esté integrado en el procesador (esto haría al menos un poco más difícil el interceptar las comunicaciones del TPM al estar dentro de otro chip).

Entiendo que esto no ocurre en Windows, ¿Es así? Es decir, que un Windows cifrado y con Secure Boot te garantiza que nadie ha podido manipularlo o leerlo. Aún teniendo acceso físico a la máquina (para simplificar dejaremos de lado ideas peregrinas como la de un actor malicioso instalando un chip milagroso cuando no estás mirando).

Con lo que te he explicado arriba verás que esto es igual en Windows y en Linux. Tú cifras todo menos la porción necesaria para descifrar el disco duro. Te aseguras de que esa pequeña porción de software no ha sido alterada de ninguna forma gracias al arranque seguro, que verifica la firma del binario y asegura que nadie ha podido alterarlo. Y arriba también te he mencionado un ejemplo de ataque físico si almacenas las claves en un TPM físico. Otro posible ataque físico es usando Thunderbolt o leyendo la memoria RAM mientras el dispositivo está en reposo.

Vale, ¿y cómo puñetas cifras una instalación de Arch Linux (u otra distribución, en realidad) moderna?

En primer lugar, vas a usar solo EFI desactivando el modo de compatibilidad con BIOS y activas la contraseña para entrar en los ajustes de la BIOS (si no, cualquiera podría coger y desactivar el Secure Boot y eso no es lo que queremos), generas tus propias claves de firmado (la clave privada la debes almacenar o otro dispositivo o cifrada, para evitar que un software malicioso pueda leerlas y firmar su propio software malicioso) y las cargas en la BIOS. Finalmente, activas el arranque seguro.

Vas a tener dos particiones:

Primero, una partición EFI que tendrás sin cifrar y que contendrá tu gestor de arranque favorito (a mí el que más me gusta usar es systemd-boot) si es que quieres usar uno, porque como te he dicho antes podrías arrancar el kernel directamente. Eso sí, tendrás que firmarlo con la clave que generaste antes. Por otro lado, tendrás el kernel también firmado. ¿Qué pasa? Que el kernel no arranca por sí solo. Necesita un pequeño sistema de ficheros temporal para cargar todas las utilidades que pueda necesitar para, entre otras cosas, montar (y descifrar) tu partición principal. A esto se le llama initrd. Finalmente, también necesitarás un cmdline, que le diga al kernel alguna información que pueda necesitar.

Quizá ves el problema, ¿verdad? De nada sirve firmar el kernel si luego vas a tener dos componentes extra de los que depende que están a su libre albedrío. Para eso se inventaron las UKI, o Unified Kernel Image, una imagen que almacena el kernel, el initrd, el cmdline e incluso otros elementos que puedas necesitar. Ahora sí que podemos firmar la imagen al completo y nos aseguraremos de que no se pueda manipular de ninguna manera.

Por otro lado, tendrás otra partición con tus datos cifrados de la manera que te dé la gana. Tu pedazo de UKI se encargará de descifrarla. Y, como ves, todo está o bien cifrado o bien firmado, asegurándote de que nadie pueda leer lo que esté cifrado o alterar lo que esté firmado. Y nadie podría sustituir un elemento de arranque por otro malicioso, ya que entonces el firmware EFI no dejaría arrancar y el TPM (si lo usas) no proporcionaría la clave necesaria para descifrar el resto del disco duro.

Si hay algo que no entiendas o que he explicado demasiado rápido, avísame y te lo aclaro. Por supuesto, nada de lo que he escrito sirve de nada si un atacante usa otro tipo de técnicas.

🗨️ 2
Veltys
Veltys
Klendathu

Me consta haber encontrado alguna vez alguna guía de instalación para Arch Linux en donde se usa Secure Boot y cifrado.

A quien le pueda interesar: "Arch Linux Full-Disk Encryption Installation Guide".

Dice:

Following the main installation are further instructions to harden against Evil Maid attacks via UEFI Secure Boot custom key enrollment and self-signed kernel and bootloader.

Se escapa de mi entendimiento, así que obviaré cualquier comentario. Pero supongo que esto resuelve mi duda sobre si "al final, hay que exponer algo, por pequeño que sea, para que el sistema arranque. Sea lo que sea, el kernel, GRUB, EFI, lo que sea. Rompiendo así la cadena de confianza en algún punto".

🗨️ 1