2 votos

Problemas con las listas blancas de las extensiones del Kernel de MacOS

Tratando de whitelist una extensión del kernel para un agente que estoy tratando de instalar. Estoy usando Mojave como la máquina cliente y Profile Manger en un servidor Mac que he configurado. Puedo inscribir la máquina cliente muy bien en Profile Manager, y puede recibir configuraciones enlatadas como restricciones de dispositivos externos, etc., pero parece que no puedo conseguir que las configuraciones personalizadas funcionen correctamente.

El proceso para que esto funcione es que he subido lo siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PayloadContent</key>
    <array>
        <dict>
            <key>AllowedKernelExtensions</key>
            <dict>
                <key>HLGBMCXUS7</key>
                <array>
                    <string>com.verdasys.dgagent</string>
                </array>
            </dict>
            <key>AllowedTeamIdentifiers</key>
            <array>
                <string>HLGBMCXUS7</string>
            </array>
            <key>PayloadDescription</key>
            <string>Configures Kernel Extension Policy settings</string>
            <key>PayloadDisplayName</key>
            <string>Kernel Extension Policy</string>
            <key>PayloadIdentifier</key>
            <string>com.github.erikberglund.ProfileCreator.F508AD6F-E398-402B-9928-1A2300C1E229.com.apple.syspolicy.kernel-extension-policy.69B09342-9C35-4FB8-9C18-6DF2A53E7C0C</string>
            <key>PayloadOrganization</key>
            <string></string>
            <key>PayloadType</key>
            <string>com.apple.syspolicy.kernel-extension-policy</string>
            <key>PayloadUUID</key>
            <string>69B09342-9C35-4FB8-9C18-6DF2A53E7C0C</string>
            <key>PayloadVersion</key>
            <integer>1</integer>
        </dict>
    </array>
    <key>PayloadDescription</key>
    <string>allows extensions from specific extension Team Identifiers</string>
    <key>PayloadDisplayName</key>
    <string>DigitalGuardian</string>
    <key>PayloadIdentifier</key>
    <string>com.github.erikberglund.ProfileCreator.F508AD6F-E398-402B-9928-1A2300C1E229</string>
    <key>PayloadOrganization</key>
    <string>ProfileCreator</string>
    <key>PayloadRemovalDisallowed</key>
    <true/>
    <key>PayloadScope</key>
    <string>System</string>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadUUID</key>
    <string>F508AD6F-E398-402B-9928-1A2300C1E229</string>
    <key>PayloadVersion</key>
    <integer>1</integer>
</dict>
</plist>

como un archivo .plist utilizando "com.apple.syspolicy.kernel-extension-policy" como dominio de política en Profile Manager, guardando la configuración en profile manager, y luego descargando un archivo .mobileconfig.

Muevo ese archivo .mobileconfig al cliente ya inscrito, y ejecuto el archivo y salvo las indicaciones para instalar el perfil en profile->system prefs. Esto va con éxito y veo verde "verificado" en la parte superior

PERO

no resulta en la adición del ID del equipo en la DB (al menos no hasta ahora).

Estoy usando el siguiente código para tratar de leer la DB sqlite para verificar:

#!/bin/sh
# Gather list of User Approved Kernel Extensions. 20180313 DM

folder=.
file=checkKEXTs.csv

# Create folder
/bin/mkdir -p ${folder}
/usr/sbin/chown root:admin ${folder}
/bin/chmod 755 ${folder}

/usr/bin/sqlite3 -csv /var/db/SystemPolicyConfiguration/KextPolicy "select team_id,bundle_id from kext_policy" > ${folder}/${file}

exit 0

Sí veo entradas, pero son para VMware. Nunca para los productos anteriores.

Buscando en la consola, veo lo siguiente:

rejecting write of key _DKThrottledActivityLast_DKKnowledgeStorageLogging_DKKnowledgeStorageDidInsertEventsNotification:/app/usageActivityDate in { com.apple.contextstored, root, kCFPreferencesAnyHost, no container, managed: 0 } from process 151 because setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access

y

