265 votos

¿En qué consiste realmente la función "sin root" de El Capitán?

Acabo de enterarme de la función "Rootless" de El Capitán, y estoy escuchando cosas como "No hay ningún usuario Root", "Nada puede modificar /System " y "El mundo se acabará porque no podemos conseguir Root".

¿Qué es la función "Rootless" de El Capitán a nivel técnico? ¿Qué significa realmente para la experiencia del usuario y del desarrollador? En sudo -s todavía funciona, y, si es así, ¿cómo será la experiencia de usar una cáscara como root ¿cambio?

307voto

Nate Puntos 220

Primero: el nombre de "a la deriva" es engañoso, ya que no hay todavía una cuenta de root, y usted todavía puede tener acceso a él (el nombre oficial, "la Integridad del Sistema de Protección", es más preciso). Lo que realmente hace es limitar el poder de la cuenta de root, por lo que incluso si usted se convierte en la root, no tiene control total sobre el sistema. Esencialmente, la idea es que es muy fácil de malware para obtener el acceso root (por ejemplo, mediante la presentación de un auth cuadro de diálogo al usuario, lo que hará que el usuario reflexivamente introduzca la contraseña de administrador). SIP agrega otra capa de protección, que el malware no puede penetrar incluso si se obtiene de la root. La parte mala de esto, por supuesto, que se debe aplicar también a las cosas que están haciendo intencionalmente. Pero las restricciones a que se coloca en la root no es tan malo; no prevenir la mayoría de los "normales" del sistema de personalización.

Aquí es lo que se restringe, incluso desde la root:

  • Usted no puede modificar nada en /System, /bin, /sbino /usr (excepto /usr/local); o cualquiera de las aplicaciones integradas y de las utilidades. Sólo el Instalador de actualización de software y pueden modificar estas áreas, e incluso que sólo lo hacen cuando la instalación de Apple-paquetes firmados. Pero desde normal de OS X de estilo personalizaciones ir en /Library (o ~/Libraryo /Applications), y de estilo unix personalizaciones (por ejemplo, Homebrew) ir en /usr/local (o, a veces, /etc o /opt), esto no debería ser un gran problema. También evita que el nivel de bloque se escribe en el disco de inicio, por lo que no se puede prescindir de ella de esa manera.

    La lista completa de restricciones a directorios (y excepciones como la de /usr/local y algunos otros) se encuentra en /System/Library/Sandbox/a la deriva.conf. Por supuesto, este archivo es en sí mismo en un área restringida.

    Al actualizar a El Capitan, que se mueve cualquier "no autorizadas" de los archivos de las áreas restringidas a /Library/SystemMigration/History/Migration-(some UUID)/QuarantineRoot/.

  • No se puede adjuntar a los procesos del sistema (por ejemplo, las que se ejecutan desde esas ubicaciones del sistema) para cosas como la depuración (o cambiar lo que las bibliotecas dinámicas que carga, o algunas otras cosas). De nuevo, no demasiado de una gran oferta; desarrolladores todavía puede depurar sus propios programas.

    Esto no bloquear algunas cosas importantes como la inyección de código en el built-in de aplicaciones de Apple (en particular, el Finder). También significa que dtrace basado en herramientas para la supervisión del sistema (por ejemplo, opensnoop) no será capaz de monitorear e informar sobre muchos de los procesos del sistema.

  • Usted no puede cargar las extensiones del núcleo (kexts) a menos que estén debidamente firmado (por ejemplo, de Apple o de una Manzana aprobados por el desarrollador). Tenga en cuenta que esto reemplaza el antiguo sistema para hacer cumplir los kext de la firma (y las viejas formas de tenerlo en cuenta). Pero desde v10.10.4 de Apple ha tenido una forma de habilitar el soporte trim para terceros unidades Ssd, la razón #1 para usar unsigned kexts ha desaparecido.

Si usted no desea que estas restricciones, ya sea porque desea modificar el sistema más allá de lo que esto permite, o porque usted está en desarrollo y depuración de algo como kexts que no son prácticas bajo estas restricciones, puede activar la SIP off. Actualmente, este requiere de reiniciar en modo recovery y ejecutar el comando csrutil disable (y del mismo modo se puede rehabilitar con csrutil enable).

Pero, por favor, parar y pensar antes de deshabilitar SIP, incluso temporalmente: ¿usted realmente necesita para deshabilitarlo, o hay una mejor (SIP compatible con) la manera de hacer lo que quieres? ¿Usted realmente necesita modificar algo en /System/Library o /bin o lo que sea, o podría ir en un mejor lugar como /Biblioteca /usr/local/bin, etc? SIP puede "sentir" de constreñimiento si usted no está acostumbrado a ello, y hay algunas razones legítimas para desactivarlo, pero mucho de lo que se exige que, en realidad, la mejor práctica, de todos modos.

