Skip to content
Syscall BSD#380

svc · unix #380

__mac_execve

Variante d'execve qui applique simultanément une étiquette MAC à la nouvelle image de processus.

Prototype

int __mac_execve(char *fname, char **argp, char **envp, struct mac *mac_p);

Retour: int

Arguments

NameTypeDirDescription
fnamechar-
argpchar-
envpchar-
mac_pstruct mac-

Historique des versions

XNU tagmacOS#
xnu-1456.1.26macOS 10.6 Snow Leopard380
xnu-1699.24.8macOS 10.7 Lion380
xnu-2050.18.24macOS 10.8 Mountain Lion380
xnu-2422.115.4macOS 10.9 Mavericks380
xnu-2782.40.9macOS 10.10 Yosemite380
xnu-3247.1.106macOS 10.11 El Capitan380
xnu-3789.1.32macOS 10.12 Sierra380
xnu-4570.1.46macOS 10.13 High Sierra380
xnu-4903.221.2macOS 10.14 Mojave380
xnu-6153.11.26macOS 10.15 Catalina380
xnu-7195.50.7.100.1macOS 11.0 Big Sur380
xnu-8019.41.5macOS 12.0 Monterey380
xnu-8792.41.9macOS 13.0 Ventura380
xnu-10002.1.13macOS 14.0 Sonoma380
xnu-11215.1.10macOS 15.0 Sequoia380
xnu-11417.101.15macOS 15.4 Sequoia380
xnu-12377.1.9macOS 26.0 Tahoe380
xnu-10002.41.9380
xnu-10002.61.3380
xnu-10002.81.5380
xnu-10063.101.15380
xnu-10063.121.3380
xnu-10063.141.1380
xnu-11215.41.3380
xnu-11215.61.5380
xnu-11215.81.4380
xnu-11417.121.6380
xnu-11417.140.69380
xnu-12377.101.15380
xnu-12377.41.6380
xnu-12377.61.12380
xnu-12377.81.4380
xnu-1486.2.11380
xnu-1504.15.3380
xnu-1504.3.12380
xnu-1504.7.4380
xnu-1504.9.17380
xnu-1504.9.26380
xnu-1504.9.37380
xnu-1699.22.73380
xnu-1699.22.81380
xnu-1699.24.23380
xnu-1699.26.8380
xnu-1699.32.7380
xnu-2050.22.13380
xnu-2050.24.15380
xnu-2050.48.11380
xnu-2050.7.9380
xnu-2050.9.2380
xnu-2422.1.72380
xnu-2422.100.13380
xnu-2422.110.17380
xnu-2422.90.20380
xnu-2782.1.97380
xnu-2782.10.72380
xnu-2782.20.48380
xnu-2782.30.5380
xnu-3247.10.11380
xnu-3248.20.55380
xnu-3248.30.4380
xnu-3248.40.184380
xnu-3248.50.21380
xnu-3248.60.10380
xnu-3789.21.4380
xnu-3789.31.2380
xnu-3789.41.3380
xnu-3789.51.2380
xnu-3789.60.24380
xnu-3789.70.16380
xnu-4570.20.62380
xnu-4570.31.3380
xnu-4570.41.2380
xnu-4570.51.1380
xnu-4570.61.1380
xnu-4570.71.2380
xnu-4903.231.4380
xnu-4903.241.1380
xnu-4903.270.47380
xnu-6153.101.6380
xnu-6153.121.1380
xnu-6153.141.1380
xnu-6153.41.3380
xnu-6153.61.1380
xnu-6153.81.5380
xnu-7195.101.1380
xnu-7195.121.3380
xnu-7195.141.2380
xnu-7195.60.75380
xnu-7195.81.3380
xnu-8019.61.5380
xnu-8019.80.24380
xnu-8020.101.4380
xnu-8020.121.3380
xnu-8020.140.41380
xnu-8792.61.2380
xnu-8792.81.2380
xnu-8796.101.5380
xnu-8796.121.2380
xnu-8796.141.3380

Notes

Superposé à execve, __mac_execve prend un mac_t supplémentaire portant des étiquettes pour un ou plusieurs modules de politique chargés. Le noyau transmet l'étiquette au hook mpo_vnode_check_exec de chaque politique, permettant à des modules comme Sandbox ou AMFI de bloquer ou de faire transitionner la nouvelle image. Sur macOS standard aucune politique MAC livrée ne parse d'étiquette, donc les étiquettes non vides échouent typiquement avec EINVAL — mais le syscall reste la manière canonique d'exprimer une transition d'étiquette au moment de l'exec.

Détection

Endpoint Security l'expose via ES_EVENT_TYPE_NOTIFY_EXEC comme execve ; différencier en inspectant le numéro de syscall enregistré dans proc->p_sysent. Les politiques MACF la voient via mpo_vnode_check_label_update_exec et mpo_cred_label_update_execve.

API associées

execveposix_spawn__mac_set_procmac_execve