Skip to content
Trap Mach#-45Introduit dans macOS 10.0 Cheetah

svc · mach trap -45

task_for_pid

Retourne un port task Mach pour le processus avec le PID donné — la primitive clé pour l'accès mémoire inter-processus sur macOS.

Prototype

kern_return_t task_for_pid(mach_port_name_t target_tport, int pid, mach_port_name_t *t);

Retour: kern_return_t — KERN_SUCCESS, or KERN_FAILURE / KERN_INVALID_ARGUMENT on denial

Arguments

NameTypeDirDescription
target_tportmach_port_name_tinPort task de l'appelant (mach_task_self()).
pidintinIdentifiant du processus cible.
tmach_port_name_t *outReçoit le nom du port task (send right) en cas de succès.

Historique des versions

Absent de toute version XNU publiée.

Stub utilisateur

arm64

; libsystem_kernel.dylib: _task_for_pid
mov     x16, #-45
svc     #0x80
ret

x86_64

mov     eax, 0x100002D  ; SYSCALL_CLASS_MACH | 45
syscall
ret

Exemples

C — get task port for the active PID

mach_port_name_t target;
kern_return_t kr = task_for_pid(mach_task_self(), pid, &target);
if (kr != KERN_SUCCESS) {
    fprintf(stderr, "task_for_pid: %s\n", mach_error_string(kr));
    return 1;
}

Notes

task_for_pid est gouverné par le job launchd taskgated, AMFI, et SIP. L'appelant doit être root, posséder l'entitlement com.apple.security.cs.debugger, l'entitlement get-task-allow sur la cible, ou avoir reçu les privilèges Developer Tools via Réglages Système → Confidentialité et sécurité. Avec un task port, le détenteur peut appeler vm_read / vm_write / thread_create / thread_set_state sur la cible — donc exécution arbitraire.

Détection

Endpoint Security expose ES_EVENT_TYPE_NOTIFY_GET_TASK et AUTH_GET_TASK depuis macOS 11. Les systèmes plus anciens peuvent hooker taskgated via MACF. Les refus apparaissent dans /var/log/system.log sous « Security policy would not allow process ».

Utilisation par les malwares

task_for_pid est l'entrée de presque tout outillage d'injection de code macOS (injection osascript, injection de dylib via mach_vm_allocate + thread_create_running). Les implants étatiques — DazzleSpy, ChromeLoader-mac, JokerSpy — enchaînent tous task_for_pid + mach_vm_write + thread_create_running. Un appel réussi sur une cible non-soi sans entitlement de debug est presque toujours suspect.

API associées

task_name_for_pidprocessor_set_taskstask_get_special_portmach_vm_readmach_vm_writethread_create_running

MITRE ATT&CK

Malware references

  • DazzleSpy
  • JokerSpy
  • ChromeLoader (macOS variant)

Dernière vérification: 2026-05-25