Articulo de referencia

iBoot

{{cite web| title = Darwin 9.2 Source Code| publisher = [[Apple Inc.]]| url = https://opensource.apple.com/release/mac-os-x-1052.html| accessdate = January 19, 2020| archive-dat...

iBoot es el gestor de arranque de etapa 1 y etapa 2 para iPhones , iPads , Macs con procesadores Apple Silicon y el chip T2 en Macs con procesadores Intel que incorporan dicho chip. [ 3 ] [ 4 ] En comparación con su predecesor, iBoot mejora la autenticación realizada en la cadena de arranque. [ 2 ]

Para las Mac basadas en Intel con un chip T2, el proceso de arranque comienza ejecutando código en el chip T2 desde la ROM de arranque . Esa ROM de arranque carga y ejecuta iBoot en el chip T2; iBoot carga el sistema operativo bridgeOS en el chip T2 y lo inicia; bridgeOS carga el firmware UEFI ; el firmware UEFI inicia el procesador Intel principal y completa el proceso de autodiagnóstico de encendido . El firmware UEFI carga boot.efi, que carga e inicia el kernel de macOS. [ 4 ] Para las Mac basadas en Intel con un chip T2, el firmware UEFI puede llamarse iBoot UEFI .

Para iPhones, iPads y Macs con procesadores Apple Silicon, el proceso de arranque comienza ejecutando la ROM de arranque del dispositivo, que está integrada en el SoC del dispositivo . En iPhones y iPads con procesadores A9 o de la serie A anteriores, la ROM de arranque carga elEl cargador de arranque de bajo nivel (LLB), que es el cargador de arranque de etapa 1 y carga iBoot, y LLB está almacenado en una EEPROM; en iPhones y iPads con procesadores A10 o posteriores, así como en Macs con Apple silicon, la ROM de arranque carga iBoot, y LLB e iBoot están almacenados en la memoria flash NAND o en un SSD interno, que es un flujo de arranque sin NOR. [ 5 ] [ 6 ] Si todo va bien, iBoot procederá a cargar eliOS,iPadOSomacOS, así como el resto del sistema operativo. [ 7 ] [ 8 ] [ 9 ] Si iBoot no carga o no verifica iOS, iPadOS o macOS, el cargador de arranque salta al modo DFU (Actualizacióndefirmwaredeldispositivo) [ 10 ] ; de lo contrario, carga losmódulosdel kernelParaarm64con iBoot, "saltará" a la caché del kernel (el propio kernel envuelto en el formato Image4) y arrancará desde allí. [ 2 ] [ 11 ]

Una vez cargados el núcleo y todos los controladores necesarios para el arranque, el gestor de arranque inicia el procedimiento de inicialización del núcleo. En este punto, se han cargado suficientes controladores para que el núcleo encuentre el dispositivo raíz. [ 12 ]

Estilos de construcción

Según el código fuente filtrado de iBoot (del 7 de febrero de 2018), [ 13 ] en apps/iBoot/iBoot.mk, se definen los estilos de compilación válidos como "RELEASE", "DEVELOPMENT", "DEBUG" y "SECRET" al compilar una copia de iBoot. Estos estilos de compilación definen información específica cuando se compila el gestor de arranque, como agregar más comandos de depuración para encontrar problemas en un dispositivo de desarrollo o realizar pruebas de hardware usando el indicador de comandos de iBoot a través de la comunicación serial.

Significados

VERSIÓN - Versión de lanzamiento

DESARROLLO: Una compilación que se utiliza en hardware de desarrollo permite el acceso a algunas herramientas de desarrollo, como el comando 'diags'.

DEBUG: una compilación utilizada para depurar iOS y otros componentes de bajo nivel.

Características

iBoot incluye una línea de comandos en los modos de recuperación, DFU o restauración (también está presente en las versiones "DEBUG" de iBoot, pero no se incluyó en versiones posteriores). La disponibilidad de comandos depende del tipo de iBoot que se utilice, especialmente del estilo de compilación (puede ser RELEASE, DEVELOPMENT, DEBUG, SECRET, etc.).

Al usar el símbolo del sistema de iBoot, los comandos incluidos se utilizan para gestionar el comportamiento, como sus argumentos de arranque (denominados internamente "boot-args" en la NVRAM), o si se debe usar el comando de inicio (fsboot) cuando iBoot se carga automáticamente (conocido como arranque automático). [ 14 ] [ 15 ]

Seguridad de la memoria

Apple ha modificado la cadena de herramientas del compilador C que se utiliza para crear iBoot con el fin de mejorar la seguridad de la memoria desde iOS 14. Este avance está diseñado para mitigar clases enteras de vulnerabilidades comunes de corrupción de memoria, como desbordamientos de búfer , explotaciones de montón , vulnerabilidades de confusión de tipos y ataques de uso después de la liberación . Estas modificaciones pueden impedir que los atacantes escalen con éxito sus privilegios para ejecutar código malicioso, como un ataque que implique la ejecución de código arbitrario . [ 16 ]

Incidente de fuga de código fuente

En 2018, se filtró en GitHub una parte del código fuente de iBoot para iOS 9 para varios modelos de iPhone , iPad , iPod touch y Apple Watch . [ 17 ] Apple emitió entonces una solicitud de eliminación por infracción de derechos de autor ( DMCA ) a GitHub para que eliminara el repositorio. Se creía que un empleado de Apple era el responsable de la filtración. Sin embargo, Apple no lo confirmó. Se sabe que un usuario llamado "ZioShiba" fue el responsable de la publicación del código fuente de iBoot.

Historia

iBoot-87.1, la versión más antigua conocida de iBoot ejecutándose en hardware de producción a través de puerto serie. Captura de pantalla realizada por mcg29 en Twitter .

La primera versión conocida de iBoot fue iBoot-87.1, vista en prototipos muy tempranos durante la producción del iPhone en 2006-2007. [ 18 ] Tenía las mismas características que la primera versión conocida de iBoot (iBoot-99), excepto que no tenía características antes del lanzamiento final. Esta versión de iBoot podría considerarse la "primera beta temprana" de iBoot. Tras el lanzamiento del iPhone de primera generación y iPhone OS 1 , la primera versión de iBoot fue iBoot-159.

Véase también

Referencias

  1. "Código fuente de Darwin 9.2" . Apple Inc. Archivado del original el 21 de septiembre de 2020. Consultado el 19 de enero de 2020 .
  2. 1 2 3 Ryan, Peter YA; Naccache, David; Quisquater, Jean-Jacques (17 de marzo de 2016). Los nuevos descifradores de códigos: Ensayos dedicados a David Kahn con motivo de su 85 cumpleaños . Springer. ISBN 9783662493014.
  3. Hayes, Darren R. (17 de diciembre de 2014). Guía práctica para investigaciones forenses informáticas . Pearson IT Certification. ISBN 9780132756150.
  4. 1 2 "Proceso de arranque para una Mac basada en Intel - Soporte de Apple" . Seguridad de la plataforma de Apple .
  5. "LLB" . La Wiki de Apple . 10 de septiembre de 2023. Consultado el 27 de noviembre de 2024 .
  6. hoakley (14 de enero de 2021). "Las Mac M1 cambian radicalmente el arranque y la recuperación" . The Eclectic Light Company . Consultado el 27 de noviembre de 2024 .
  7. Apple Inc. (mayo de 2016). "Guía de seguridad de iOS" (PDF) . apple.com . Archivado (PDF) del original el 27 de febrero de 2016.
  8. "Proceso de arranque para dispositivos iPhone y iPad - Soporte técnico de Apple" . Seguridad de la plataforma Apple .
  9. "Proceso de arranque para una Mac con Apple silicon - Soporte técnico de Apple" . Seguridad de la plataforma Apple .
  10. "Soporte de iFixit: Restauración DFU" . iFixit . Consultado el 29 de septiembre de 2019 .
  11. "*SO: iBoot" (PDF) .
  12. "El proceso de arranque temprano" . developer.apple.com . Consultado el 26 de agosto de 2017 .
  13. Khandelwal, Swati (8 de febrero de 2018). "Se filtra en Github el código fuente de iBoot de Apple para iPhone" . The Hacker News . Recuperado el 9 de julio de 2025 .
  14. "iRecovery en GitHub" . GitHub .
  15. "Información sobre iBoot de la Wiki de Apple" .
  16. "Implementación de iBoot segura para la memoria" . Seguridad de la plataforma de Apple . Apple . Consultado el 25 de enero de 2023 .
  17. "Apple confirma la filtración del código fuente del iPhone" . BBC News . 9 de febrero de 2018.
  18. "iBoot-87.1 en el iPhone 2G por mcg29 en Twitter" . 6 de marzo de 2024.
Obtenido de " https://en.wikipedia.org/w/index.php?title=IBoot&oldid=1341129073#Low-Level_Bootloader "