Referencias y más información: WWDC presentación sobre "Seguridad y Sus Aplicaciones", una buena explicación por Eldad Eilam en quora.comel Ars Technica, la revisión de El Capitán, y un artículo de soporte de Apple en SIP, y una inmersión profunda por la riqueza de Trouton.

102voto

J.J Puntos 655

Para mí, significa DTrace ya no funciona.

DTrace es similar a ptrace/strace en Linux, que permite que usted para ver lo que un proceso está diciendo a la del núcleo. Cada vez que un proceso quiere abrir un archivo, escribir en un archivo, o abrir un puerto, etc, es necesario pedir el kernel. En Linux, este proceso de supervisión que sucede fuera del núcleo en "modo usuario", y por lo tanto los permisos son bastante grano fino. Un usuario puede supervisar sus propias aplicaciones (corrección de errores, encontrar fugas de memoria, etc), pero tendría que ser root para monitor de otro usuario del proceso.

DTrace en OSX sin embargo funciona en el nivel del núcleo, por lo que es mucho más eficiente y potente, sin embargo, se requiere acceso de root para agregar sus sondas en el núcleo y por lo tanto hacer nada. Un usuario no puede hacer el seguimiento de sus propios procesos sin necesidad de ser root, pero como root, se puede no sólo ver sus propios procesos, pero en realidad TODOS los procesos en el sistema simultáneamente. Por ejemplo, usted puede ver un archivo (con iosnoop) y ver que el proceso de lee. Esta es una de las características más útiles que nunca para la detección de malware. Debido a que el núcleo también se ocupa de red de e / s, el mismo es verdad no hay. Wireshark detecta inusual actividad de la red, DTrace dice que el proceso de envío de los datos, incluso si su integrados en el sistema como el propio kernel.

Como la de El Capitan sin embargo, Apple ha evitado deliberadamente DTrace de trabajo - como en la que se ha dirigido específicamente y señalado como algo SIP restringe. Por qué habrían de hacerlo? Bien, anteriormente Apple modificado el kernel y DTrace para permitir que algunos de los procesos de opt-out de ser monitoreado a través de DTrace (que molesta un montón de investigadores de seguridad en el tiempo como algunos de los procesos que ahora estaban fuera de los límites, incluso como root - incluir malware). La razón para esto era para proteger a los DRM en aplicaciones como iTunes, ya que, teóricamente, alguien podría DTrace y agarrar de la onu-DRM había datos de los procesos de la memoria.

Sin embargo, hubo un importante trabajo en torno a que permitió a los investigadores a seguir haciendo su trabajo, y que fue modificar el kernel para ignorar este opt-out de la bandera, por lo que DTrace todavía podría ser utilizado en estos procesos. De hecho, esta fue muy grande porque los programas tratando de evadir la detección de donde ahora iluminada con este DTrace bandera. Nada de Apple o los malos querían ocultar estaba ahora a la vista...

Pero no funciona, ¿cómo afecta esto a usted? Bueno, va a afectar de manera directa e indirecta. Directamente, va a limitar su capacidad para controlar su sistema. Un gran número de bajo nivel del sistema de administración y monitoreo de herramientas (herramientas de más alto nivel basarse) dejará de funcionar. El efecto indirecto sin embargo será mucho más grande - los profesionales de la seguridad dependen de la profundidad de acceso al sistema para detectar el peor tipo de amenazas. Simplemente no podemos hacer eso. Es fundamental a la hora de analizar malware que no sabe que está corriendo en un depurador o honeypot. La desactivación de la SIP dice que todo el software, tanto de los chicos malos y Apple, que este sistema está siendo observado. No más observando a los observadores. Si SIP fue acerca de la seguridad que podría haber educado a los usuarios acerca de root, sino que se retiró. En última instancia, esto significa que Apple ha sustituido el 'todo' barrera de seguridad de la contraseña de root, con el 'todo' SIP mecanismo de protección. O si el bueno en la ingeniería social, la contraseña de root con un reinicio...

También hay este: enter image description here

52voto

Rich Trouton Puntos 2322

La Integridad del sistema de Protección (SIP) es una directiva de seguridad global con el objetivo de prevenir los archivos del sistema y procesos de ser modificado por terceros. Para ello, cuenta con los siguientes conceptos:

  • Protección del sistema de archivos
  • Extensión del Kernel de protección
  • Tiempo de ejecución de la protección

Protección del sistema de archivos

SIP impide a las partes que Apple a partir de la adición, supresión o modificación de directorios y ficheros almacenados en ciertos directorios:

/bin
/sbin
/usr
/System

Apple ha indicado que los siguientes directorios están disponibles para los desarrolladores acceder a:

/usr/local
/Applications
/Library
~/Library

