macOS 10.13 High Sierra: carga segura de extensiones kernel con aprobación del usuario

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.

MacOS High Sierra 10.13 introduce una nueva característica que requiere la aprobación del usuario antes de cargar nuevas extensiones de kernel de terceros instaladas. Las extensiones de kernel de terceros (KEXTs) que ya estaban presentes al actualizar a macOS High Sierra reciben una aprobación automática.Cuando se realiza una solicitud para cargar un KEXT que el usuario aún no ha aprobado, se rechaza la solicitud de carga. Las aplicaciones o los instaladores que tratan un error de carga de KEXT como un error duro tendrán que modificarse para manejar este nuevo caso.

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.

tn2459_blocked

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.

tn2459_approval

Esta UI de aprobación sólo está presente en el panel de preferencias Seguridad y privacidad durante 30 minutos después de un intento de carga bloqueada.La alerta muestra el nombre del desarrollador que firmó el KEXT para que el usuario tenga alguna información para decidir si aprueba o no la KEXT. Este nombre proviene del campo Nombre Común del Asunto del Certificado de Aplicación ID de Desarrollador utilizado para firmar el KEXT. Debido a esto, los desarrolladores se les anima a proporcionar el nombre de la empresa adecuada al solicitar kext identidades de firma.

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 o kextload , comprueba el código de salida 27. Además, kextutil producirá el mensaje de error System policy prevents loading the kernel extension.
  • Si estás utilizando las API de IOKit/kext/KextManager.h en IOKit/kext/KextManager.h , comprueba el código de resultado kOSKextReturnSystemPolicy .

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 .

El comando spctl funciona en cualquier entorno de instalación, incluido el SO de recuperación y las imágenes NetBoot / NetInstall / NetRestore.
0 0 votos
Article Rating
Subscribe
Notify of
0 Comments
Opiniones Inline
Ver todos los comentarios
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x