Sandbox: contextstored(151) deny(1) file-write-data /private/var/root/Library/Preferences/com.apple.contextstored.plist
Violation:       deny(1) file-write-data /private/var/root/Library/Preferences/com.apple.contextstored.plist 
Process:         contextstored [151]
Path:            /System/Library/PrivateFrameworks/CoreDuetContext.framework/Versions/A/Resources/contextstored
Load Address:    0x1077f3000
Identifier:      contextstored
Version:         ??? (???)
Code Type:       x86_64 (Native)
Parent Process:  launchd [1]
Responsible:     /System/Library/PrivateFrameworks/CoreDuetContext.framework/Resources/contextstored [151]
User ID:         0

Date/Time:       2019-02-23 17:09:04.228 PST
OS Version:      Mac OS X 10.14.3 (18D109)
Report Version:  8

MetaData: {"checker":"cfprefsd","target":"\/private\/var\/root\/Library\/Preferences\/com.apple.contextstored.plist","profile-in-collection":false,"signing-id":"com.apple.contextstored","profile-flags":0,"build":"Mac OS X 10.14.3 (18D109)","errno":1,"primary-filter":"path","responsible-process-path":"\/System\/Library\/PrivateFrameworks\/CoreDuetContext.framework\/Resources\/contextstored","platform-policy":false,"action":"deny","process":"contextstored","sandbox_checker":"cfprefsd","flags":5,"responsible-process-pid":151,"normalized_target":["private","var","root","Library","Preferences","com.apple.contextstored.plist"],"checker-pid":116,"hardware":"Mac","file-flags":0,"process-path":"\/System\/Library\/PrivateFrameworks\/CoreDuetContext.framework\/Versions\/A\/Resources\/contextstored","summary":"deny(1) file-write-data \/private\/var\/root\/Library\/Preferences\/com.apple.contextstored.plist","platform-binary":true,"platform_binary":"yes","vnode-type":"REGULAR-FILE","uid":0,"primary-filter-value":"\/private\/var\/root\/Library\/Preferences\/com.apple.contextstored.plist","operation":"file-write-data","pid":151,"rdev":0,"path":"\/private\/var\/root\/Library\/Preferences\/com.apple.contextstored.plist"}

Thread 0 (id: 809):
0   libsystem_kernel.dylib          0x00007fff6c47117a mach_msg_trap + 10
1   CoreFoundation                  0x00007fff3f052158 __CFRunLoopServiceMachPort + 336
2   CoreFoundation                  0x00007fff3f0516a6 __CFRunLoopRun + 1661
3   CoreFoundation                  0x00007fff3f050dd6 CFRunLoopRunSpecific + 467
4   CoreFoundation                  0x00007fff3f050bde CFRunLoopRun + 40
5   contextstored                   0x00000001077f6525
6   libdyld.dylib                   0x00007fff6c337ed9 start + 1
7   contextstored                   0x0000000000000001

Thread 1 (id: 5898):
0   libsystem_kernel.dylib          0x00007fff6c472b6a __workq_kernreturn + 10
1   libsystem_pthread.dylib         0x00007fff6c52a405 start_wqthread + 13

Thread 2 (id: 5904):
0   libsystem_kernel.dylib          0x00007fff6c472b6a __workq_kernreturn + 10
1   libsystem_pthread.dylib         0x00007fff6c52a405 start_wqthread + 13
2   contextstored                   0x0000000054485244

