EnĀ macOS 10.13 High Sierra se aƱade una nueva caracterĆstica de seguridad relacionada con las extensiones del sistema. Esta caracterĆstica solicita por parte del usuario una aprobación antes de la carga de estas extensiones incluso cuando estĆ”n firmadas por el desarrollador. Esta caracterĆstica requerirĆ” cambios en algunas aplicaciones e instaladores para preservar la experiencia de usuario.
Esta función impone que sólo las extensiones del kernel aprobadas por el usuario se carguen con el sistema. Cuando se realiza una solicitud para cargar un KEXT que el usuario aún no ha aprobado, la solicitud de carga se deniega y macOS presenta una alerta. Las extensiones de Kernel no firmadas se seguirÔn rechazando de forma automÔtica tal como ocurre en macOS Sierra.
Este cuadro de diÔlogo solicitarÔ al usuario que apruebe la carga de la extensión de Kernel a través del panel de control Seguridad y Privacidad en Preferencias del Sistema.
Cuando un usuario proporciona la aprobación, en realidad estÔn aprobando todos los otros KEXTs firmados por el mismo ID de equipo que se encuentra en el mismo lugar que el KEXT aprobado. Si el KEXT aprobado se encuentra en el paquete de la aplicación, también se aprueban todos los otros KEXT firmados por el mismo ID de equipo en el paquete de la misma aplicación.
Si el KEXT aprobado se encuentra en el subdirectorio de la aplicación /Library/Application Support
, o en /Library/Extensions
, tambiƩn se aprueban todos los KEXTs firmados por el mismo ID de equipo que se encuentran en ese mismo directorio.
Una vez aprobado, el KEXT serÔ inmediatamente cargado o agregado a la caché de kernel pre-enlazada, dependiendo de la acción bloqueada. Las solicitudes subsiguientes para cargar el KEXT procederÔn en segundo plano sin intervención del usuario como en versiones anteriores de macOS. Las extensiones de kernel se rastrean a través del identificador de equipo y el requisito designado en sus firmas de código, por lo que actualizar un KEXT que ya ha sido aprobado no activarÔ una nueva solicitud de aprobación.
Los instaladores y las aplicaciones que cargan las extensiones del kernel pueden necesitar ser revisadas para manejar correctamente la extensión del kernel al no cargarse. Muchas aplicaciones tratan un fallo de carga de KEXT como un fallo duro. Algunos instan al usuario a reinstalar, algunos presentan un mensaje de error crĆptico, y algunos simplemente no funcionan.
A partir de MacOS High Sierra, los instaladores y las aplicaciones que cargan KEXT deberĆan esperar que la carga de KEXT falle si el usuario no ha aprobado su KEXT. En lugar de tratar esto como un error, el usuario debe ser informado de que es posible que tenga que aprobar el KEXT.
Para determinar si un KEXT ha fallado al cargar porque no tiene el consentimiento del usuario:
- Si estƔs utilizando
kextutil
okextload
, comprueba el código de salida 27. AdemÔs,kextutil
producirĆ” el mensaje de errorSystem policy prevents loading the kernel extension.
- Si estƔs utilizando las API de
IOKit/kext/KextManager.h
enIOKit/kext/KextManager.h
, comprueba el código de resultadokOSKextReturnSystemPolicy
.
Al respecto de la distribución de aplicaciones de para empresa, para implementaciones empresariales en las que es necesario distribuir software que incluya extensiones de kernel sin requerir la aprobación del usuario, es necesario arrancar usando la partición de recuperación de macOS y utilizar spctl kext-consent
. Este comando puede desactivar completamente el requisito de aprobación del usuario o especificar una lista de ID de equipo cuyos KEXT se pueden cargar sin la aprobación del usuario. Para obtener mÔs información, ejecuta el comando spctl help
.
spctl
funciona en cualquier entorno de instalación, incluido el SO de recuperación y las imÔgenes NetBoot / NetInstall / NetRestore.