Articulo de referencia

Comparación de las características de autorización de privilegios

Varios sistemas operativos emplean funciones de seguridad para evitar que el software malicioso obtenga privilegios suficientes para comprometer el sistema. Los sistemas operati...

Varios sistemas operativos emplean funciones de seguridad para evitar que el software malicioso obtenga privilegios suficientes para comprometer el sistema. Los sistemas operativos que carecían de estas funciones, como DOS , las implementaciones de Windows anteriores a Windows NT (y sus descendientes), CP/M-80 y todos los sistemas operativos Mac anteriores a Mac OS X, solo tenían una categoría de usuario con permisos para realizar cualquier acción. Con contextos de ejecución separados, es posible que varios usuarios almacenen archivos privados, que varios usuarios utilicen un ordenador simultáneamente, y proteger el sistema contra usuarios maliciosos y programas maliciosos. El primer sistema seguro multiusuario fue Multics , cuyo desarrollo comenzó en la década de 1960; no fue hasta finales de los 80 y principios de los 90, con UNIX , BSD , Linux y NT , que los contextos de seguridad multitarea se implementaron en los ordenadores de consumo x86 .

Introducción a las implementaciones

Microsoft Windows
macOS
Unix y sistemas similares a Unix

Consideraciones de seguridad

Entrada de usuario falsificada/interceptada

