10 votos

¿Cuáles son las posibles consecuencias de desactivar parcialmente el SIP para yabai

yabai es una utilidad de gestión de ventanas para MacOS.

Como MacOS no ofrece una API adecuada para controlar el gestor de ventanas nativo, yabai recurre a inyectar un añadido de scripting en Dock.app para controlar Windows. Dock.app se encuentra en algún lugar en /System que es inaccesible gracias al SIP.

Para que el yabai funcione con todo su potencial, el usuario debe parcialmente desactivar SIP con un comando como csrutil disable --with kext --with dtrace --with nvram --with basesystem (Big Sur) o csrutil enable --without debug --without fs (Mojave o Catalina).

Esto me lleva a mi pregunta que es, ¿cuáles son las posibles consecuencias de la inhabilitación permanente fs y debug ?

10voto

Wowfunhappy Puntos 33

En un sistema UNIX tradicional -incluyendo muchas de las principales plataformas que aún se utilizan hoy en día, como Debian- se considera que cualquier usuario o proceso con privilegios "Root" tiene el control absoluto de una máquina. Básicamente no hay nada que el sistema operativo no permita hacer a un usuario Root, ya sea reescribir archivos del sistema, añadir código a otros procesos, añadir código al kernel lo que sea. Si alguna vez te han dicho que no ejecutes programas como Root a menos que sea absolutamente necesario, esta es la razón.

MacOS, siendo a su vez un sistema operativo UNIX, también se comportó así durante muchos años. Tan recientemente como OS X 10.10 Yosemite, una vez que le dabas a una aplicación tu contraseña de Root/administrador, era libre de hacer cualquier cosa que quería, y MacOS no se interpondría en su camino.

Todo esto cambió con el lanzamiento de macOS El Capitán en 2015. Por primera vez en el Mac, Apple decidió definir un conjunto de acciones que consideraba que ningún usuario o programa -incluso con privilegios de Root- debía siempre ¡ser capaz de actuar! Entre estas restricciones se incluía la instalación de extensiones del kernel de desarrolladores no identificados (la protección "kext"), la inyección de código en procesos proyectados, como las aplicaciones hechas por Apple (la protección "debug"), y la escritura en ciertos directorios del sistema protegidos (la protección "fs").

Apple ha llamado a este nuevo conjunto de restricciones "System Integrity Protection", o SIP para abreviar, y también ha hecho posible que los usuarios avanzados lo desactiven, ejecutando un comando de Terminal desde el modo de recuperación. Al desactivar la SIP, el ordenador vuelve a tener el comportamiento tradicional de UNIX, dejando que el Root haga lo que quiera. Apple también ha hecho posible desactivar individualmente ciertas restricciones, por ejemplo, ejecutando csrutil disable && csrutil enable --without debug permitirá inyectar código en los procesos protegidos, pero dejará intactas las demás protecciones de SIP.

Basta con decir que desactivar el SIP le otorga un gran poder sobre el funcionamiento de su Mac. Recientemente he estado aprendiendo a mezclar métodos en Objective C; cuando el SIP está desactivado, se puede utilizar para reemplazar el código en las aplicaciones existentes, lo que es realmente muy divertido. Cuando una aplicación hace algo que no me gusta -ya sea que Zoom haga que todas sus ventanas floten groseramente en la parte superior, o que la aplicación Diccionario no respete la configuración del proxy de mi Mac- puedo seguir adelante y cambiarla.

El peligro, sin embargo, es que si I puedo inyectar mi propio código en cualquier otra aplicación, ¡otro software también podría hacerlo! No hace falta ser especialmente creativo para imaginar las travesuras que podría causar una aplicación malvada si pudiera modificar cada otros en su máquina. Por ejemplo, una aplicación podría inyectar sus propios anuncios en Safari, o decirle a Microsoft Word que envíe todos sus documentos a un servidor en Corea del Norte.

Por otro lado, las aplicaciones malignas con permisos Root pueden causar muchos estragos sin ¡desactivando el SIP! No tendrán ningún problema para instalar mineros de bitcoin, leer todo tu historial de navegación y pedir un rescate por muchos (aunque no todos) de los archivos de su disco duro. De hecho, muchos de estos ataques ni siquiera requieren Root para funcionar. La instalación de aplicaciones es intrínsecamente peligrosa, al igual que invitar a alguien a tu casa, a menos que provengan de la Mac App Store, donde se garantiza que están protegidas.

