Jan 22, 2025
CVE-2024-9062
Carlos Garrido of Pentraze Cybersecurity
La aplicación Archify sufre una vulnerabilidad de escalamiento local de privilegios, que permite a un atacante realizar múltiples operaciones como el usuario root.
La aplicación Archify sigue el modelo de “aplicaciones factorizadas”, lo que significa que su funcionalidad está dividida en componentes separados. En este contexto, Archify incluye una herramienta auxiliar llamada com.oct4pie.archifyhelper que delega tareas específicas que requieren privilegios elevados, como la eliminación arbitraria de archivos y la modificación de permisos de archivos. Además, esta herramienta auxiliar privilegiada se comunica a través de XPC.
Es fundamental que un servicio XPC verifique la firma de código de cualquier proceso que intente establecer una conexión. Existen dos métodos para realizar esta validación: la propiedad pública processIdentifier y la propiedad privada auditToken. Sin embargo, confiar en processIdentifier es inseguro. Lamentablemente, com.oct4pie.archifyhelper no verifica el code requirement, los entitlements ni los flags del cliente que intenta establecer una conexión XPC.
Este método gestiona las conexiones entrantes de clientes XPC. Cuando se recibe una nueva conexión, registra el evento, configura la interfaz exportada (HelperToolProtocol) y el objeto que el servicio expone al cliente, reanuda la conexión y la acepta de manera incondicional sin realizar ningún tipo de validación del cliente.
| |
Para mitigar esta vulnerabilidad, el servicio debe basarse en la validación de firma de código en lugar de identificadores de proceso al evaluar conexiones entrantes.
En primer lugar, asegúrese de contar con un certificado válido de Apple Developer ID. Este certificado puede solicitarse directamente a Apple sin necesidad de aprobación especial. Hay más detalles disponibles en la documentación oficial de Apple.
Una vez que el Developer ID esté configurado, utilice las APIs modernas de XPC que aplican requisitos de firma de código antes de aceptar una conexión:
[NSXPCConnection setCodeSigningRequirement:] (disponible desde macOS 13.0)
xpc_connection_set_peer_code_signing_requirement (disponible desde macOS 12.0)
Estas APIs permiten al servicio verificar la identidad de firma de código del cliente en el momento de la conexión, previniendo de manera efectiva ataques basados en la reutilización de PID.