Una consideración importante en materia de seguridad es la capacidad de las aplicaciones maliciosas para simular pulsaciones de teclas o clics del ratón, engañando o suplantando así la función de seguridad para que otorgue a las aplicaciones maliciosas mayores privilegios.

  • Al usar un cliente basado en terminal (independiente o integrado en un entorno de escritorio/GUI): `su` y `sudo` se ejecutan en la terminal, donde son vulnerables a la suplantación de entrada. Por supuesto, si el usuario no estuviera trabajando en un entorno multitarea (es decir, un solo usuario en la consola), esto no sería un problema. Las ventanas de terminal generalmente se muestran como ventanas normales para el usuario; por lo tanto, en un cliente inteligente o un sistema de escritorio utilizado como cliente, el usuario debe responsabilizarse de evitar que otro malware en su escritorio manipule, simule o capture la entrada.
  • Utilizando una interfaz gráfica de usuario (GUI) o un entorno de escritorio estrechamente integrado al sistema operativo: Normalmente, el sistema de escritorio bloquea o protege todos los medios de entrada habituales antes de solicitar contraseñas u otra autenticación, de modo que no puedan ser interceptados, manipulados o simulados.
  • PolicyKit ( GNOME - dirige al servidor X para capturar todas las entradas de teclado y ratón. Otros entornos de escritorio que utilizan PolicyKit pueden utilizar sus propios mecanismos.
  • gksudo - por defecto "bloquea" el teclado, el ratón y el foco de la ventana, [ 17 ] impidiendo que cualquier cosa que no sea el usuario real introduzca la contraseña o interfiera de otro modo con el cuadro de diálogo de confirmación .
  • UAC (Windows) : por defecto, se ejecuta en el Escritorio seguro , lo que impide que las aplicaciones maliciosas simulen hacer clic en el botón "Permitir" o interfieran de cualquier otra forma con el cuadro de diálogo de confirmación. [ 18 ] En este modo, el escritorio del usuario aparece atenuado y no se puede interactuar con él.
Si la función de bloqueo de gksudo o el Escritorio seguro de UAC se vieran comprometidos o deshabilitados, las aplicaciones maliciosas podrían obtener privilegios de administrador registrando las pulsaciones de teclas para obtener la contraseña del administrador; o, en el caso de UAC si se ejecuta como administrador, simulando un clic del ratón en el botón "Permitir". Por este motivo, también se prohíbe la interacción del reconocimiento de voz con el cuadro de diálogo. Cabe destacar que, dado que la solicitud de contraseña de gksu se ejecuta sin privilegios especiales, las aplicaciones maliciosas aún pueden registrar las pulsaciones de teclas utilizando, por ejemplo, la herramienta strace . [ 19 ] (ptrace se restringió en versiones posteriores del kernel) [ 20 ]

Diálogos de autenticación falsos

Otro aspecto de seguridad a considerar es la capacidad del software malicioso para falsificar cuadros de diálogo que simulan solicitudes legítimas de confirmación de seguridad. Si el usuario introduce sus credenciales en un cuadro de diálogo falso, creyendo que es legítimo, el software malicioso conocerá su contraseña. Si la función Escritorio seguro o similar está desactivada, el software malicioso podría usar esa contraseña para obtener privilegios superiores.

El Control de cuentas de usuario (UAC) solicita la secuencia de atención segura en Windows 11, pidiendo al usuario que presione Ctrl+Alt+Supr primero para ingresar las credenciales, para evitar la suplantación de identidad al iniciar sesión.
  • Aunque no es el comportamiento predeterminado por razones de usabilidad, el UAC puede configurarse para requerir que el usuario presione Ctrl+Alt+Supr (conocida como secuencia de atención segura ) como parte del proceso de autenticación. Dado que solo Windows puede detectar esta combinación de teclas, requerir esta medida de seguridad adicional evitaría que los cuadros de diálogo falsificados se comporten de la misma manera que un cuadro de diálogo legítimo. [ 21 ] Por ejemplo, un cuadro de diálogo falsificado podría no pedirle al usuario que presione Ctrl+ Alt+Del , y el usuario podría darse cuenta de que el cuadro de diálogo es falso. O, cuando el usuario presionara Ctrl+Alt+Supr, sería llevado a la pantalla a la que normalmente lo lleva Ctrl+Alt+Supr en lugar de un cuadro de diálogo de confirmación de UAC. De esta manera, el usuario podría saber si el cuadro de diálogo era un intento de engañarlo para que proporcionara su contraseña a un programa malicioso.
  • En GNOME, PolicyKit utiliza distintos diálogos, dependiendo de la configuración del sistema. Por ejemplo, el diálogo de autenticación para un sistema equipado con un lector de huellas dactilares puede ser diferente al de un sistema sin él. Las aplicaciones no tienen acceso a la configuración de PolicyKit, por lo que no pueden saber qué diálogo aparecerá ni cómo falsificarlo. [ 22 ]

Consideraciones de usabilidad

Otro aspecto que se ha tenido en cuenta en estas implementaciones es la usabilidad .

Cuenta de administrador independiente

  • su requiere que el usuario conozca la contraseña de al menos dos cuentas: la cuenta de uso normal y una cuenta con privilegios más altos, como root .
  • sudo , kdesu y gksudo utilizan un enfoque más sencillo. Con estos programas, el usuario viene preconfigurado con acceso a tareas administrativas específicas, pero debe autorizar explícitamente las aplicaciones para que se ejecuten con esos privilegios. El usuario introduce su propia contraseña en lugar de la del superusuario o de otra cuenta.
  • pfexec utiliza "perfiles" en lugar de cuentas de usuario para otorgar privilegios al usuario. [ 15 ] Cada perfil concede acceso para ejecutar un conjunto específico de comandos y autorizaciones, y se nombra según la función que realiza. (Por ejemplo, un usuario debe poder usar el perfil "Gestión de auditoría" para poder ejecutar /usr/sbin/audity /usr/sbin/auditconfig. [ 16 ] )
  • UAC y Authenticate combinan estas dos ideas en una sola. Con estos programas, los administradores autorizan explícitamente la ejecución de programas con privilegios superiores. A los usuarios que no son administradores se les solicita un nombre de usuario y una contraseña de administrador.
  • PolicyKit se puede configurar para adoptar cualquiera de estos enfoques. En la práctica, la distribución elegirá uno.

Sencillez del diálogo

  • Para otorgar privilegios administrativos a una aplicación, sudo , [ 23 ] gksudo y Authenticate solicitan a los administradores que vuelvan a introducir su contraseña.
  • Con UAC , cuando se inicia sesión como usuario estándar, el usuario debe ingresar el nombre de usuario y la contraseña de un administrador cada vez que necesite otorgar privilegios elevados a una aplicación; pero cuando se inicia sesión como miembro del grupo Administradores, (por defecto) simplemente confirma o deniega, en lugar de volver a ingresar su contraseña cada vez (aunque esa es una opción). Si bien el enfoque predeterminado es más simple, también es menos seguro, [ 21 ] ya que si el usuario se aleja físicamente de la computadora sin bloquearla, otra persona podría acercarse y obtener privilegios de administrador sobre el sistema.
  • PolicyKit requiere que el usuario vuelva a introducir su contraseña o proporcione algún otro medio de autenticación (por ejemplo, huella dactilar).

Guardar credenciales

  • El Control de cuentas de usuario (UAC) solicita autorización cada vez que se le llama para elevar los privilegios de un programa.
  • sudo , [ 7 ] gksudo y kdesu no solicitan al usuario que vuelva a introducir su contraseña cada vez que se ejecutan para elevar los privilegios de un programa. En cambio, se le pide la contraseña una sola vez al inicio. Si el usuario no ha utilizado sus privilegios de administrador durante un cierto período de tiempo (el valor predeterminado de sudo es de 5 minutos [ 7 ] ), se le restringen nuevamente los privilegios de usuario estándar hasta que vuelva a introducir su contraseña.
El enfoque de sudo es un compromiso entre seguridad y usabilidad. Por un lado, un usuario solo tiene que introducir su contraseña una vez para realizar una serie de tareas de administrador, en lugar de tener que introducirla para cada tarea. Pero al mismo tiempo, la superficie de ataque es mayor porque todos los programas que se ejecutan en esa tty (para sudo ) o todos los programas que no se ejecutan en una terminal (para gksudo y kdesu) prefijados por cualquiera de esos comandos antes del tiempo de espera reciben privilegios de administrador. Los usuarios preocupados por la seguridad pueden eliminar los privilegios de administrador temporales al completar las tareas que los requieren usando el comando cuando desde cada tty o pts en el que se usó sudo (en el caso de pts, cerrar el emulador de terminal no es suficiente). El comando equivalente para kdesu es . No hay una opción de gksudo para hacer lo mismo; sin embargo, ejecutar fuera de una instancia de terminal (por ejemplo, a través del cuadro de diálogo + "Ejecutar aplicación", desmarcando "Ejecutar en terminal") tendrá el efecto deseado.sudo -kkdesu -ssudo -kAltF2
  • La autenticación no guarda las contraseñas. Si el usuario es estándar, debe introducir un nombre de usuario y una contraseña. Si el usuario es administrador, el nombre de usuario ya aparece predefinido y solo necesita introducir su contraseña. El nombre se puede modificar para usar la cuenta de otro usuario.
La aplicación solo requiere autenticación una vez, y esta se solicita cuando necesita el privilegio. Una vez que se le otorgan los privilegios necesarios, la aplicación no necesita autenticarse de nuevo hasta que se cierre y se vuelva a abrir.
Sin embargo, existen distintos niveles de autenticación, conocidos como permisos. El permiso solicitado se muestra al expandir el triángulo junto a "detalles", debajo de la contraseña. Normalmente, las aplicaciones utilizan system.privilege.admin, pero se puede usar otro, como un permiso inferior por motivos de seguridad o uno superior si se requiere un mayor nivel de acceso. Si el permiso de la aplicación no es adecuado para la tarea, es posible que deba autenticarse de nuevo para aumentar su nivel de privilegio.
  • PolicyKit puede configurarse para adoptar cualquiera de estos enfoques.

Identificar cuándo se necesitan derechos administrativos

Para que un sistema operativo sepa cuándo solicitar autorización al usuario, una aplicación o acción debe indicar que requiere privilegios elevados. Si bien técnicamente es posible solicitar la autorización justo en el momento en que se ejecuta una operación que requiere dichos privilegios, no suele ser conveniente pedirlos a mitad de la tarea. Si el usuario no pudiera proporcionar las credenciales adecuadas, el trabajo realizado antes de requerir privilegios de administrador tendría que deshacerse, ya que la tarea no podría completarse.

En el caso de interfaces de usuario como el Panel de control en Microsoft Windows y los paneles de Preferencias en Mac OS X, los requisitos de privilegios exactos están codificados en el sistema para que el usuario vea un cuadro de diálogo de autorización en el momento adecuado (por ejemplo, antes de mostrar información que solo los administradores deberían ver). Los distintos sistemas operativos ofrecen métodos diferentes para que las aplicaciones identifiquen sus requisitos de seguridad:

  • sudo centraliza toda la información de autorización de privilegios en un único archivo de configuración, /etc/sudoersque contiene una lista de usuarios y las aplicaciones y acciones privilegiadas que dichos usuarios tienen permitido usar. La sintaxis del archivo sudoers está diseñada para ser lo suficientemente flexible como para abarcar muchos escenarios diferentes, como establecer restricciones en los parámetros de la línea de comandos. Por ejemplo, se puede otorgar a un usuario acceso para cambiar la contraseña de cualquier usuario, excepto la de la cuenta root, de la siguiente manera:
pete ALL = /usr/bin/contraseña [Az]*, !/usr/bin/contraseña raíz
  • pfexec (y comandos relacionados como pfsh , pfedit , etc.) divide la información de autorización de privilegios entre varios archivos de configuración: /etc/user_attr, /etc/security/prof_attry /etc/security/exec_attr. La sintaxis de cada archivo sigue aproximadamente el formato utilizado en /etc/passwd . user_attrespecifica cualquier atributo adicional asociado con una cuenta de usuario. Esto incluye los perfiles que la cuenta puede usar que se agregan usando el profiles=atributo. [ 24 ]prof_attr define los perfiles y sus permisos y autorizaciones base. También incluye la ubicación del archivo de ayuda del perfil. [ 25 ]exec_attr especifica los comandos y demonios que se pueden ejecutar con un perfil que se ha definido en prof_attr. [ 26 ]
  • El Control de cuentas de usuario utiliza una combinación de análisis heurístico y "manifiestos de aplicación" para determinar si una aplicación requiere privilegios de administrador. [ 27 ] Los archivos de manifiesto ( .manifest ), introducidos por primera vez con Windows XP, son archivos XML con el mismo nombre que la aplicación y el sufijo ".manifest", por ejemplo Notepad.exe.manifest, . Cuando se inicia una aplicación, se examina el manifiesto para obtener información sobre los requisitos de seguridad de la aplicación. Por ejemplo, este fragmento XML indicará que la aplicación requerirá acceso de administrador, pero no requerirá acceso sin restricciones a otras partes del escritorio del usuario fuera de la aplicación:
<security> <requestedPrivileges> <requestedExecutionLevel level= "requireAdministrator" uiAccess= "false" /> </requestedPrivileges> </security>
Los archivos de manifiesto también pueden compilarse en el propio ejecutable de la aplicación como un recurso incrustado . También se utiliza el análisis heurístico, principalmente para la compatibilidad con versiones anteriores. Un ejemplo de esto es examinar el nombre del archivo ejecutable; si contiene la palabra "Setup", se asume que el ejecutable es un instalador y se muestra una solicitud de UAC antes de que se inicie la aplicación. [ 28 ]
El UAC también distingue entre las solicitudes de elevación de privilegios de un ejecutable firmado y uno sin firmar; y, en el caso del primero, si el editor es o no 'Windows Vista'. El color, el icono y la redacción de las advertencias varían en cada caso: por ejemplo, se intenta transmitir una mayor sensación de advertencia si el ejecutable no está firmado que si no lo está. [ 29 ]
  • Las aplicaciones que utilizan PolicyKit solicitan privilegios específicos al pedir autenticación, y PolicyKit realiza esas acciones en nombre de la aplicación. Antes de autenticarse, los usuarios pueden ver qué aplicación solicitó la acción y qué acción se solicitó.

Véase también

Referencias

  1. "Información general sobre el control de cuentas de usuario" . Microsoft . 2 de octubre de 2006. Archivado del original el 22 de agosto de 2011. Consultado el 12 de marzo de 2007 .
  2. "Runas" . Documentación del producto Windows XP . Microsoft . Consultado el 13 de marzo de 2007 .
  3. "Temas básicos (e intermedios) de "RunAs" . Blog de Aaron Margosis . Blogs de MSDN. 23 de junio de 2004. Consultado el 13 de marzo de 2007 .
  4. "Sudo para Windows" . 22/07/2025.
  5. "Acerca de PolicyKit" . Manual de referencia del lenguaje PolicyKit . 2007. Archivado del original el 18 de febrero de 2012. Consultado el 3 de noviembre de 2017 .
  6. Miller, Todd C. "Una breve historia del Sudo" . Archivado del original el 22 de febrero de 2007. Consultado el 12 de marzo de 2007 .
  7. 1 2 3 Miller, Todd C. "Sudo en pocas palabras" . Recuperado el 1 de julio de 2007 .
  8. "Página principal de GKSu" .
  9. "gksu PolicyKit en la wiki de Gnome" .
  10. Bellevue Linux (2004-11-20). "El comando su de KDE" . Archivado del original el 2 de febrero de 2007. Consultado el 12 de marzo de 2007 .
  11. Canonical Ltd. (25 de agosto de 2007). "GutsyGibbon/Tribe5/Kubuntu" . Consultado el 18 de septiembre de 2007 .
  12. Puedes leer más sobre beesu (Archivado el 25/07/2011) en Wayback Machine y descargarlo desde Koji.
  13. "OpenBSD 5.8" . www.openbsd.org . Archivado del original el 17 de mayo de 2021. Consultado el 6 de mayo de 2020 .
  14. 1 2 Sun Microsystems (1999-09-10). "pfexec - Páginas man de Oracle sección 1: Comandos de usuario" . Recuperado el 2025-03-05 .
  15. 1 2 "illumos: manual page: pfexec.1" . 2016-07-08 . Consultado el 2025-03-05 .
  16. 1 2 "illumos: manual page: profiles.1" . 2018-01-07 . Recuperado 2025-03-05 .
  17. "gksu - una interfaz su de Gtk+ Página del manual de Linux" . Archivado del original el 15 de julio de 2011. Consultado el 14 de agosto de 2007 .
  18. "Mensajes de Control de cuentas de usuario en el escritorio seguro" . UACBlog . Microsoft . 3 de mayo de 2006. Consultado el 4 de marzo de 2007 .
  19. "gksu: bloquear el ratón/teclado no es suficiente para proteger contra el registro de pulsaciones de teclas" .
  20. "Protección ptrace" .
  21. 1 2 Allchin, Jim (23 de enero de 2007). "Funciones de seguridad frente a conveniencia" . Blog del equipo de Windows Vista . Microsoft . Recuperado el 12 de marzo de 2007 .
  22. "Agente de autenticación" . 2007. Archivado del original el 18 de febrero de 2012. Consultado el 15 de noviembre de 2017 .
  23. Miller, Todd C. "Manual de Sudoers" . Recuperado el 12 de marzo de 2007 .
  24. "illumos: página del manual: user_attr.5" . 1 de octubre de 2020. Consultado el 5 de marzo de 2025 .
  25. "illumos: página del manual: prof_attr.5" . 18 de enero de 2018. Consultado el 25 de febrero de 2025 .
  26. "illumos: página del manual: exec_attr.5" . 3 de agosto de 2017. Consultado el 5 de marzo de 2025 .
  27. "Mejores prácticas y directrices para desarrolladores de aplicaciones en un entorno de privilegios mínimos" . MSDN . Microsoft . Consultado el 15 de marzo de 2007 .
  28. "Comprender y configurar el Control de cuentas de usuario en Windows Vista" . TechNet . Microsoft . Consultado el 15 de marzo de 2007 .
  29. "Mensajes de UAC accesibles" . Blog de Windows Vista . Microsoft. Archivado del original el 27/01/2008 . Consultado el 13/02/2008 .