
Prueba de concepto que demuestra cómo evadir las comprobaciones de Gatekeeper, notarización y XProtect de macOS explotando CVE-2021-30853, lo que permite ejecutar cargas útiles de shell arbitrarias sin avisos al usuario.
Un script POC simple para probar la CVE-2021-30657 que afecta a MacOS.
Esta CVE permite evadir las comprobaciones de gatekeeper, notarización y xprotect.
Esta vulnerabilidad ocurre cuando no se define un intérprete (o se especifica un intérprete que a su vez es un script de shell) en la primera línea (shebang) del script principal de tu paquete ejecutable. Esto provoca que xpcproxy invoque posix_spawnp para lanzar la aplicación basada en script sin intérprete. Inicialmente esto genera un error (sin intérprete → ENOEXEC), pero luego posix_spawnp se "recupera" y (re)ejecuta el script... esta vez directamente a través de /bin/sh.
Posteriormente, el kext de AppleSystemPolicy intercepta el lanzamiento del proceso para asegurarse de que cumple las normas (firmado, notarizado, etc.). Pero comprueba /bin/sh sin ninguna variable establecida, por lo que ejecuta el script sin ninguna comprobación predeterminada.
Basado en el hilo: https://twitter.com/objective_see/status/1473741597368098819
macOS Big Sur < 11.6