¿Cuál es el mecanismo de integridad de Windows?

El mecanismo de integridad de Windows es un componente principal de la arquitectura de seguridad de Windows que restringe los permisos de acceso de las aplicaciones que se ejecutan en la misma cuenta de usuario y que son menos confiables.

El mecanismo de integridad de Windows Vista® amplía la arquitectura de seguridad del sistema operativo asignando un nivel de integridad a los procesos de aplicación y objetos protegibles.

El nivel de integridad es una representación de la confiabilidad de los procesos y objetos de aplicación en ejecución, como los archivos creados por la aplicación. El mecanismo de integridad proporciona la capacidad para que los administradores de recursos, como el sistema de archivos, usen directivas predefinidas que bloqueen procesos de integridad inferior o menor confiabilidad, desde la lectura o modificación de objetos de mayor integridad. El mecanismo de integridad permite al modelo de seguridad de Windows aplicar nuevas restricciones de control de acceso que no se pueden definir al conceder permisos de usuario o grupo en listas de control de acceso (ACL).

La arquitectura de seguridad de Windows se basa principalmente en la concesión de derechos de acceso (permisos de lectura, escritura y ejecución) y privilegios a usuarios o grupos representados internamente por identificadores de seguridad (SID). Cuando un usuario inicia sesión en Windows, el subsistema de seguridad establece el SID del usuario y los SID de pertenencia a grupos en un token de acceso de seguridad. El token de acceso de seguridad se asigna a cada proceso de aplicación que ejecuta ese usuario. Cada vez que el proceso de aplicación abre un objeto, como un archivo o una clave del Registro, el administrador de recursos que administra las llamadas de objeto en el subsistema de seguridad para tomar una decisión de acceso. La comprobación de acceso determina los permisos de acceso permitidos para este usuario. El subsistema de seguridad (también conocido como Monitor de referencia de seguridad) compara los SID de usuario y grupo en el token de acceso con los derechos de acceso en un descriptor de seguridad asociado al objeto . Si al SID de usuario se le conceden derechos de acceso total en la ACL del objeto, el proceso de aplicación que ejecuta el usuario tiene acceso completo al objeto. Para obtener más información sobre la arquitectura de seguridad de Windows, consulta Recursos del mecanismo de integridad de Windows.

Extensión de la arquitectura de seguridad de Windows

El mecanismo de integridad de Windows amplía la arquitectura de seguridad definiendo un nuevo tipo de entrada de control de acceso (ACE) para representar un nivel de integridad en el descriptor de seguridad de un objeto. La nueva ACE representa el nivel de integridad del objeto. También se asigna un nivel de integridad al token de acceso de seguridad cuando se inicializa el token de acceso. El nivel de integridad del token de acceso representa un nivel de integridad del sujeto. El nivel de integridad del token de acceso se compara con el nivel de integridad del descriptor de seguridad cuando el monitor de referencia de seguridad realiza una comprobación de acceso. Windows Vista usa la función AccessCheck para determinar qué derechos de acceso se permiten a un objeto protegible. Windows restringe los derechos de acceso permitidos en función de si el nivel de integridad del sujeto es mayor o inferior que el objeto, y en función de las marcas de directiva de integridad en la nueva ACE de control de acceso. El subsistema de seguridad implementa el nivel de integridad como una etiqueta obligatoria para distinguirlo del acceso discrecional bajo el control de usuario que proporcionan las ACL.

Objetivos de diseño del mecanismo de integridad de Windows

El mecanismo de integridad de Windows habilita una serie de escenarios importantes en Windows Vista. Para satisfacer los requisitos, el diseño del mecanismo de integridad de Windows tenía que cumplir los siguientes objetivos.

  • Los niveles de integridad se deben asignar automáticamente a cada token de acceso de seguridad durante la creación del token de acceso, de modo que cada proceso y subproceso tenga un nivel de integridad eficaz para el control de acceso.
  • El subsistema de seguridad asigna automáticamente etiquetas obligatorias a tipos de objeto específicos.
  • El sistema debe usar el menor número de niveles de integridad posible para que la arquitectura básica sea sencilla de entender y usar.
  • La directiva de integridad debe ser flexible para cumplir los requisitos de acceso de diferentes administradores de recursos de objetos y permitir la extensibilidad futura.
  • El mecanismo de integridad debe integrarse con la arquitectura de seguridad existente para minimizar el impacto en el gran legado del código de sistema y aplicación que depende de la seguridad de Windows.
  • No es necesario que los administradores o usuarios configuren los niveles de integridad para que el mecanismo de cumplimiento funcione correctamente.