Sólo conozco un problema en el mundo real causado por la desactivación del SIP, aunque fue bastante grave. Hace un par de años, hubo un error en el actualizador de Google Chrome (que a veces solicita permisos de root... ugh...) que hizo que se sobrescribieran varios archivos del sistema central, haciendo que los Macs no pudieran arrancar. En los Macs con SIP activado, se impedía que Chrome borrara estos archivos, y Chrome seguía su camino. Es de suponer que Google nunca probó Chrome en un Mac sin SIP, por lo que no descubrió el problema antes del lanzamiento. En defensa de Google, arreglaron el problema rápidamente, y me imagino que Chrome ahora se prueba en Macs sin SIP. (Pero basta con decir que por esto no me gusta Google Chrome).

También debes tener en cuenta que en los Macs de silicona de Apple, Apple no permite que las aplicaciones de iOS se ejecuten mientras el SIP está desactivado, presumiblemente porque los desarrolladores esperan que el software de iOS sólo sea utilizable en un entorno bloqueado. (Esos desarrolladores también se equivocan, porque los Jailbreaks existen).


Teniendo en cuenta todo lo anterior, mi recomendación general es la siguiente:

  • Si no tienes una razón para desactivar el SIP, déjalo activado. No hará ningún daño.

  • Si tienes un motivo para desactivar el SIP, adelante, y no dejes que te quite el sueño. Tienes que ser un poco más cuidadoso con las aplicaciones que ejecutas como Root. De todos modos, tienes que hacerlo.

Otras personas pueden caer y caerán en otra parte de ese espectro. Espero que ahora tengas suficiente información para tomar tu propia decisión.


Vale, lo de "todo lo que quieras" es quizá una simplificación excesiva. Para empezar, las versiones modernas de MacOS tienen otros sistemas de protección además de SIP, como TCC y AMFI. La cuestión es que, una vez que el SIP está desactivado, en teoría no hay nada que impida a un proceso deshabilitarlos también -¿quién va a interponerse en el camino, cuando se puede literalmente reescribir la memoria del núcleo? Supongo que probablemente haya registros de la CPU protegidos y cosas así.

0voto

TwlvSeconds Puntos 31

Desactivar el SIP significará que las aplicaciones a las que se les ha dado permisos de Root podrán modificar los archivos del sistema, como yabai modifica los archivos del Dock. El SIP suele proteger estos archivos de los cambios, por lo que yabai tiene que tener el SIP desactivado para modificar el Dock y utilizar las funciones avanzadas.

0voto

ErniePC12 Puntos 36

Protección de la integridad del sistema (SIP) según la definición de Apple.

La protección de la integridad del sistema (SIP) en MacOS protege todo el sistema impidiendo la ejecución de código no autorizado. El sistema autoriza automáticamente las aplicaciones que el usuario descarga de la App Store. El sistema también autoriza las apps que un desarrollador notariza y distribuye directamente a los usuarios. El sistema impide el lanzamiento de todas las demás aplicaciones por defecto.

Muchos desarrolladores (y algunos usuarios) desactivan SIP para que sus aplicaciones funcionen correctamente. Ahora, varios años después, esto es menos necesario ya que la mayoría de las aplicaciones han encontrado formas de hacer lo que necesitan sin necesidad de desactivar el SIP, lo que permite que tu Mac sea más seguro.

Desde Sección de requisitos y advertencias de Yabai. (el énfasis es mío)

La protección de la integridad del sistema debe estar (parcialmente) desactivada para yabai inyecte un agregado de scripting en Dock.app para controlar Windows con funciones que requieren privilegios elevados. Esto permite el control del servidor de ventanas, que es el único propietario de todas las conexiones conexiones, y permite características adicionales de yabai. Si usted está MacOS High Sierra 10.13.6, puede volver a activar el SIP después de que la de la adición de secuencias de comandos se haya instalado.

Voy a suponer que esto es válido para todos los sistemas operativos posteriores a la 10.13.6. Parece que se puede volver a habilitar el SIP una vez que el software está en su lugar y configurado, por lo que no tiene que ejecutarlo todo el tiempo sin SIP habilitado. Con suerte y si es posible, actualizarán la aplicación para que no requiera la desactivación de SIP.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X