Consideraciones de seguridad para tecnologías de asistencia

Las tecnologías de asistencia son aplicaciones que se ejecutan en el escritorio de Windows y ayudan a los usuarios de accesibilidad a interactuar con el sistema operativo y otras aplicaciones que se ejecutan en el equipo, incluidas las aplicaciones de la nueva interfaz de usuario de Windows. Las aplicaciones tecnológicas de asistencia funcionan recuperando información del sistema operativo y otras aplicaciones y, a continuación, presentando la información de forma que sea accesible para el usuario. Una aplicación de tecnología de asistencia también puede "impulsar" mediante programación el sistema operativo y otras aplicaciones en función de la entrada del usuario.

La naturaleza de las aplicaciones tecnológicas de asistencia requiere que crucen los límites del proceso y que tengan acceso a los procesos que se ejecutan en un nivel de integridad superior (IL) que ellos mismos. (Una aplicación de tecnología de asistencia se ejecuta en il medio). Por ejemplo, cuando el usuario intenta realizar una tarea que requiere privilegios administrativos, Windows presenta un cuadro de diálogo que pide al usuario su consentimiento para continuar. Este cuadro de diálogo se ejecuta en una IL superior para protegerlo de la comunicación entre procesos, de modo que el software malintencionado no pueda simular la entrada del usuario. De forma similar, la pantalla de inicio de sesión de escritorio se ejecuta en un IL superior para evitar que otros procesos accedan a él.

Normalmente, las aplicaciones de tecnología de asistencia necesitan acceso a los elementos de interfaz de usuario del sistema protegido o a otros procesos que podrían estar ejecutándose en un nivel de privilegios superior. Por lo tanto, las aplicaciones tecnológicas de asistencia deben ser de confianza para el sistema y deben ejecutarse con privilegios especiales.

Para obtener acceso a procesos de IL superiores, una aplicación de tecnología de asistencia debe establecer la marca UIAccess en el manifiesto de la aplicación y ser iniciada por un usuario con privilegios de administrador.

Nota

Los privilegios de acceso están restringidos de la siguiente manera:

  • Una aplicación que no tiene UIAccess en el manifiesto comienza con IL medio y no puede acceder a la interfaz de usuario de proceso con privilegios elevados ("medium+" IL).
  • Una aplicación que tiene UIAccess en el manifiesto y la inicia un usuario que no está en el grupo de administradores, se inicia como IL "media+" y no puede acceder a la interfaz de usuario con privilegios elevados (nada que se ejecute como il "alto", como las aplicaciones iniciadas a través de un clic derecho -> Ejecutar como administrador).
  • Una aplicación tiene acceso a la interfaz de usuario y un usuario administrador inicia como IL "alta" y puede acceder a la interfaz de usuario con privilegios elevados porque tiene la misma IL.

UIAccess no es suficiente para que un proceso pase por el límite de IL.

Además de tener acceso a procesos de IL superiores, una aplicación de tecnología de asistencia con estos privilegios se puede ejecutar como la aplicación más alta en el orden z en cualquier momento, lo que significa que una aplicación de tecnología de asistencia puede ser visible y disponible siempre que el usuario lo necesite.

Importante

Ninguno de los escenarios enumerados anteriormente proporciona acceso a la interfaz de usuario que se ejecuta en el IL del sistema. Esto solo es posible si el proceso se inicia en el escritorio de control de cuentas de usuario (UAC) en SISTEMA (y IL del sistema). En este caso, establecer UIAccess no tiene ningún efecto.

Requisitos de UIAccess para aplicaciones tecnológicas de asistencia

Una aplicación de tecnología de asistencia es una aplicación de escritorio de Windows windows que interactúa con otros procesos que se ejecutan en el escritorio y en la nueva interfaz de usuario de Windows para obtener información del sistema y las aplicaciones. La aplicación de tecnología de asistencia puede proporcionar la información a los usuarios de accesibilidad.

Una aplicación de tecnología de asistencia obtiene acceso a otros procesos estableciendo la marca UIAccess en el manifiesto de aplicación. Para usar la marca UIAccess, una aplicación de tecnología de asistencia debe cumplir los siguientes requisitos.

  • Requerir mostrar, interactuar o reflejar información de otra aplicación para proporcionar información para un escenario de accesibilidad o
  • Requerir que se ejecute como la ventana superior para obtener o mostrar esta información.

Para usar UIAccess, una aplicación de tecnología de asistencia debe:

  • Firmar con un certificado para interactuar con las aplicaciones que se ejecutan en un nivel de privilegios superior.
  • Sea de confianza para el sistema. La aplicación debe instalarse en una ubicación segura que requiera un control de cuentas de usuario (UAC) para solicitar acceso. Por ejemplo, la carpeta Archivos de programa.
  • Se debe compilar con un archivo de manifiesto que incluya la marca uiAccess.

UIAccess no debe usarse:

  • Por aplicaciones que no son tecnologías de asistencia.

  • Mediante aplicaciones tecnológicas de asistencia que muestran información o interfaz de usuario que no son relevantes para el escenario de accesibilidad que tienen como destino.

  • Por aplicaciones que solo quieren aparecer encima de otras aplicaciones en la nueva interfaz de usuario de Windows.

    Nota

    Las aplicaciones desarrolladas para la nueva interfaz de usuario de Windows no tienen UIAccess como opción disponible.

     

Establecer UIAccess en el archivo de manifiesto de aplicación

Para obtener acceso a la interfaz de usuario del sistema protegida, las aplicaciones deben compilarse con un archivo de manifiesto que incluya un atributo especial en el archivo de manifiesto. Este atributo uiAccess se incluye en la etiqueta requestedExecutionLevel , como se muestra en el ejemplo de código siguiente.

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
        <requestedPrivileges> 
        <requestedExecutionLevel 
            level="highestAvailable" 
            uiAccess="true" /> 
        </requestedPrivileges> 
    </security> 
</trustInfo> 

El valor del atributo level de este código es solo un ejemplo.

UIAccess es "false" de forma predeterminada. Si se omite el atributo o si no hay ningún manifiesto, la aplicación no puede obtener acceso a la interfaz de usuario protegida.

Para obtener más información sobre la seguridad de Windows, sobre la firma de aplicaciones y la creación de manifiestos, vea La historia para desarrolladores de Windows Vista y Windows Server 2008: Requisitos de desarrollo de aplicaciones de Windows Vista para el control de cuentas de usuario (UAC) en MSDN.

Fundamentos de UI Automation