Thread 3 (id: 5923):
0   libsystem_kernel.dylib          0x00007fff6c47117a mach_msg_trap + 10
1   libdispatch.dylib               0x00007fff6c3016ff _dispatch_mach_msg_send + 1087
2   libdispatch.dylib               0x00007fff6c300eeb _dispatch_mach_send_drain + 440
3   libdispatch.dylib               0x00007fff6c2fda5a _dispatch_mach_send_msg + 307
4   libdispatch.dylib               0x00007fff6c2fdd15 _dispatch_mach_send_and_wait_for_reply + 382
5   libdispatch.dylib               0x00007fff6c2fe2ad dispatch_mach_send_with_result_and_wait_for_reply + 53
6   libxpc.dylib                    0x00007fff6c569161 xpc_connection_send_message_with_reply_sync + 178
7   CoreFoundation                  0x00007fff3f0c03ea __91-[CFPrefsPlistSource sendFullyPreparedMessage:toConnection:settingValue:forKey:retryCount:]_block_invoke + 29
8   CoreFoundation                  0x00007fff3f047b4d -[_CFXPreferences withConnectionForRole:performBlock:] + 36
9   CoreFoundation                  0x00007fff3f0c03be -[CFPrefsPlistSource sendFullyPreparedMessage:toConnection:settingValue:forKey:retryCount:] + 202
10  CoreFoundation                  0x00007fff3f0c0025 -[CFPrefsPlistSource sendMessageSettingValue:forKey:] + 605
11  CoreFoundation                  0x00007fff3f0bf60a -[CFPrefsPlistSource alreadylocked_setPrecopiedValues:forKeys:count:from:] + 579
12  CoreFoundation                  0x00007fff3f08357b -[CFPrefsSource setValues:forKeys:count:copyValues:removeValuesForKeys:count:from:] + 394
13  CoreFoundation                  0x00007fff3f0833eb -[CFPrefsSource setValues:forKeys:count:copyValues:from:] + 28
14  CoreFoundation                  0x00007fff3f0c204a -[CFPrefsSearchListSource alreadylocked_setPrecopiedValues:forKeys:count:from:] + 1000
15  CoreFoundation                  0x00007fff3f08357b -[CFPrefsSource setValues:forKeys:count:copyValues:removeValuesForKeys:count:from:] + 394
16  CoreFoundation                  0x00007fff3f0833eb -[CFPrefsSource setValues:forKeys:count:copyValues:from:] + 28
17  CoreFoundation                  0x00007fff3f0bf3ac -[CFPrefsSource setValue:forKey:from:] + 71
18  CoreFoundation                  0x00007fff3f02fdb0 __108-[_CFXPreferences(SearchListAdditions) withSearchListForIdentifier:container:cloudConfigurationURL:perform:]_block_invoke + 268
19  CoreFoundation                  0x00007fff3f02fa72 -[_CFXPreferences(SearchListAdditions) withSearchListForIdentifier:container:cloudConfigurationURL:perform:] + 337
20  CoreFoundation                  0x00007fff3f0c1c39 -[_CFXPreferences setValue:forKey:appIdentifier:container:configurationURL:] + 90
21  CoreFoundation                  0x00007fff3f0c1bad _CFPreferencesSetAppValueWithContainerAndConfiguration + 116
22  Foundation                      0x00007fff41437ec3 -[NSUserDefaults(NSUserDefaults) setObject:forKey:] + 55
23  CoreDuet                        0x00007fff52f61de4 -[_DKActivityThrottler setDate:forKey:] + 116
24  CoreDuet                        0x00007fff52f60e74 -[_DKActivityThrottler _performNoMoreOftenInSecondsThan:name:activityBlock:throttleBlock:] + 340
25  CoreDuet                        0x00007fff52f616e6 __94-[_DKActivityThrottler _performOrScheduleWithTimeInterval:name:queue:activityBlock:callDepth:]_block_invoke.123 + 48
26  libdispatch.dylib               0x00007fff6c2e8d53 _dispatch_call_block_and_release + 12
27  libdispatch.dylib               0x00007fff6c2e9dcf _dispatch_client_callout + 8
28  libdispatch.dylib               0x00007fff6c2f0124 _dispatch_lane_serial_drain + 618
29  libdispatch.dylib               0x00007fff6c2f0bdc _dispatch_lane_invoke + 388
30  libdispatch.dylib               0x00007fff6c2f9090 _dispatch_workloop_worker_thread + 603
31  libsystem_pthread.dylib         0x00007fff6c52a60b _pthread_wqthread + 409
32  libsystem_pthread.dylib         0x00007fff6c52a405 start_wqthread + 13

