stringtranslate.com

Principio del mínimo privilegio

En seguridad de la información , informática y otros campos, el principio de mínimo privilegio ( PoLP ), también conocido como principio de privilegio mínimo ( PoMP ) o principio de mínima autoridad ( PoLA ), requiere que en una capa de abstracción particular de un entorno informático, cada módulo (como un proceso, un usuario o un programa, según el tema) debe poder acceder solo a la información y los recursos que son necesarios para su propósito legítimo. [1]

Detalles

El principio implica otorgar a cualquier cuenta o proceso de usuario únicamente aquellos privilegios que sean esencialmente vitales para realizar sus funciones previstas. Por ejemplo, una cuenta de usuario cuyo único fin sea crear copias de seguridad no necesita instalar software: por lo tanto, solo tiene derechos para ejecutar copias de seguridad y aplicaciones relacionadas con las copias de seguridad. Cualquier otro privilegio, como la instalación de software nuevo, está bloqueado. El principio también se aplica a un usuario de computadora personal que normalmente trabaja en una cuenta de usuario normal y abre una cuenta privilegiada protegida con contraseña solo cuando la situación lo requiere absolutamente.

Cuando se aplica a los usuarios , también se utilizan los términos menor acceso de usuario o cuenta de usuario con menos privilegios (LUA), haciendo referencia al concepto de que todas las cuentas de usuario deben ejecutarse con la menor cantidad de privilegios posible y también iniciar aplicaciones con la menor cantidad de privilegios posible.

El principio (de mínimo privilegio) es ampliamente reconocido como una consideración de diseño importante para mejorar y dar un "impulso" muy necesario a la protección de datos y funcionalidad contra fallas ( tolerancia a fallas ) y comportamiento malicioso .

Los beneficios de este principio incluyen:

En la práctica, existen múltiples definiciones que compiten entre sí de lo verdadero (menor privilegio). A medida que aumenta rápidamente la complejidad del programa , también lo hace el número de problemas potenciales, lo que hace que un enfoque predictivo sea poco práctico. Algunos ejemplos incluyen los valores de las variables que puede procesar, las direcciones que necesitará o el momento preciso en que se requerirán dichas cosas. Los sistemas de capacidad de objetos permiten, por ejemplo, diferir la concesión de un privilegio de un solo uso hasta el momento en que se utilizará. Actualmente, el enfoque práctico más cercano es eliminar los privilegios que se pueden evaluar manualmente como innecesarios. El conjunto de privilegios resultante generalmente excede los privilegios mínimos verdaderos requeridos para el proceso.

Otra limitación es la granularidad del control que tiene el entorno operativo sobre los privilegios para un proceso individual. [4] En la práctica, rara vez es posible controlar el acceso de un proceso a la memoria, el tiempo de procesamiento, las direcciones de los dispositivos de E/S o los modos con la precisión necesaria para facilitar solo el conjunto preciso de privilegios que requerirá un proceso.

La formulación original es de Jerome Saltzer : [5]

Cada programa y cada usuario privilegiado del sistema debe operar utilizando la menor cantidad de privilegios necesarios para completar el trabajo.

Peter J. Denning , en su artículo "Sistemas operativos tolerantes a fallos", lo sitúa en una perspectiva más amplia entre "Los cuatro principios fundamentales de la tolerancia a fallos".

Las "asignaciones dinámicas de privilegios" fueron analizadas anteriormente por Roger Needham en 1972. [6] [7]

Históricamente, la instancia más antigua de (menor privilegio) es probablemente el código fuente de login.c , que comienza la ejecución con permisos de superusuario y, en el instante en que ya no son necesarios, los descarta mediante setuid() con un argumento distinto de cero, como se demuestra en el código fuente de Unix versión 6 .

Implementación

El núcleo siempre se ejecuta con privilegios máximos, ya que es el núcleo del sistema operativo y tiene acceso al hardware. Una de las principales responsabilidades de un sistema operativo, en particular un sistema operativo multiusuario, es la gestión de la disponibilidad del hardware y las solicitudes de acceso a él desde los procesos en ejecución . Cuando el núcleo falla, los mecanismos por los que mantiene el estado también fallan. Por lo tanto, incluso si hay una manera de que la CPU se recupere sin un reinicio completo , la seguridad continúa aplicándose, pero el sistema operativo no puede responder adecuadamente al fallo porque no fue posible detectarlo. Esto se debe a que la ejecución del núcleo se detuvo o el contador del programa reanudó la ejecución desde algún lugar en un bucle infinito y, por lo general, no funcional . [ cita requerida ] Esto sería similar a experimentar amnesia (falla de ejecución del núcleo) o quedar atrapado en un laberinto cerrado que siempre regresa al punto de partida (bucles cerrados).

El principio del mínimo privilegio demostrado por los anillos de privilegios para Intel x86

