1 votos

¿Por qué los cargadores de arranque están en el almacenamiento regrabable?

He flasheado con éxito mi dispositivo unas cuantas veces, pero todavía estoy paranoico con los ladrillos duros. Estoy seguro de que puedo usar mi Arduino para arreglarlos, pero esto me hizo preguntarme por qué los cargadores de arranque se guardan en un almacenamiento regrabable. Soy consciente de que hay un PBL y un SBL y todo eso, y el PBL está en ROM. En este contexto, "almacenamiento reescribible" significa un medio de almacenamiento que puede ser reescrito electrónicamente (EEPROM, Flash, RAM, etc) y "ROM" significa almacenamiento de sólo lectura, no distribuciones de Android del mercado secundario como Lineage OS.

Resumen: ¿Por qué el código que se requiere incluso para encender el teléfono, por no hablar de arrancar Android, se almacena en un lugar que puede ser reescrito.

2voto

Andy Yan Puntos 501

Los cargadores de arranque, al igual que otras particiones, pueden ser actualizados oficialmente por diversas razones:

  • Cambiar a una nueva distribución de particiones (por ejemplo, un grupo de dispositivos antiguos con una vida que abarca Gingerbread y Ice Cream Sandwich, este último requiere considerablemente más espacio)
  • Implementación de nuevos mecanismos de seguridad (por ejemplo, en dispositivos Xiaomi anteriores, el antiguo cargador de arranque se puede desbloquear fácilmente, el nuevo cargador de arranque requiere iniciar sesión y verificar antes de desbloquearlo)
  • Asegurarse de que está en una versión que el fabricante quiere que esté, es decir, evitar los downgrades (por ejemplo, en el caso de Samsung, si lo hace se detendrá a mitad de camino).

0 votos

Sigo pensando que debería haber al menos un recovery bare-minum en ROM, completamente inaccesible al software. Algo así como insertar una tarjeta MicroSD y luego pulsar encendido+volumen arriba+volumen abajo+home mientras el dispositivo está conectado a un puerto de carga haciendo que el contenido de la tarjeta de memoria se duplique en Flash.

0 votos

@person Eso es una laguna legal aún mayor para que los devs la exploten (para conseguir el desbloqueo, etc.). Si te pasas por el Reddit de 3DSHacks verás como muchos están dispuestos a hacer hardmod a sus dispositivos por la libertad, y uno de los descubrimientos recientes es muy similar, utilizando un procedimiento oculto para arrancar código arbitrario. Es mejor mantenerlos sellados.

0 votos

Además, Qualcomm tiene un modo de emergencia (QDLoader 9008/900E) para el peor de los casos que los usuarios pueden manejar, pero lamentablemente ese no siempre está disponible para todos los dispositivos.

2voto

Andy Brudtkuhl Puntos 1714

Andy menciona algunos de los beneficios para la actualización posterior en el campo, y estos son buenos puntos, pero hay más que eso. El gestor de arranque no sólo tiene que arrancar el sistema operativo principal, sino también el "modo de carga", que es en sí mismo un núcleo Linux integrado. El cargador de arranque tiene que hacer que el hardware sea un punto final USB y que hable el protocolo fastboot, para que pueda recibir y flashear nuevas imágenes de recuperación y del sistema. También tiene que realizar la validación de la firma en esas imágenes, utilizando un esquema bastante complicado basado en bloques para que la validación no ralentice el tiempo de arranque.

¿Y qué? ¿Por qué es necesario que esta funcionalidad sea actualizable? Porque es lo suficientemente compleja como para contener errores. El gestor de arranque original de la XBox tenía 512 bytes y contenía dos errores de seguridad críticos, uno de los cuales permitía ejecutar código sin firmar en dispositivos de consumo. No era posible actualizarlo sobre el terreno. De inmediato, su principal mecanismo de seguridad y antipiratería quedó sin valor. Los fabricantes de teléfonos no quieren tener esos errores. Hacen que el cargador de arranque sea actualizable para que el dispositivo se pueda actualizar sobre el terreno y para que sea más fácil probar y desarrollar el cargador de arranque con el hardware real. Es mucho más difícil desarrollar y probar el código que se incorpora a una ROM, y esa complejidad adicional significa que habría más errores y que el desarrollo del teléfono sería más lento, perdiendo los importantes plazos de lanzamiento.

Tener un bootloader actualizable sólo es un problema si intentas flashear el firmware al teléfono y metes la pata. Esto simplemente no es un problema para casi todo el mercado de teléfonos. Son sólo los aficionados locos los que brickean sus teléfonos de esta manera. Peor aún, mover este complejo gestor de arranque a la ROM no evitaría el brickeo. Todavía hay muchas maneras de que un firmware roto pueda dañar el dispositivo: sobrecalentándolo, cargando un firmware de radio roto, fundiendo los fusibles del elemento seguro, &c.

Así que, en general, hay un enorme coste en poner un software más complejo en algún lugar que es difícil de probar y depurar, y que no puede ser parcheado para añadir funcionalidad o corregir errores. No hay ninguna ventaja para casi todos los usuarios, e incluso aquellos usuarios que insisten en dispararse en el pie seguirían teniendo otras formas de hacerlo.

-4voto

robcore Puntos 1

Ahora que lo pienso, qué responsabilidad más tonta con semejante montaje, ¿no? Mi única suposición es que los fabricantes de equipos originales son capaces de impulsar las actualizaciones para las nuevas construcciones, con el fin de parchear los problemas de seguridad, problemas de compatibilidad, etc. Sin embargo, has planteado una cuestión excelente: se trata de una vulnerabilidad gigantesca y de un gran fallo en el proceso.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X