Articulo de referencia

Privilegio (informática)

En informática, el privilegio se define como la delegación de autoridad para realizar funciones relevantes para la seguridad en un sistema informático. [ 1 ] Un privilegio permi...

En informática, el privilegio se define como la delegación de autoridad para realizar funciones relevantes para la seguridad en un sistema informático. [ 1 ] Un privilegio permite a un usuario realizar una acción con consecuencias para la seguridad. Algunos ejemplos de privilegios incluyen la capacidad de crear un nuevo usuario, instalar software o modificar funciones del núcleo.

Los usuarios a quienes se les han delegado niveles adicionales de control se denominan privilegiados. Los usuarios que carecen de la mayoría de privilegios se definen como usuarios no privilegiados, regulares o normales.

Teoría

Los privilegios pueden ser automáticos, otorgados o solicitados.

Existe un privilegio automático cuando no se requiere permiso para realizar una acción. Por ejemplo, en sistemas donde es necesario iniciar sesión para usarlos, cerrar la sesión no requiere privilegios. Los sistemas que no implementan protección de archivos, como MS-DOS , otorgan privilegios ilimitados para realizar cualquier acción sobre un archivo.

Un privilegio se otorga al presentar credenciales a la autoridad que lo concede. Esto generalmente se logra iniciando sesión en un sistema con un nombre de usuario y una contraseña , y si estos son correctos, el usuario obtiene privilegios adicionales.

Se solicita un privilegio mediante un programa ejecutado que emite una solicitud de privilegios avanzados, o bien ejecutando algún programa para solicitar dichos privilegios adicionales. Un ejemplo de cómo un usuario solicita privilegios adicionales lo proporciona el sudocomando para ejecutar un comando como superusuario ( root ) , o el sistema de autenticación Kerberos .

Las arquitecturas de procesadores modernas cuentan con múltiples modos de CPU que permiten que el sistema operativo se ejecute con diferentes niveles de privilegio . Algunos procesadores tienen dos niveles (como usuario y supervisor ); los procesadores i386 + tienen cuatro niveles (el n.º 0 con los mayores privilegios y el n.º 3 con los menores). Las tareas se etiquetan con un nivel de privilegio. Los recursos (segmentos, páginas, puertos, etc.) y las instrucciones privilegiadas se etiquetan con el nivel de privilegio requerido. Cuando una tarea intenta usar un recurso o ejecutar una instrucción privilegiada, el procesador determina si tiene el permiso (de lo contrario, se genera una interrupción de "fallo de protección"). Esto evita que las tareas de usuario dañen el sistema operativo o entre sí.

En programación informática, las excepciones relacionadas con violaciones de instrucciones privilegiadas pueden ocurrir cuando se accede a un array fuera de sus límites o se desreferencia un puntero no válido cuando la ubicación de memoria referenciada es privilegiada, como la que controla la entrada/salida de un dispositivo. Esto es particularmente probable en lenguajes de programación como C++ , que utilizan aritmética de punteros o no comprueban automáticamente los límites de los arrays.

Crítica

Mark Miller ha criticado la definición de privilegio por considerarla imprecisa y difícil de medir, y ha sugerido que la autoridad puede definirse como el conjunto de cosas que un programa puede hacer, lo cual resulta más útil. [ 2 ]

Unix

En los sistemas tipo Unix , el superusuario (conocido comúnmente como "root") posee todos los privilegios. Los usuarios ordinarios solo tienen los permisos necesarios para realizar sus tareas más comunes. Los sistemas UNIX cuentan con funciones de seguridad integradas. La mayoría de los usuarios no pueden crear una nueva cuenta de usuario ni realizar otros procedimientos administrativos. El usuario "root" es un usuario especial, denominado superusuario, que puede hacer absolutamente todo en el sistema. Este alto grado de privilegios es necesario para administrar completamente un sistema UNIX, pero también permite que su usuario cometa errores y cause problemas en el sistema.

Los usuarios sin privilegios generalmente no pueden:

  • Ajustar las opciones del kernel ;
  • modificar archivos del sistema o archivos de otros usuarios.
  • cambiar la propiedad de cualquier archivo;
  • cambiar el nivel de ejecución (en sistemas con inicialización al estilo System V );
  • cambiar el modo de archivo de cualquier archivo;
  • ajustar ulimits o cuotas de disco ;
  • iniciar, detener y eliminar demonios ;
  • procesos de señalización de otros usuarios;
  • crear nodos de dispositivo ;
  • crear o eliminar usuarios o grupos;
  • montar o desmontar volúmenes (aunque cada vez es más común permitir a los usuarios habituales montar y desmontar medios extraíbles , como discos compactos ; esto se suele hacer a través de FUSE );
  • ejecutar el contenido de cualquier sbin/directorio (aunque cada vez es más común restringir el comportamiento de dichos programas cuando los ejecutan usuarios normales);
  • enlazar puertos inferiores a 1024.

