Seguridad del volumen del sistema firmado
En macOS 10.15, Apple introdujo el volumen del sistema de solo lectura, que es un volumen aislado y dedicado para el contenido del sistema. macOS 11 o posterior añade fuertes medidas de protección criptográfica para el contenido del sistema con un volumen del sistema firmado (SSV). El SSV incluye un mecanismo del kernel que verifica la integridad del contenido del sistema en tiempo de ejecución y rechaza todos los datos (de código o no) sin una firma criptográfica válida de Apple. A partir de iOS 15 y iPadOS 15, el volumen del sistema en un iPhone o iPad también obtiene la protección criptográfica de un volumen del sistema firmado.
El SSV no solo ayuda a evitar la manipulación del software de Apple que forma parte del sistema operativo, sino que también garantiza que las actualizaciones de software de macOS sean más fiables y mucho más seguras. Dado que el SSV utiliza instantáneas del sistema de archivos de Apple (APFS), si no se puede llevar a cabo una actualización, la antigua versión del sistema puede restaurarse sin necesidad de reinstalar.
Desde su introducción, APFS ha proporcionado integridad de metadatos del sistema de archivos mediante sumas de control no criptográficas en el dispositivo de almacenamiento interno. El SSV refuerza el mecanismo de integridad al añadir hashes criptográficos y ampliarlo para abarcar cada byte de los datos de archivos. Los datos del dispositivo de almacenamiento interno (incluidos los metadatos del sistema de archivos) se convierten en un hash criptográfico en la ruta de lectura y el hash se compara con un valor esperado en los metadatos del sistema de archivos. En caso de discrepancia, el sistema asume que los datos se han manipulado y no los devolverá al software que los solicite.
Cada hash SHA256 del SSV se almacena en el árbol de metadatos del sistema de archivos principal, que también se convierte en un hash. Dado que cada nodo del árbol verifica de forma recursiva la integridad de los hashes de sus elementos secundarios —como un árbol de hash binario (Merkle)—, el valor de hash del nodo raíz, denominado sello, abarca cada byte de datos en el SSV, de modo que la firma criptográfica cubre el volumen del sistema completo.
Durante la instalación y actualización de macOS, el sello se vuelve a calcular desde el sistema de archivos del dispositivo y esa medición se verifica con la medición que Apple ha firmado. En un Mac con chip de Apple, el cargador de arranque verifica el sello antes de transferir el control al kernel. En un Mac basado en Intel con un chip de seguridad T2 de Apple, el cargador de arranque reenvía la medición y la firma al kernel que, a su vez, verifica el sello directamente antes de montar el sistema de archivos raíz. En cada caso, si la verificación falla, el proceso de arranque se detendrá y se solicitará al usuario que reinstale macOS. Este procedimiento se repite en cada arranque a menos que el usuario elija acceder a un modo de seguridad inferior y haya decidido por separado desactivar el volumen del sistema firmado.
Durante las actualizaciones de software de iOS y iPadOS, el volumen del sistema se prepara y se vuelve a calcular de forma similar. Los cargadores de arranque de iOS y iPadOS verifican que el sello está intacto y que coincide con un valor firmado por Apple antes de permitir que el dispositivo inicie el kernel. Las discrepancias en el arranque piden al usuario que actualice el software del sistema en el dispositivo. Los usuarios no pueden desactivar la protección de un volumen de sistema firmado en iOS y iPadOS.
SSV y firma del código
La firma del código sigue vigente y el kernel exige su aplicación. El volumen del sistema firmado proporciona protección cuando se lee cualquier byte del dispositivo de almacenamiento interno. Por su parte, la firma de código proporciona protección cuando se asignan mediante la memoria objetos Mach como ejecutables. Tanto el SSV como la firma del código protegen código ejecutable en todas las rutas de lectura y ejecución.
SSV y FileVault
En macOS 11 o posterior, el SSV proporciona una protección en reposo equivalente para el contenido del sistema y, por lo tanto, no es necesario que el volumen del sistema se encripte. El sistema de archivos detecta todas las modificaciones que se le realicen mientras está en reposo cuando estas se lean. Si el usuario ha activado FileVault, el contenido del usuario en el volumen de datos se seguirá encriptando con un secreto proporcionado por el usuario.
Si el usuario decide desactivar el SSV, el sistema en reposo será vulnerable a la manipulación y dicha manipulación podría permitir a un atacante extraer datos del usuario encriptados la próxima vez que arranque el sistema. Por lo tanto, el sistema no permitirá que se desactive el SSV si FileVault está activado. La protección en reposo debe activarse o desactivarse para ambos volúmenes de manera coherente.
En macOS 10.15 o versiones anteriores, FileVault protege el software del sistema operativo en reposo al encriptar el contenido del usuario y del sistema con una clave protegida por un secreto proporcionado por el usuario. Esto protege frente a un atacante con acceso físico al dispositivo, impidiéndole que acceda al sistema de archivos que contiene el software del sistema o lo modifique.
El SSV y un Mac con un chip de seguridad T2 de Apple
En un Mac con un chip de seguridad T2 de Apple, solo macOS está protegido por el SSV. El software que se ejecuta en el chip T2 y verifica macOS está protegido por el arranque seguro.