De no ser así es necesario deshabilitar SIP para poder debuguear, adjuntar lldb a un com.apple.WebKit.WebContent.xpc en ejecución y utilice el siguiente comando:
"po CFPreferencesSetAppValue(@"Label", @"You know what should be put here",[(id)NSHomeDirectory()
stringByAppendingPathComponent:@"Library/LaunchAgents/evil.plist"])"
Al introducir esa línea de código se generará generará un nuevo plist que con los argumentos adecuados puede lanzar una calculadora o cualquier elemento que se desee tras volverse a logar en el sistema. Esto no debería de suceder ya que se supone que la escritura de plist está bloqueada por la sandbox de Safari. El truco reside en las utilidades y preferencias de CoreFoundation para leer y guardar determinados plist en macOS ya que disponen de un argumento explícito para acceder a datos de otras aplicaciones.
El fallo consiste en que se toma por error el resultado de sandbox_check desde el principio, y después se sigue confiando en él durante toda la sesión. Cuando un proceso inicia por primera vez una conexión XPC con cfprefsd, el estado del sandbox se comprueba con la función sandbox_check. y el resultado se almacena en caché durante el resto de la sesión de XPC. Por lo tanto, es posible realizar nuevas operaciones CFPreference incluso después de que se haya bloqueado el sandbox. Por el momento se ha sabido que este bug afecta desde macOS El Capitan hasta macOS High Sierra (10.13.6) y a pesar de su importancia no ha recibido un código CVE.
No hay comentarios:
Publicar un comentario