Todos los directorios en /usr , excepto para /usr/local están protegidos por la SIP.

Es posible añadir, eliminar o cambiar SIP protegidos los archivos y directorios a través de un paquete de instalación el cual es firmado por la propia Apple certificado de autoridad. Esto permite a Apple a hacer cambios en SIP, protegido partes del sistema operativo sin necesidad de cambiar la SIP existente protecciones.

El certificado de la autoridad en cuestión son reservados por Apple para su propio uso; ID de Desarrollador firmado por el instalador de paquetes que no son capaces de alterar SIP protegido archivos o directorios.

Para definir los directorios que están protegidos, de Apple, en la actualidad ha definido dos archivos de configuración en el sistema de ficheros. El principal se encuentra en la ubicación siguiente:

/System/Library/Sandbox/rootless.conf

donde rootless.conf listas de todas las aplicaciones y el nivel superior de directorios que SIP es la protección.

enter image description here

Aplicaciones

SIP, es la protección de las aplicaciones básicas que OS X se instala en Aplicaciones de Aplicaciones y Utilidades. Esto significa que ya no será posible eliminar las aplicaciones que OS X se instala, incluso desde la línea de comandos cuando el uso de los privilegios de root.

enter image description here

enter image description here

Directorios

SIP es también la protección de un número de directorios de enlaces simbólicos y fuera de la /Applications y el nivel superior de los directorios también son mencionados en rootless.conf.

enter image description here

Además de las protecciones, Apple también ha definido algunas excepciones a la SIP de la protección en el desarraigo.conf archivo, y las excepciones se marcan con asterixes. Estas exenciones de SIP de protección significa que es posible añadir, eliminar o modificar los archivos y directorios dentro de esos lugares.

enter image description here

Entre esas excepciones son las siguientes:

  • /System/Library/User Template - donde OS X almacenes de la plantilla los directorios se utiliza cuando se crean las carpetas de inicio para nuevas cuentas.
  • /usr/libexec/cups - donde OS X almacena la configuración de la impresora información

Apple considera que este archivo de la suya y que terceras partes de los cambios a que será reemplazado por el de Apple.

Para ver los archivos que han sido protegidos por la SIP, el uso de la ls comando con una pizca de capital O en la Terminal:

ls -O

SIP archivos protegidos sean clasificados como restringidos.

enter image description here

Una importante creo saber es que incluso si un enlace está protegido por la SIP, que no significa necesariamente que el directorio en el enlace que está protegida por la SIP. En el nivel root de un OS X El Capitán de la unidad de arranque, hay varios del SIP-protegida de enlaces apuntando a directorios almacenados en el interior de la root a nivel de directorio de nombre private.

Sin embargo, cuando el contenido de la private directorio son examinados, los directorios que los enlaces simbólicos punto de que no están protegidos por la SIP, y tanto ellos como sus contenidos pueden mover, editar o cambiar por procesos con privilegios de root.

enter image description here

En adición a la lista de SIP excepciones que Apple ha puesto en rootless.conf, hay una segunda lista de SIP excepciones. Esta lista incluye un número de directorios y nombres de aplicación para productos de terceros. Similar a rootless.conf, esta exclusión de la lista es de Apple y de terceros de los cambios a que será reemplazado por el de Apple.

/System/Library/Sandbox/Compatibility.bundle/Contents/Resources/paths

Tiempo de ejecución de la protección

SIP protecciones no se limitan a proteger el sistema de sistema de ficheros cambios. Existen también las llamadas al sistema que ahora están restringidas en su funcionalidad.

  • task_for_pid() / processor_set_tasks() no con EPERM
  • Mach puertos especiales se restablecen en exec(2)
  • dyld variables de entorno son ignorados
  • DTrace sondas no está disponible

Sin embargo, la SIP no bloquear la inspección por el promotor de sus propias aplicaciones mientras están siendo desarrollados. Xcode herramientas continuará para permitir que las aplicaciones para ser inspeccionado y depurando durante el proceso de desarrollo.

Para más detalles sobre esto, recomiendo echar un vistazo a los desarrolladores de Apple, la documentación para el SIP.

Extensión del Kernel de protección

SIP instalación de bloques de unsigned extensiones del kernel. Con el fin de instalar una extensión del kernel de OS X El Capitan con SIP habilitado, una extensión del kernel debe:

  1. Estar firmado con un ID de Desarrollador para la Firma de Kexts certificado
  2. Instalar en /Library/Extensions

Si va a instalar un kernel sin firmar extensión SIP tendrá que ser de los discapacitados.

Para obtener más información sobre la gestión de SIP, por favor, eche un vistazo en el siguiente enlace:

La Integridad del sistema de Protección – Añadiendo otra capa de Apple modelo de seguridad

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