Un Exploit que permite escapar del Sandbox de safari con una sola línea de código

Hace escasos días un investigador descubrió un exploit con el que escapar del sandbox de Safari utilizando una sola línea de código, el exploit solo está disponible para algunas versiones del sistema operativo macOS y fue parcheado con la última actualización de Mojave, la versión más reciente del sistema operativo que se veía afectada por este problema es macOS High Sierra 10.13.6. Esto se debe a que a partir de esta versión es necesario utilizar otro exploit para Safari que nos permita obtener acceso a la ejecución de Shellcode.

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.

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.