Considerações de Segurança para Tecnologias Assistivas

As tecnologias adaptativas são aplicativos executados na área de trabalho do Windows e ajudam os usuários de acessibilidade a interagir com o sistema operacional e outros aplicativos presentes no computador, incluindo aplicativos na nova interface do usuário do Windows. Os aplicativos de tecnologia assistencial operam recuperando informações do sistema operacional e de outros aplicativos e, depois, apresentam as informações de um jeito acessível ao usuário. Um aplicativo de tecnologia auxiliar também pode "conduzir" programaticamente o sistema operacional e outros aplicativos com base na entrada do usuário.

A natureza dos aplicativos de tecnologia auxiliar exige que eles ultrapassem os limites do processo e que tenham acesso a processos executados em um nível de integridade (IL) mais alto do que eles mesmos. (Um aplicativo de tecnologia auxiliar é executado em IL médio.) Por exemplo, quando o usuário tenta executar uma tarefa que exige privilégios administrativos, o Windows mostra uma caixa de diálogo solicitando o consentimento do usuário para continuar. Essa caixa de diálogo é executada em um IL mais elevado para protegê-la contra comunicação entre processos, para que software mal-intencionados não possam simular a entrada de usuário. Da mesma forma, a tela de logon da área de trabalho é executada em um IL mais elevado para impedir que ela seja acessada por outros processos.

Normalmente, aplicativos de tecnologia auxiliar precisam de acesso aos elementos da interface do usuário do sistema protegido ou a outros processos que podem estar sendo executados em um nível de privilégio mais alto. Portanto, os aplicativos de tecnologia auxiliar devem ser confiáveis para o sistema e devem ser executados com privilégios especiais.

Para ter acesso a processos de IL superiores, um aplicativo de tecnologia auxiliar deve definir o sinalizador UIAccess no manifesto do aplicativo e ser iniciado por um usuário com privilégios de administrador.

Observação

Os privilégios de acesso são restritos assim:

  • Um aplicativo que não tem UIAccess no manifesto começa com IL médio e não pode acessar a IU do processo elevado (IL "medium+").
  • Um aplicativo que tem UIAccess no manifesto e é iniciado por um usuário que não está no grupo de administradores, inicia como IL "medium+" e não pode acessar a interface do usuário elevada (nada executado como IL "high", como aplicativos iniciados por meio de Clique com o botão direito do mouse -> Executar como administrador).
  • Um aplicativo tem acesso à interface do usuário e é iniciado por um usuário administrador que começa como IL "high" e pode acessar a interface do usuário elevada porque tem o mesmo IL.

O UIAccess não é suficiente para que um processo se mova para cima cruzando o limite de IL.

Além de ter acesso a processos de IL mais elevados, um aplicativo de tecnologia auxiliar com esses privilégios pode ser executado como o aplicativo mais elevado na ordem z a qualquer momento, o que significa que um aplicativo de tecnologia auxiliar pode ficar visível e disponível sempre que o usuário precisar.

Importante

Nenhum dos cenários listados antes dá acesso à interface do usuário em execução no IL do sistema. Isso só é possível se o processo for iniciado na área de trabalho do UAC (controle de conta de usuário) em SYSTEM (e no IL do sistema). Neste caso, a configuração de UIAccess não tem efeito.

Requisitos do UIAccess para os aplicativos de tecnologia auxiliar

Um aplicativo de tecnologia auxiliar é um aplicativo da área de trabalho do Windows que interage com outros processos em execução na área de trabalho e na nova interface do usuário do Windows para obter informações do sistema e dos aplicativos. O aplicativo de tecnologia auxiliar pode fornecer as informações aos usuários de acessibilidade.

Um aplicativo de tecnologia auxiliar obtém acesso a outros processos definindo o sinalizador UIAccess no manifesto do aplicativo. Para usar o sinalizador UIAccess, um aplicativo de tecnologia assistencial deve cumprir os requisitos a seguir.

  • Exigir a exibição, interação ou reflexão de informações de outro aplicativo para fornecer as informações para um cenário de acessibilidade e/ou
  • Exibir a execução como a janela mais elevada para obter ou exibir essas informações.

Para usar o UIAccess, um aplicativo de tecnologia auxiliar precisa:

  • Ser assinado com um certificado para interagir com aplicativos em execução em um nível de privilégio mais elevado.
  • Ter a confiança do sistema. O aplicativo deve ser instalado em um local seguro que exija um prompt de UAC (controle de conta de usuário) para acesso. Por exemplo, a pasta Arquivos de programas.
  • Ser estruturado com um arquivo de manifesto que inclua o sinalizador uiAccess.

O UIAccess não deve ser usado:

  • Por aplicativos que não sejam de tecnologias auxiliares.

  • Por aplicativos de tecnologia auxiliar que mostrem informações ou interfaces do usuário que não sejam relevantes ao cenário de acessibilidade a que se destinam.

  • Por aplicativos destinados somente a aparecer acima de outros aplicativos na nova interface do usuário do Windows.

    Observação

    Os aplicativos desenvolvidos para a nova interface do usuário do Windows não têm UIAccess como opção disponível.

     

Configurando o UIAccess no arquivo de manifesto do aplicativo

Para ter acesso à interface do usuário do sistema protegido, os aplicativos devem ser criados com um arquivo de manifesto que inclua um atributo especial no arquivo de manifesto. Este atributo uiAccess está incluído na marcação requestedExecutionLevel, conforme mostrado no exemplo de código a seguir.

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

O valor do atributo level neste código é apenas um exemplo.

O UIAccess é "false" por padrão. Se o atributo for omitido ou se não houver manifesto, o aplicativo não poderá ter acesso à interface do usuário protegida.

Para mais informações sobre a segurança do Windows, sobre a assinatura de aplicativos e sobre a criação de manifestos, consulte A história do desenvolvedor do Windows Vista e do Windows Server 2008: requisitos de desenvolvimento de aplicativos do Windows Vista para UAC (Controle de Conta de Usuário).

Conceitos básicos de automação da interface do usuário