El mecanismo de integridad de Windows cumple estos objetivos definiendo un nuevo tipo ACE de etiqueta obligatoria para asignar un nivel de integridad a los objetos. Los detalles de esta estructura se describen en una sección posterior de este documento. Sin embargo, la ACE de etiqueta obligatoria define un nivel de integridad de objeto sin cambios en la definición de estructura de datos del descriptor de seguridad existente o en la lista de control de acceso discrecional que se usa habitualmente.

El mecanismo de integridad de Windows se basa en una etiqueta obligatoria que el sistema operativo asigna para diferenciarlo del acceso discrecional bajo el control de usuario. El control de acceso discrecional permite al propietario del objeto, o al grupo al que se concede permiso, cambiar los permisos de acceso del objeto. Windows proporciona una interfaz gráfica de usuario (UI) para que los usuarios avanzados vean y modifiquen los permisos de seguridad (representados por la ACL discrecional) en objetos, como archivos y claves del Registro. Las etiquetas obligatorias siempre se asignan a objetos específicos y hay controles sobre cómo el creador del objeto puede establecer o inicializar la etiqueta en la creación de objetos. No se implementó ninguna interfaz gráfica de usuario para administrar etiquetas de integridad para Windows Vista porque la administración de etiquetas está disponible o es necesaria para relativamente pocas áreas.

¿Por qué hay un mecanismo de integridad de Windows?

El propósito del mecanismo de integridad de Windows es restringir los permisos de acceso de las aplicaciones que se ejecutan en la misma cuenta de usuario y que son menos confiables. Se debe impedir que el código potencialmente malintencionado que se descargue de Internet modifique el estado del sistema, cambie los archivos de datos de usuario o manipule el comportamiento de otros programas de aplicación. El subsistema de seguridad de Windows asigna una jerarquía sencilla de niveles de integridad al código que se ejecuta en distintos niveles de privilegios para el mismo usuario. Las versiones anteriores de Windows pueden ajustar los privilegios de token de acceso de seguridad de un proceso de aplicación, aunque este ajuste no es habitual. Antes de Windows Vista, la mayoría de las aplicaciones se ejecutaron con una cuenta administrativa con derechos de administrador completos. Windows Vista incorpora el concepto de privilegios mínimos al habilitar un uso más amplio de las cuentas de usuario estándar. Control de cuentas de usuario (UAC) en Administración modo de aprobación para cuentas de administrador significa que varias aplicaciones del mismo escritorio se ejecutan con distintos niveles de privilegios. Por ejemplo, el modo protegido Internet Explorer usa el mecanismo de integridad para ejecutar el explorador web en un proceso con permisos de acceso limitados.

El problema de seguridad principal que soluciona el mecanismo de integridad de Windows no es la manipulación no autorizada de los datos de usuario y, indirectamente, con el estado del sistema. Un problema secundario con el que ayuda el mecanismo de integridad es la divulgación de información. Sin embargo, la divulgación de información solo se impide con respecto al acceso al espacio de direcciones del proceso. El uso compartido de información es muy común entre las aplicaciones de Windows y el uso compartido de información conveniente entre aplicaciones es fundamental para la experiencia del usuario. Un ejemplo es copiar y pegar. Los límites de seguridad rígidos sobre el uso compartido de información entre aplicaciones que se ejecutan en la misma cuenta de usuario pueden afectar gravemente a la compatibilidad de aplicaciones y a la experiencia del usuario.

El código no confiable puede intentar modificar los datos de usuario de muchas maneras. Algunos ataques pueden intentar manipular datos directamente mediante la creación, modificación o eliminación de archivos. Otros ataques tienen como destino otro proceso que se ejecuta con privilegios más elevados, con el objetivo de obtener código arbitrario para ejecutarse en otra aplicación que tiene el nivel de acceso necesario. Hay muchos tipos de ataques entre procesos. Debido a la amplia gama de diseño e implementación de aplicaciones, el mecanismo de integridad no puede proporcionar una barrera de aislamiento completa. El mecanismo de integridad de Windows no está pensado como espacio aislado de la aplicación. Sin embargo, puede ser una de las herramientas de seguridad que usan los desarrolladores de aplicaciones para restringir el comportamiento de las aplicaciones menos confiables.

Mecanismo de integridad de Windows Vista y modelos de integridad anteriores