Si la ejecución se reanuda después de la caída mediante la carga y ejecución de código troyano , el autor del código troyano puede usurpar el control de todos los procesos. El principio del mínimo privilegio obliga al código a ejecutarse con el nivel de privilegio/permiso más bajo posible. Esto significa que el código que reanuda la ejecución del código (ya sea un troyano o simplemente la ejecución del código que se reanuda desde una ubicación inesperada) no tendría la capacidad de realizar procesos maliciosos o indeseables. Un método utilizado para lograr esto se puede implementar en el hardware del microprocesador . Por ejemplo, en la arquitectura Intel x86, el fabricante diseñó cuatro "modos" de ejecución (del anillo 0 al anillo 3) con grados de acceso graduados, muy parecidos a los sistemas de autorización de seguridad en las agencias de defensa e inteligencia. [ cita requerida ]

Tal como se implementa en algunos sistemas operativos, los procesos se ejecutan con un conjunto de privilegios potenciales y un conjunto de privilegios activos . [ cita requerida ] Dichos conjuntos de privilegios se heredan del padre según lo determina la semántica de fork () . Un archivo ejecutable que realiza una función privilegiada (por lo que técnicamente constituye un componente del TCB y, concomitantemente, se denomina programa confiable o proceso confiable) también puede marcarse con un conjunto de privilegios. Esta es una extensión lógica de las nociones de conjunto de ID de usuario y conjunto de ID de grupo . [ cita requerida ] La herencia de privilegios de archivo por parte de un proceso está determinada por la semántica de la familia de llamadas al sistema exec () . La manera precisa en que interactúan los privilegios de proceso potenciales, los privilegios de proceso reales y los privilegios de archivo puede volverse compleja. En la práctica, el privilegio mínimo se practica al forzar a un proceso a ejecutarse solo con los privilegios requeridos por la tarea. La adhesión a este modelo es bastante compleja y propensa a errores.

Principios similares

El concepto de minimización de la base de computación confiable (TCB) de los Criterios de evaluación de sistemas informáticos confiables (TCSEC) es un requisito mucho más estricto que solo se aplica a las clases de garantía funcionalmente más sólidas (enlace a la sección Divisiones y clases de los Criterios de evaluación de sistemas informáticos confiables), es decir, las clases B3 y A1 (que son funcionalmente idénticas pero difieren en términos de evidencia y documentación requerida).

El privilegio mínimo se asocia a menudo con la agrupación de privilegios : es decir, asumir los privilegios necesarios en el último momento posible y descartarlos tan pronto como ya no sean estrictamente necesarios, reduciendo así ostensiblemente las consecuencias de un código erróneo que explota involuntariamente más privilegios de los que se merecen. El privilegio mínimo también se ha interpretado en el contexto de la distribución de permisos de control de acceso discrecional (DAC), por ejemplo, afirmando que dar al usuario U acceso de lectura/escritura al archivo F viola el privilegio mínimo si U puede completar sus tareas autorizadas con solo permiso de lectura.

Véase también

Referencias

  1. ^ Saltzer, Jerome H. ; Schroeder, Michael D. (1975). "La protección de la información en los sistemas informáticos". Actas del IEEE . 63 (9). Instituto de Ingenieros Eléctricos y Electrónicos (IEEE): 1278–1308. doi :10.1109/proc.1975.9939. ISSN  0018-9219. OCLC  5871551104. S2CID  269166.
  2. ^ Jonathan, Clark; DABCC Inc. "El gurú de la virtualización escribe: "El modo de usuario es algo bueno: implementación en cuentas bloqueadas sin elevación de seguridad"". Archivado desde el original el 10 de febrero de 2013. Consultado el 15 de marzo de 2013 .
  3. ^ Aaron Margosis (agosto de 2006). "Problemas de privilegios: encontrar y corregir errores de LUA". Microsoft .
  4. ^ "Matt Bishop, Computer Security: Art and Science, Boston, MA: Addison-Wesley, 2003. pp. 343-344 citado por Barnum & Gegick 2005". Archivado desde el original el 20 de octubre de 2007. Consultado el 17 de noviembre de 2007 .
  5. ^ Saltzer, Jerome H. (1974). "Protección y control del intercambio de información en multics". Comunicaciones de la ACM . 17 (7): 388–402. CiteSeerX 10.1.1.226.3939 . doi :10.1145/361011.361067. ISSN  0001-0782. S2CID  326132. 
  6. ^ Needham, RM (1972). "Sistemas de protección e implementaciones de protección". Actas de la Conferencia conjunta de informática de otoño de la AFIPS '72, 5-7 de diciembre de 1972, Parte I. págs. 571–578. doi :10.1145/1479992.1480073. S2CID  7371342.
  7. ^ Fred B. Schneider. "Mínimo privilegio y más" (PDF) .

Bibliografía

Enlaces externos