Consideraciones de seguridad para las 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 de tecnología de asistencia funcionan recuperando información del sistema operativo y otras aplicaciones y, a continuación, presentan la información de una manera 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 de los procesos 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 en el que se pide al usuario su consentimiento para continuar. Este cuadro de diálogo se ejecuta en un IL superior para protegerlo contra la comunicación entre procesos, por lo que el software malintencionado no puede simular una entrada de usuario. Del mismo modo, la pantalla de inicio de sesión de escritorio se ejecuta en un IL superior para evitar que otros procesos accedan a él.

Las aplicaciones de tecnología de asistencia suelen necesitar acceso a los elementos de la 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 de tecnología de asistencia deben ser de confianza para el sistema y se deben ejecutar 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 debe iniciarla un usuario con privilegios de administrador.

Nota:

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

  • 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 (IL "medium+").
  • 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 "medium+" y no puede acceder a la interfaz de usuario con acceso elevado (nada que se ejecute como IL "high", 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 la inicia un usuario administrador como IL "high" 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 estar 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 SYSTEM (y el IL del sistema). En este caso, establecer UIAccess no tiene ningún efecto.

Requisitos de UIAccess para aplicaciones de tecnología de asistencia

Una aplicación de tecnología de asistencia es una aplicación de escritorio de 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 que muestre, interactúe o refleje 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:

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

UIAccess no debe usarse:

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

  • Por aplicaciones de tecnología de asistencia que muestran información o una interfaz de usuario que no es relevante 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 IU de sistema protegido, las aplicaciones deben compilarse con un archivo de manifiesto que incluya un atributo especial. 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, consulte Historia de desarrolladores de Windows Vista y Windows Server 2008: Requisitos de desarrollo de aplicaciones de Windows Vista para el control de cuentas de usuario (UAC).

Fundamentos de UI Automation