¿Cómo puedo saber que un usuario permitió que las extensiones de kernel de terceros de seguridad y privacidad se carguen en High Sierra?

He creado una extensión de kernel para macOS High Sierra.

Cuando el archivo de extensión del kernel se carga en High Sierra, el usuario debe permitirlo en las preferencias de Seguridad y privacidad.

¿Cómo puedo verificar que el usuario permitió que mi extensión de kernel se cargara correctamente? ¿Hay algún archivo en el que se almacenen los detalles de la extensión del kernel permitidos por el usuario?

¿No recibe un error si su aplicación usa la funcionalidad provista por kext pero kext no está instalado/habilitado?
sí... mi aplicación da un error si la extensión del kernel no está instalada, pero quiero verificar antes de ejecutar mi aplicación, ¿el usuario está permitido en Seguridad y privacidad?
¿Su aplicación ya no se está ejecutando cuando realiza la verificación? En caso afirmativo, ¿por qué no llamar al kext y manejar el error de manera significativa? En general, esto se parece más a una pregunta de diseño de software.

Respuestas (1)

Encontré una publicación relacionada en StackOverflow propiamente dicha que muestra que la información sobre las aprobaciones se almacena en la base de datos sqlite3 en/var/db/SystemPolicyConfiguration/KextPolicy

Si puede encontrar su kext en la kext_policytabla, entonces ha sido aprobado. Aquí hay un ejemplo:

sqlite3 /var/db/SystemPolicyConfiguration/KextPolicy
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite> select * from kext_policy;
...
4C6364ACXT|com.parallels.kext.hypervisor|1|Parallels International GmbH|1
4C6364ACXT|com.parallels.kext.vnic|1|Parallels International GmbH|1
4C6364ACXT|com.parallels.kext.netbridge|1|Parallels International GmbH|1
4C6364ACXT|com.parallels.kext.usbconnect|1|Parallels International GmbH|1
...
sqlite>

Necesitaba esta información para saber por qué Parallels de repente vuelve a solicitar mi aprobación hoy, cuando, como puede ver, claramente ya se ha otorgado, pero para mi beneficio, las Preferencias del sistema no me presentan ningún botón "Permitir" para concédelo de nuevo. Quizás Parallels esté detectando que se debe aprobar un nuevo kext, pero parece que Parallels aún no ha intentado cargarlo.

Desafortunadamente para mí, dado que esperaba poder eliminar el permiso y recuperar el botón "Permitir", la base de datos es estrictamente de solo lectura. El procedimiento para eliminar las aprobaciones implica arrancar con una partición de recuperación y suena oneroso. ¡Supongo que esperaré a que el soporte de Parallels responda a través de Twitter!

El crédito por esta respuesta es para el usuario de StackOverflow @mikhail-iakhiaev https://stackoverflow.com/a/51684219/661659

(Editar: el problema no fue con Parallels, mi mesa de ayuda admitió que todas nuestras estaciones de trabajo Mac administradas recibieron una actualización hoy que eliminó nuestra capacidad de aprobar kexts como usuarios. Esperan solucionarlo mañana, pero en beneficio de su pregunta , esa es otra vía en la que sus usuarios podrían haber terminado sin poder aprobar sus kexts como lo haría cualquier otro usuario. ¡Espero que esto ayude!)

Creo que se permite abrir la base de datos /var/db/SystemPolicyConfiguration/KextPolicy desde mojave. El comando /usr/bin/sqlite3 /var/db/SystemPolicyConfiguration/KextPolicy da error Error: no se puede abrir la base de datos "/var/db/SystemPolicyConfiguration/KextPolicy": no se puede abrir el archivo de la base de datos
@AmitHooda "sudo /usr/bin/sqlite3 /var/db/SystemPolicyConfiguration/KextPolicy": todavía funciona en Mojave. Tenga en cuenta que esto es de solo lectura y solo puede cambiar el archivo con los pasos algo onerosos para poner el sistema en modo de recuperación. Mi última palabra debería haber sido que el software dañado se debió a un cambio de política del equipo de servicios de soporte de escritorio de mi organización. Tuvieron que agregar los paralelos kext a una política central y varias otras herramientas de las que escuché.
Gracias por la respuesta. Me di cuenta de que Sudo funciona. Sí, solo podemos hacer cambios en el modo de recuperación al deshabilitar csrutil disabled y luego reiniciar y luego eliminar la entrada de la base de datos KextPolicy.