Seguridad del volumen del sistema firmado
En macOS 10.15, Apple implementó el volumen del sistema de sólo lectura, el cual es un volumen dedicado y separado para el contenido del sistema. macOS 11 o versiones posteriores agregan protección criptográfica fuerte al contenido del sistema con un volumen de sistema firmado (SSV). El SSV cuenta con un mecanismo de kernel que verifica la integridad del contenido del sistema durante la ejecución, y rechaza cualquier dato, ya sea código o no, que no cuente con una firma criptográfica válida de Apple. A partir de iOS 15 y iPadOS 15, el volumen del sistema de un dispositivo iPhone o iPad también obtiene la protección criptográfica de un volumen del sistema firmado.
El SSV no sólo ayuda a evitar la manipulación de cualquier software de Apple que sea parte del sistema operativo, sino que también hace que la actualización del software macOS sea más confiable y mucho más segura. Además, debido a que el SSV usa instantáneas Apple File System (APFS), si no se puede ejecutar una actualización, se puede restaurar la versión del sistema antiguo sin necesidad de reinstalarlo.
Desde su implementación, APFS ha proporcionado integridad a los metadatos del sistema de archivos usando sumas no criptográficas en el dispositivo de almacenamiento interno. SSV refuerza el mecanismo de integridad al agregar hashes criptográficos, lo que la extiende para incluir todos los bytes de los datos del archivo. Los datos del dispositivo de almacenamiento interno (incluidos los metadatos del sistema de archivos) se generan en un hash de forma criptográfica, y posteriormente el hash se compara con un valor esperado en los metadatos del sistema de archivos. En caso de no coincidir, el sistema asume que los datos han sido alterados y no los devolverá al software que los solicita.
Cada hash SHA256 del SSV se almacena en el árbol de metadatos del sistema de archivos principal, el cual tiene generados hash. Y, debido a que cada nodo del árbol verifica de forma recursiva la integridad de los valores hash de los elementos secundarios (similar a un árbol hash binario (Merkle), el valor hash del nodo raíz, llamado sello, abarca cada byte de datos en el SSV, lo que significa que la firma criptográfica cubre todo el volumen del sistema.
Durante la instalación y actualización de macOS, el sello se recalcula desde el sistema de archivos en el dispositivo, y esa medición se verifica respecto a las medidas firmadas por Apple. En las computadoras Mac con Apple Chip, el gestor de arranque verifica el sello antes de transferir el control al kernel. En las computadoras Mac basadas en Intel que cuentan con el chip de seguridad T2 de Apple, el gestor de arranque reenvía la medición y firma al kernel, que posteriormente verifica el sello directamente antes de montar el sistema de archivos raíz. En cualquier caso, si falla la verificación, el proceso de arranque se detendrá, y se le pedirá al usuario que reinstale macOS. Este procedimiento se repite en cada arranque, a menos que el usuario haya elegido entrar en un modo de seguridad más bajo y que haya decidido desactivar el volumen de 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 coincida con un valor firmado por Apple antes de permitir que el dispositivo inicie el kernel. Las inconsistencias en el arranque hacen que el usuario 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 de código
La firma de código todavía está presente y obligada por el kernel. El volumen del sistema firmado ofrece protección cuando se leen bytes desde el dispositivo de almacenamiento interno. Por el contrario, la firma de código proporciona protección cuando los objetos Mach se asignan en la memoria como ejecutables. Tanto el SSV como la firma de código protegen el código ejecutable en todas las rutas de lectura y ejecución.
SSV y FileVault
En macOS 11 o versiones posteriores, el SSV proporciona una protección en reposo equivalente para el contenido del sistema y, por lo tanto, ya no es necesario encriptar el volumen del sistema. El sistema de archivos detecta cualquier modificación que se realice al sistema de archivos en reposo cuando se realiza la lectura. Si el usuario activó FileVault, el contenido del usuario en el volumen de datos se mantiene encriptado con un secreto proporcionado por el usuario.
Si el usuario elige desactivar el SSV, el sistema en reposo se vuelve vulnerable a las alteraciones, y estas alteraciones podrían permitir a un atacante extraer datos del usuario encriptados la próxima vez que arranque el sistema. Es por esto que el sistema no permite al usuario desactivar el SSV si FileVault está activado. La protección durante el reposo se debe activar o desactivar para ambos volúmenes de una forma consistente.
En macOS 10.15 o versiones anteriores, FileVault protege el software del sistema operativo en reposo al encriptar el contenido de usuario y sistema con una clave protegida por un secreto proporcionado por el usuario. Esto protege contra un atacante con acceso físico al dispositivo para que no acceda o modifique efectivamente el sistema de archivos que contiene el software del sistema.
SSV y computadoras Mac con el chip de seguridad T2 de Apple
En las computadoras Mac con el chip de seguridad T2 de Apple, sólo macOS está protegido por el SSV. El software que se ejecuta en el chip T2 y verifica macOS está protegido por el arranque seguro.