Binary Images:
       0x1077f3000 -        0x1077f7ff3  contextstored (915.240.4) <3a7911f4-4f46-377e-ac35-01772ef5c88a> /System/Library/PrivateFrameworks/CoreDuetContext.framework/Versions/A/Resources/contextstored
    0x7fff3f016000 -     0x7fff3f464ff7  com.apple.CoreFoundation (6.9 - 1562) <da75643f-6cf0-3fb1-b047-c142152e63b6> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
    0x7fff413b9000 -     0x7fff41787fff  com.apple.Foundation (6.9 - 1562) <83d4a12b-ea5a-3c62-8d93-95e64f0a256b> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
    0x7fff52e77000 -     0x7fff5304dff3  com.apple.CoreDuet (1.0 - 1) <186c84c2-679e-3a75-86e1-0b4e7c155b4e> /System/Library/PrivateFrameworks/CoreDuet.framework/Versions/A/CoreDuet
    0x7fff6c2e6000 -     0x7fff6c320ff7  libdispatch.dylib (1008.220.2) <2fdb1401-5119-3df0-91f5-f4e105f00cd7> /usr/lib/system/libdispatch.dylib
    0x7fff6c321000 -     0x7fff6c350ff3  libdyld.dylib (655.1) <90c801e7-5d05-37a8-810c-b58e8c53953a> /usr/lib/system/libdyld.dylib
    0x7fff6c470000 -     0x7fff6c498ff7  libsystem_kernel.dylib (4903.241.1) <ca10bc3a-5b09-32ce-b74f-bad01755aa37> /usr/lib/system/libsystem_kernel.dylib
    0x7fff6c528000 -     0x7fff6c532fff  libsystem_pthread.dylib (330.230.1) <80cc5992-823e-327e-bb6e-9d4568b84161> /usr/lib/system/libsystem_pthread.dylib
    0x7fff6c55f000 -     0x7fff6c58ffff  libxpc.dylib (1336.240.2) <ee0cda53-6ff9-3b4e-a571-335a5ff6b6f4> /usr/lib/system/libxpc.dylib

Estos mensajes de registro aparecen justo en el momento en que instalo el archivo .mobileconfig cada vez, así que sospecho que hay una correlación. He intentado reparar los permisos sin éxito. Lo único que no he hecho es probar esto en otro Mac, que puede que lo intente también. También he probado a utilizar un archivo .plist que sólo incluya configuraciones para los ID de paquete o los ID de equipo respectivamente (no combinados como en el caso anterior) sin éxito.

Lo peor es que estoy teniendo dificultades para solucionar el problema. No entiendo muy bien los mecanismos subyacentes, así que estoy abierto a recibir consejos para solucionar el problema. También puede ser que haya algo mal en mi código .plist pero no lo veo. También estoy abierto a sugerencias. Parece que mi máquina de prueba está tratando de confirmar la configuración, pero no está funcionando.

Otra cosa: también noté errores relacionados con el archivo "DetachedSignatures" en los registros y copié un archivo de otra máquina en la de prueba en la carpeta /var/db (creo) y los errores desaparecieron. Ni idea de si están relacionados.

Como puedes ver, me estoy agarrando a un clavo ardiendo. Esperando y rezando para que los dioses moderadores sean benévolos conmigo y me permitan mantener este post activo para poder recibir ayuda. Muchas gracias de antemano por leer esto y espero que con su ayuda pueda superar esto. Seguramente es algo tonto que se me escapa.

1voto

user245481 Puntos 1

Muy bien, voy a actualizar este post con lo que he aprendido. En primer lugar, no fui capaz de resolver el problema original y he tenido más de un par de otros expertos experimentados me ayudan a tratar sin éxito. Estoy súper agradecido a ellos por su ayuda. En el camino, sin embargo, descubrí que las versiones más recientes de Apple Server, que sólo es compat con 10.13 y 10.14, contiene una versión del gestor de perfiles que incluye la configuración de la extensión del núcleo incorporado. Funcionan sin problemas.

Otra cosa: el script mostrado arriba no es un scriptválido para saber si la política de mobileconfig que se está aplicando permite realmente los IDs de equipo que está configurado para permitir, así que esa era una mala prueba. No sé qué sería mejor. Todo lo que sé es que antes de cambiar la configuración incorporada en PM, no estaba funcionando. Después de cambiar esa configuración, funcionó perfectamente.

Por último, estaba impulsando las políticas descargándolas e instalándolas manualmente en el ordenador, lo que aparentemente no va a funcionar en absoluto para Kernel Extensions.

Sólo comparto lo poco que sé sobre esto para que algún pobre imbécil por ahí no tenga que pasar el calvario que yo pasé.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X