Algunos rasgos del mecanismo de integridad de Windows son similares a los modelos de integridad anteriores para la seguridad del equipo. Sin embargo, el mecanismo de integridad de Windows está diseñado principalmente para abordar la manipulación o elevación de privilegios en el entorno de aplicaciones de Windows altamente colaborativo. Los modelos de integridad anteriores estaban más preocupados por mantener la integridad de los procesos de confianza mediante la aplicación de directivas que impiden la lectura de datos que no son de confianza.

El modelo de seguridad de Biba se basa en una jerarquía de etiquetas de integridad y en las directivas de acceso que se permiten cuando un nivel de integridad de sujeto domina el nivel de integridad del objeto. El mecanismo de integridad de Windows es similar al modelo de Biba de las siguientes maneras:

  • Usa una jerarquía de etiquetas de integridad (las etiquetas de integridad no son las mismas que las etiquetas de seguridad en el modelo de Bell-LePadula).
  • El sistema usa un conjunto de temas ordenados, objetos y niveles de integridad.
  • El nivel de integridad del sujeto domina (es mayor o igual que) el nivel de integridad del objeto.
  • Las directivas de integridad impiden el acceso a objetos, pero no se usan principalmente para limitar el flujo de información.
  • Impedir la divulgación de información no es un objetivo del mecanismo de integridad en Windows Vista.

Los niveles de integridad de Windows se ordenan para que un valor inferior indique menos confiabilidad y un valor superior indica una mayor confiabilidad. Un sujeto de nivel inferior no puede modificar un objeto de nivel superior. El nivel de integridad del sujeto no es dinámico. Por ejemplo, el nivel de integridad de un sujeto no cambia a un valor inferior si el proceso lee los datos de un objeto de baja integridad. El modelo de integridad estricta de Biba no permite que un proceso de mayor integridad lea datos de integridad inferior. Esto se denomina a veces una directiva de integridad "sin lectura". Las directivas de integridad de Windows, que se describen con más detalle a continuación, no impiden o impiden que los sujetos de mayor integridad lean o ejecuten objetos de integridad inferior. Hay muchos ejemplos de ataques en los que la lectura de datos de entrada con formato incorrecto y que no es de confianza da como resultado una vulnerabilidad de una vulnerabilidad en una aplicación y la ejecución arbitraria de código. El mecanismo de integridad de Windows no impide ni impide leer datos en ningún nivel. Windows no aplica una directiva de integridad estricta descrita en el modelo de Biba. El diseño de integridad supone que los procesos diseñados para controlar datos que no son de confianza de un origen desconocido o que no son de confianza se ejecutan en un nivel de integridad inferior o que los datos que no son de confianza se comprueban antes de su uso. Sin embargo, el mecanismo de integridad de Windows no aplica esa restricción.

El mecanismo de integridad de Windows no implementa una directiva dinámica o "Marca de bajo agua". Una directiva dinámica cambia el nivel de integridad del sujeto a medida que el asunto abre objetos de integridad inferior. Un problema con la integridad dinámica es cuando un proceso de alta integridad obtiene identificadores abiertos para muchos objetos basados en la integridad alta y, a continuación, de repente se convierte en un sujeto de integridad inferior después de abrir un archivo determinado de baja integridad. Forzar todos los identificadores abiertos a objetos de mayor integridad para cerrarse cuando el nivel de integridad cambia significativamente afecta al comportamiento de la aplicación. El proceso dinámico de integridad inferior se convierte en un objeto de destino de otros procesos en el nivel de integridad inferior. Estos procesos ahora pueden modificar el comportamiento de la aplicación (en el mismo nivel inferior) que tiene identificadores abiertos para objetos de mayor integridad.

El mecanismo de integridad de Windows no está diseñado para la protección de la integridad de los datos para admitir requisitos militares o comerciales, tal como se describe en el modelo de Clark-Wilson. La implementación de Windows de los controles de integridad no se basa en los conceptos de elementos de datos restringidos o sin restricciones y procedimientos de transformación certificados. Sin embargo, estos conceptos son útiles para los diseñadores de aplicaciones cuando consideran el flujo de información de orígenes que no son de confianza en procesos de mayor integridad.

Aunque el mecanismo de integridad de Windows es similar a los modelos de integridad anteriores en la seguridad del equipo, Windows Vista no intenta implementar ninguno de los modelos. En su lugar, el mecanismo de integridad de Windows limita los permisos de acceso que están disponibles para los procesos que se ejecutan con distintos niveles de privilegios o confianza. Para obtener más información sobre el trabajo anterior en los modelos de integridad por Biba y Clark-Wilson y las directivas de integridad dinámica, consulta Recursos del mecanismo de integridad de Windows.