Windows NT

En los sistemas basados ​​en Windows NT , los privilegios se delegan en distintos grados. Estas delegaciones se pueden definir mediante el administrador de directivas de seguridad local ( secpol.msc). A continuación se muestra una lista abreviada de las asignaciones predeterminadas:

  • 'NT AUTHORITY\System' es el equivalente más cercano al Superusuario en sistemas tipo Unix . Tiene muchos de los privilegios de un superusuario Unix clásico (como ser fideicomisario de cada archivo creado);
  • El usuario 'Administrador' es uno de los equivalentes más cercanos al superusuario (root) en sistemas tipo Unix. Sin embargo, este usuario no puede anular tantas protecciones del sistema operativo como el superusuario;
  • Los miembros del grupo "Administradores" tienen privilegios casi iguales a los de un "Administrador";
  • Los miembros del grupo "Usuarios Avanzados" tienen la capacidad de instalar programas y realizar copias de seguridad del sistema.
  • Los miembros del grupo 'Usuarios' son el equivalente a los usuarios sin privilegios en los sistemas tipo Unix.

Windows define una serie de privilegios administrativos [ 3 ] que se pueden asignar individualmente a usuarios y/o grupos. Una cuenta (usuario) solo posee los privilegios que se le otorgan, ya sea directamente o indirectamente a través de la pertenencia a grupos. Al instalar el sistema, se crean varios grupos y cuentas, y se les otorgan privilegios. Sin embargo, estos privilegios se pueden modificar posteriormente o mediante una directiva de grupo . A diferencia de Linux, no se otorgan privilegios de forma implícita ni permanente a una cuenta específica.

Algunos privilegios administrativos (por ejemplo, tomar posesión de archivos arbitrarios o restaurarlos) son tan poderosos que, si se usan con malas intenciones, podrían comprometer todo el sistema. Con el Control de cuentas de usuario (activado por defecto desde Windows Vista ), Windows elimina estos privilegios del token de usuario al iniciar sesión. Por lo tanto, si un usuario inicia sesión con una cuenta con amplios privilegios de sistema, no estará ejecutando el sistema con dichos privilegios. Siempre que el usuario quiera realizar acciones administrativas que requieran alguno de los privilegios de sistema, tendrá que hacerlo desde un proceso elevado . Al iniciar un proceso elevado , se le informa al usuario que se están ejerciendo sus privilegios administrativos mediante una solicitud que requiere su consentimiento. No mantener privilegios hasta que sean realmente necesarios está en consonancia con el principio del mínimo privilegio .

Los procesos con privilegios elevados se ejecutarán con todos los privilegios del usuario , no con todos los privilegios del sistema . Aun así, los privilegios del usuario pueden ser superiores a los necesarios para ese proceso en particular, por lo que no se cumple completamente el principio de mínimo privilegio .

Windows ME , Windows 98, Windows 95 y versiones anteriores de Windows que no son NT, basadas en DOS, solo operaban en el sistema de archivos FAT, no admitían permisos del sistema de archivos [ 4 ] y, por lo tanto, los privilegios se ven efectivamente anulados en los sistemas basados ​​en Windows NT que no utilizan el sistema de archivos NTFS .

Nomenclatura

Los nombres utilizados en el código fuente de Windows terminan en "privilege" o "logonright". Esto ha generado cierta confusión sobre cómo debería denominarse el conjunto completo de todos estos "derechos" y "privilegios".

Microsoft utiliza actualmente el término "derechos de usuario". [ 5 ] En el pasado, Microsoft también ha utilizado otros términos, como "derechos de privilegio" [ 6 ] , "derechos de usuario de inicio de sesión" [ 7 ] y "derechos nt". [ 8 ]

Véase también

Referencias

  1. "Glosario" . CSRC . NIST . Archivado del original el 13 de febrero de 2019. Consultado el 12 de febrero de 2019 .
  2. Miller, Mark (2006). Composición robusta: hacia un enfoque unificado para el control de acceso y el control de concurrencia . Tesis doctorales. Universidad Johns Hopkins.
  3. "Constantes de privilegio" . Microsoft . 7 de abril de 2022.
  4. "Cómo funcionan los permisos" . Microsoft . 3 de julio de 2013. Solo se pueden establecer permisos a nivel de archivo si los archivos están almacenados en un volumen NTFS.
  5. "Derechos de usuario" . Biblioteca de Microsoft TechNet. 18 de junio de 2014. Los derechos de usuario incluyen derechos de inicio de sesión y privilegios.
  6. "Derechos de privilegio" . Biblioteca MSDN de Microsoft. 23 de abril de 2024.
  7. "Cómo configurar los derechos de usuario de inicio de sesión mediante la utilidad ntrights" . Soporte de Microsoft.
  8. "Cómo configurar los derechos de usuario de inicio de sesión mediante la utilidad ntrights" . Soporte de Microsoft.