Control de integridad obligatoria

El Control de integridad obligatoria (MIC) proporciona un mecanismo para controlar el acceso a objetos protegibles. Este mecanismo se suma al control de acceso discrecional y evalúa el acceso antes de que se evalúen las comprobaciones de acceso en la lista de control de acceso discrecional (DACL) de un objeto.

MIC usa niveles de integridad y directiva obligatoria para evaluar el acceso. A las entidades de seguridad y a los objetos protegibles se les asignan niveles de integridad que determinan sus niveles de protección o acceso. Por ejemplo, una entidad de seguridad con un nivel de integridad bajo no puede escribir en un objeto con un nivel de integridad medio, incluso si la DACL de ese objeto permite el acceso de escritura a la entidad de seguridad.

Windows define cuatro niveles de integridad: bajo, medio, alto y sistema. Los usuarios estándar reciben usuarios medios y elevados que reciben un alto nivel. Los procesos que inicia y los objetos que crea reciben el nivel de integridad (medio o alto) o bajo si el nivel del archivo ejecutable es bajo; los servicios del sistema reciben integridad del sistema. Los objetos que carecen de una etiqueta de integridad se tratan como medios por el sistema operativo; Esto impide que el código de baja integridad modifique objetos sin etiquetar. Además, Windows garantiza que los procesos que se ejecutan con un nivel de integridad bajo no pueden obtener acceso a un proceso asociado a un contenedor de aplicaciones.

Etiquetas de integridad

Las etiquetas de integridad especifican los niveles de integridad de objetos protegibles y entidades de seguridad. Las etiquetas de integridad se representan mediante SID de integridad. El SID de integridad de un objeto protegible se almacena en su lista de control de acceso del sistema (SACL). SacL contiene un SYSTEM_MANDATORY_LABEL_ACEentrada de control de acceso (ACE) que, a su vez, contiene el SID de integridad. Cualquier objeto sin un SID de integridad se trata como si tuviera integridad media.

El SID de integridad de una entidad de seguridad se almacena en su token de acceso. Un token de acceso puede contener uno o varios SID de integridad.

Para obtener información detallada sobre los SID de integridad definidos, consulte SID conocidos.

Creación de un proceso

Cuando un usuario intenta iniciar un archivo ejecutable, el nuevo proceso se crea con el mínimo del nivel de integridad de usuario y el nivel de integridad de archivo. Esto significa que el nuevo proceso nunca se ejecutará con mayor integridad que el archivo ejecutable. Si el usuario administrador ejecuta un programa de integridad baja, el token de las nuevas funciones de proceso con el nivel de integridad bajo. Esto ayuda a proteger a un usuario que inicia código no confiable frente a actos malintencionados realizados por ese código. Los datos de usuario, que se encuentra en el nivel de integridad de usuario típico, están protegidos por escritura frente a este nuevo proceso.

Directiva obligatoria

El SYSTEM_MANDATORY_LABEL_ACE ACE en la SACL de un objeto protegible contiene una máscara de acceso que especifica el acceso que las entidades de seguridad con niveles de integridad inferiores a los del objeto se conceden. Los valores definidos para esta máscara de acceso son SYSTEM_MANDATORY_LABEL_NO_WRITE_UP, SYSTEM_MANDATORY_LABEL_NO_READ_UP y SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP. De forma predeterminada, el sistema crea cada objeto con una máscara de acceso de SYSTEM_MANDATORY_LABEL_NO_WRITE_UP.

Cada token de acceso también especifica una directiva obligatoria establecida por la autoridad de seguridad local (LSA) cuando se crea el token. Esta directiva se especifica mediante una estructura de TOKEN_MANDATORY_POLICY asociada al token. Esta estructura se puede consultar llamando a la función GetTokenInformation con el valor del parámetro TokenInformationClass establecido en TokenMandatoryPolicy.