Compartir a través de


Control de integridad obligatorio

El control de integridad obligatorio (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, aunque la DACL de ese objeto permita 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 el nivel medio, y los elevados, el alto. 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). La SACL contiene una entrada de control de acceso (ACE) SYSTEM_MANDATORY_LABEL_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 nivel mínimo 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 baja integridad, el token para el nuevo proceso funciona 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 encuentran en el nivel de integridad de usuario típico, están protegidos por escritura en este nuevo proceso.

Directiva obligatoria

La ACE SYSTEM_MANDATORY_LABEL_ACE en la SACL de un objeto protegible contiene una máscara de acceso que especifica el acceso al que se conceden entidades de seguridad con niveles de integridad inferiores a los del objeto. 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 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.