Skip to content
Trap Mach#-100

svc · mach trap -100

iokit_user_client_trap

Piège à chemin rapide pour invoquer des sélecteurs sur un IOUserClient sans passer par MIG.

Prototype

kern_return_t iokit_user_client_trap(/* 8 args */);

Retour: kern_return_t

Historique des versions

XNU tagmacOS#
xnu-792macOS 10.4 Tiger-100
xnu-1228macOS 10.5 Leopard-100
xnu-1456.1.26macOS 10.6 Snow Leopard-100
xnu-1699.24.8macOS 10.7 Lion-100
xnu-2050.18.24macOS 10.8 Mountain Lion-100
xnu-2422.115.4macOS 10.9 Mavericks-100
xnu-2782.40.9macOS 10.10 Yosemite-100
xnu-3247.1.106macOS 10.11 El Capitan-100
xnu-3789.1.32macOS 10.12 Sierra-100
xnu-4570.1.46macOS 10.13 High Sierra-100
xnu-4903.221.2macOS 10.14 Mojave-100
xnu-6153.11.26macOS 10.15 Catalina-100
xnu-7195.50.7.100.1macOS 11.0 Big Sur-100
xnu-8019.41.5macOS 12.0 Monterey-100
xnu-8792.41.9macOS 13.0 Ventura-100
xnu-10002.1.13macOS 14.0 Sonoma-100
xnu-11215.1.10macOS 15.0 Sequoia-100
xnu-11417.101.15macOS 15.4 Sequoia-100
xnu-12377.1.9macOS 26.0 Tahoe-100
xnu-10002.41.9-100
xnu-10002.61.3-100
xnu-10002.81.5-100
xnu-10063.101.15-100
xnu-10063.121.3-100
xnu-10063.141.1-100
xnu-11215.41.3-100
xnu-11215.61.5-100
xnu-11215.81.4-100
xnu-11417.121.6-100
xnu-11417.140.69-100
xnu-1228.0.2-100
xnu-1228.12.14-100
xnu-1228.15.4-100
xnu-1228.3.13-100
xnu-1228.5.18-100
xnu-1228.5.20-100
xnu-1228.7.58-100
xnu-1228.9.59-100
xnu-12377.101.15-100
xnu-12377.41.6-100
xnu-12377.61.12-100
xnu-12377.81.4-100
xnu-1486.2.11-100
xnu-1504.15.3-100
xnu-1504.3.12-100
xnu-1504.7.4-100
xnu-1504.9.17-100
xnu-1504.9.26-100
xnu-1504.9.37-100
xnu-1699.22.73-100
xnu-1699.22.81-100
xnu-1699.24.23-100
xnu-1699.26.8-100
xnu-1699.32.7-100
xnu-2050.22.13-100
xnu-2050.24.15-100
xnu-2050.48.11-100
xnu-2050.7.9-100
xnu-2050.9.2-100
xnu-2422.1.72-100
xnu-2422.100.13-100
xnu-2422.110.17-100
xnu-2422.90.20-100
xnu-2782.1.97-100
xnu-2782.10.72-100
xnu-2782.20.48-100
xnu-2782.30.5-100
xnu-3247.10.11-100
xnu-3248.20.55-100
xnu-3248.30.4-100
xnu-3248.40.184-100
xnu-3248.50.21-100
xnu-3248.60.10-100
xnu-3789.21.4-100
xnu-3789.31.2-100
xnu-3789.41.3-100
xnu-3789.51.2-100
xnu-3789.60.24-100
xnu-3789.70.16-100
xnu-4570.20.62-100
xnu-4570.31.3-100
xnu-4570.41.2-100
xnu-4570.51.1-100
xnu-4570.61.1-100
xnu-4570.71.2-100
xnu-4903.231.4-100
xnu-4903.241.1-100
xnu-4903.270.47-100
xnu-6153.101.6-100
xnu-6153.121.1-100
xnu-6153.141.1-100
xnu-6153.41.3-100
xnu-6153.61.1-100
xnu-6153.81.5-100
xnu-7195.101.1-100
xnu-7195.121.3-100
xnu-7195.141.2-100
xnu-7195.60.75-100
xnu-7195.81.3-100
xnu-792.1.5-100
xnu-792.10.96-100
xnu-792.12.6-100
xnu-792.13.8-100
xnu-792.17.14-100
xnu-792.18.15-100
xnu-792.2.4-100
xnu-792.21.3-100
xnu-792.22.5-100
xnu-792.24.17-100
xnu-792.25.20-100
xnu-792.6.22-100
xnu-792.6.56-100
xnu-792.6.61-100
xnu-792.6.70-100
xnu-792.6.76-100
xnu-8019.61.5-100
xnu-8019.80.24-100
xnu-8020.101.4-100
xnu-8020.121.3-100
xnu-8020.140.41-100
xnu-8792.61.2-100
xnu-8792.81.2-100
xnu-8796.101.5-100
xnu-8796.121.2-100
xnu-8796.141.3-100

Notes

Les pilotes exposent des sélecteurs externalMethod à l'espace utilisateur via IOConnectCallMethod ; pour les sélecteurs prenant de petits arguments scalaires et aucune structure, le chemin de libIOKit se réduit à iokit_user_client_trap, qui se dispatche directement dans IOUserClient::getTargetAndTrapForIndex du pilote. Ce piège est massivement utilisé par les pilotes GPU, le HAL audio et HID. Les sélecteurs et arguments sont entièrement définis par le pilote, donc c'est une surface d'attaque courante pour les exploits noyau — les pilotes doivent valider agressivement les entrées.

Détection

DTrace mach_trap:::entry avec probefunc == "iokit_user_client_trap" expose le port de connexion et l'index de sélecteur ; ioreg(8) et ioclasscount donnent le contexte du pilote appelé. Endpoint Security n'expose pas le trafic IOKit.

API associées

IOConnectCallMethodIOConnectCallScalarMethodIOServiceOpenIOUserClient::externalMethod