Esta carpeta, que está dentro de la Biblioteca en el primer nivel de tu disco duro, tiene un nombre interesante y es exactamente lo que indica: dentro de ella se encuentran una serie de archivos que permiten la elevación de privilegios para ciertas aplicaciones. Algo importante cuando queremos que una aplicación haga algo que se escapa de sus características.

De forma predeterminada, las aplicaciones se ejecutan bajo el usuario que ha iniciado sesión y cuando me refiero a las aplicaciones, me refiero a las que están dentro de la carpeta Aplicaciones  u otras aplicaciones dependientes de ellas.

Diferentes usuarios tienen diferentes derechos cuando se trata de acceder a los archivos, cambiar la configuración de todo el sistema, etc., dependiendo de si son usuarios administrativos o usuarios ordinarios. Algunas tareas requieren privilegios adicionales por encima y más allá de lo que incluso un usuario administrador puede hacer por defecto. Se dice que una aplicación u otro proceso con tales derechos adicionales se ejecuta con privilegios elevados. Ejecutar código con privilegios de root o administrativos puede intensificar los peligros que plantean las vulnerabilidades de seguridad. Así cuando una aplicación requiere de esos privilegios elevados, requiere de un soporte especial que se inicia en esta carpeta y que hace referencia a la aplicación. 1

Pero pongamos un ejemplo típico: dentro de la carpeta PrivilegedHelperTools yo tengo un archivo llamado com.barebones.authd que hace referencia a BBEdit, un editor de textos utilizado con frecuencia por ejemplo para trabajar con archivos del sistema. Una de las ventajas de BBEdit2 es que cuando tienes que editar un archivo para el que no tienes permisos3 la propia aplicación se encarga de poder asignarle permisos de acceso, lectura y escritura4 para que puedas trabajar con el archivo y luego, una vez guardado, devolverle los permisos originales. Esto, por defecto, no debería poder hacerlo una aplicación normal, pero al disponer de privilegios elevados, pues… ahí está.

Independientemente de si un usuario ha iniciado sesión como administrador, es posible que un programa tenga que obtener privilegios administrativos o de root para realizar una tarea. Ejemplos de tareas que requieren privilegios elevados incluyen:

  • manipular permisos de archivos, propiedad
  • crear, leer, actualizar o borrar archivos de sistema y de usuario
  • abrir puertos privilegiados (aquellos con números de puerto inferiores a 1024) para conexiones TCP y UDP
  • Apertura de raw sockets
  • gestión de procesos
  • leer el contenido de la memoria virtual
  • Cambiar la configuración del sistema
  • Carga de extensiones de kernel

Apple recomienda a los desarrolladores que si tienen que realizar una tarea dentro de una aplicación que requiere privilegios elevados, deben tener en cuenta el hecho de que al ejecutar con privilegios elevados significa que si hay vulnerabilidades de seguridad en su aplicación, un atacante también puede obtener privilegios elevados y, a continuación, podrá realizar cualquiera de las operaciones enumeradas anteriormente5

El principio del menor privilegio

Cualquier programa puede ser atacado, y probablemente lo será. De forma predeterminada, cada proceso se ejecuta con los privilegios del usuario o proceso que lo inició. Como resultado, si un atacante usa un desbordamiento de búfer u otra vulnerabilidad de seguridad para ejecutar código en el equipo de otra persona, generalmente puede ejecutar su código con los privilegios que tenga el usuario conectado.

Si un usuario ha iniciado sesión con privilegios restringidos, el programa debe ejecutarse con esos privilegios restringidos. Esto limita efectivamente la cantidad de daño que un atacante puede hacer, incluso si ataca con éxito una aplicación y a través de ella consigue ejecutar código malicioso. El desarrollador debe asumir que el usuario ha iniciado sesión con privilegios de administrador; debe estar preparado para ejecutar una aplicación de ayuda con privilegios elevados si necesita realizar una tarea. Sin embargo, hay que tener en cuenta que, si el desarrollador eleva los privilegios de su proceso para que se ejecute como root, un atacante puede obtener esos privilegios elevados y potencialmente asumir el control de todo el sistema.

Si un atacante puede obtener privilegios de administrador, puede elevarse a privilegios de root y obtener acceso a cualquier dato en el ordenador del usuario. Por lo tanto, es una buena práctica de seguridad iniciar sesión como administrador sólo cuando se realizan las tareas que requieren privilegios de administrador. Debido a que la configuración predeterminada para macOS es convertir al propietario del equipo en administrador, Los usuarios 6, deberían crear un inicio de sesión independiente como no administrador y utilizarlo para su trabajo diario. Además, si es posible, no debería requerir privilegios de administrador para instalar el software7.

La idea de limitar el riesgo limitando el acceso se remonta a la política de “necesidad de saber” seguida por las agencias de seguridad del gobierno8. En la seguridad del software, esta política es a menudo llamada el principio del menor privilegio.

Cada programa y cada usuario del sistema debe operar usando el mínimo conjunto de privilegios necesarios para completar el trabajo. Salzer, J. H. AND Schroeder, M. D.,”The Protection of Information in Computer Systems,” Proceedings of the IEEE, vol. IEEE, Vol. 63, no. 9, septiembre 1975.

En términos prácticos, el principio del privilegio mínimo significa que debe evitar ejecutarse como root o, si es absolutamente necesario ejecutarlo como root para realizar alguna tarea, debe ejecutar una aplicación de ayuda separada para realizar la tarea privilegiada… y es aquí donde entra en acción las aplicaciones bajo la carpeta PrivilegedHelperTools. Además, en la medida de lo posible, el software o partes del mismo debería ejecutarse en una sandbox que restrinja aún más sus privilegios, como pasa en las aplicaciones descargadas desde la Mac App Store.

 

Siguientes pasos

Bueno, si eres un usuario del sistema, no hay muchos siguientes pasos a seguir salvo echar un vistazo a la carpeta e identificar algún helper abandonado por alguna aplicación que ni tan siquiera está instalada en el sistema9 para eliminarlo a continuación, te hará falta la contraseña de administrador. Evidentemente hay que tener muy claro qué borras y por qué.

Para desarrolladores de aplicaciones macOS10 sí hay que seguir adelante con este tema con la documentación de Apple. 11 en la que se explica con bastante profundidad como funcionan estas aplicaciones que permiten elevar privilegios para algunas acciones de esas aplicaciones.

Notas

  1. Elevar privilegios no está permitido en las aplicaciones enviadas al Mac App Store (y no es posible en iOS) por lo que cualquier archivo que haga referencia a una aplicación en esta carpeta será a aplicaciones que hemos instalado fuera del entorno de la Mac App Store.
  2. Que también estaba disponible en su ahora desaparecido hermano menor Textwrangler
  3. Porque pertenece al sistema, u otro usuario
  4. Previa introducción de tu contraseña de administrador
  5. Lo que es un grave problema de seguridad, pero no por eso debemos dejar de utilizar las aplicaciones a las que se hace referencia dentro de esta carpeta, amiguitos
  6. Al menos, los menos experimentados
  7. Aunque esto no siempre es posible, pero es el método que se utiliza para las aplicaciones de la Mac App Store, que no pertenecen al usuario, sino al sistema
  8. No importa cuál sea su autorización de seguridad, no se le da acceso a la información a menos que tenga una necesidad específica de conocer esa información
  9. En mi caso,  un helper de TeamViewer, por ejemplo
  10. ¿Hay de esos en España?¿Y en Latinoamérica? Que levanten el dedo
  11. Que he traducido parcialmente, reescrito y revaluado para explicar todo este asunto para humanos
In this article


Join the Conversation

5 comments

  1. Juan Miguel Escribano

    A colación con lo que comentas sobre utilizar el Mac con un usuario normal y no con un administrador, quería preguntarte: si mi usuario de trabajo es administrador ¿habría algún problema en quitarle los privilegios de administrador, sobre todo en lo que se refiere a acceso a aplicaciones, iCloud, Fotos, etc? ¿o todo seguiría funcionando igual?
    Muchas gracias

    1. Carlos Burges Ruiz de Gopegui

      Todo debería seguir igual, pero siempre puedes devolverle los derechos de administrador. en el Mac siempre tiene que haber una cuenta de administrador, la uses o no.

  2. Mandibul

    Muy interesante. Muchas gracias.

    Como humilde propietario de un MacBook siempre he usado la cuenta principal con todos los súper poderes.
    Estoy dispuesto a seguir la profilaxis indicada en este artículo, pero necesito que -por favor- me enlaces (o generes) a algún artículo donde se muestren los pasos para trasvasar y/o compartir la información entre dos usuarios de un Mac (por ejemplo correo, iTunes, photos, etc.)

    Gracias de nuevo

    1. Carlos Burges Ruiz de Gopegui

      No, no hace falta:

      Creas un nuevo usuario administrador
      Haces log in en ese usuario
      Vas a preferencias del sistema > Usuarios y grupos
      Seleccionas tu usuario anterior y le quitas los privilegios de administrador (desmarcando la casilla “permitir al usuario administrar el ordenador)
      Cierras sesión con tu nuevo usuario administrador
      Inicias sesión ahora con tu usuario de toda la vida, que ya no es administrador

      SI alguna vez necesitas, porque te aparece el cuadro de diálogo, autorizar algo importante en tu nuevo usuario no administrador, usas el nombre corto y contraseña de ese segundo usuario administrador que creaste para hacer este cambio.

      1. Mandibul

        Pues es verdad.
        Muchas gracias de nuevo.