Sítio do Piropo

B. Piropo

< Coluna em Fórum PCs >
Volte
23/10/2006

< Segurança no Vista III: >
<
Contas de Usuário
>


Na coluna anterior discutimos o “Security Development Lifecycle – SDL”, uma estratégia de desenvolvimento adotada pela MS para três tipos de produtos (os usados em corporações, os usados para manejar informações pessoais e os usados para se conectar à Internet) que consiste essencialmente em agregar procedimentos de segurança a todas as etapas do desenvolvimento, da concepção à distribuição do produto. Como eu mesmo mencionei em um dos comentários acrescentados à coluna, o SDL não é uma nova função ou característica do sistema, mas uma estratégia de desenvolvimento que a MS afirma que passou a adotar. Sendo assim, não há como “testá-la” ou analisá-la. Ou se acredita que ela foi de fato incorporada ao desenvolvimento ou não. Foi justamente por esta razão que eu mencionei, no final do primeiro parágrafo da referida coluna, que muito do que nela se leria era baseado na documentação distribuída pela MS e exprimia a posição da empresa.

Já nas colunas de hoje e na próxima, o que vamos discutir é o controle das contas de usuário (“User Account Control – UAC”), esta sim uma nova característica incorporada ao sistema operacional que altera significativamente seu comportamento (para melhor). Portanto pode ser analisada e discutida independentemente das posições da empresa. É o que tentarei fazer aqui baseado tanto naquilo que a MS divulga quanto, sobretudo, na minha experiência como usuário do XP e do Vista, este último em seus diversos estágios Beta há quase um ano.

Mas primeiro vamos discutir, ainda que superficialmente, alguns dos conceitos básicos envolvidos.

Contas de usuário

Todo sistema operacional moderno para computadores pessoais é do tipo “multitarefa e multiusuário”.

Simplificadamente, um sistema multitarefa é aquele capaz de executar – ou simular que é capaz de executar – diversas tarefas (programas ou rotinas) ao mesmo tempo. O fato de ser “multitarefa” exige um tipo de controle de acesso à memória (memória protegida, que impede que um programa acesse trechos de memória alocados a outros) que depende não apenas do sistema operacional propriamente dito como também do microprocessador.

Já um sistema multiusuário, ainda simplificadamente, é aquele capaz de ser usado por diferentes usuários de tal modo que cada um deles mantenha sua própria identidade, preserve sua confidencialidade e tenha acesso a seus próprios recursos (configurações, dados, arquivos e pastas) ou, à seu critério, os compartilhe com os demais usuários. Isto depende exclusivamente das características lógicas do sistema operacional e do sistema de arquivos, não do microprocessador.

Sistemas multiusuários mostram todas as suas potencialidades quando usados em redes de computadores às quais diferentes usuários têm acesso, gerenciadas por um ou mais usuários com privilégios especiais, os “administradores da rede”, a quem compete, entre outras coisas, criar, modificar e alterar privilégios das “contas” que serão usadas pelos demais.

Uma “conta de usuário” é um conjunto de componentes lógicos que consistem basicamente de uma identidade de usuário (UserID, ou nome usado pelo usuário para se “registrar” ou se identificar perante o sistema), uma senha (não obrigatória, mas desejável) e um conjunto de regras que estabelecem limites para seus privilégios (ou seja, determinam o que aquele usuário pode e o que não pode fazer e a que pastas e arquivos terá ou não acesso).

Embora concebidos para uso em rede, mesmo uma máquina isolada (não conectada em rede, nem ao menos à Internet, se é que ainda existem máquinas assim) pode tirar vantagem das características de sistemas multiusuários. Imagine um computador doméstico, isolado, utilizado pelos diversos familiares. Em uma máquina como esta podem ser criadas diferentes “contas” para cada um dos membros da família, cada uma delas com acesso exclusivo a suas próprias pastas, onde são armazenados arquivos pessoais, com suas diferentes configurações (fundos de tela, cores, etc.) e privilégios para rodar ou não certos programas.

Todas as versões recentes de Windows são sistemas operacionais multitarefa e multiusuário.

Controle de contas no Windows XP

Quando a MS desenvolveu o Windows XP ela se baseou na experiência adquirida com a criação e distribuição do Windows 2000 (um sistema operacional derivado do Windows NT e concebido para uso corporativo) e com aquela obtida da criação e desenvolvimento do Windows 98SE (um sistema derivado do Windows 95 e concebido para uso doméstico). Por isso, em seu desenvolvimento, a MS procurou combinar a rigidez da segurança de um produto voltado para o uso corporativo com as “firulas” estéticas e facilidade de uso de um produto dirigido ao público leigo. Levando em conta que cada um destes usos tem suas características peculiares, algumas das quais são definitivamente conflitantes, pode-se até concluir que a MS chegou a uma solução de compromisso relativamente satisfatória. Mas longe da ideal.

Um dos pontos em que isso torna-se cristalinamente claro é justamente o controle das contas de usuários – sobre o qual vai aqui uma explicação sucinta e bastante simplificada, apenas para dar uma idéia do que mudou em Vista quando compararmos com o conteúdo da próxima coluna.

Em Windows XP um administrador – ou, mais especificamente, um “membro do grupo de administradores” (o que já é uma contradição já que para garantir expressamente a segurança, administrador só pode haver um) pode tudo. O detentor de qualquer conta de usuário incluída neste grupo pode instalar e configurar qualquer aplicativo, rodar qualquer programa, executar quaisquer rotinas e serviços em segundo plano, alterar gerenciadores de dispositivos e instalar novos dispositivos, alterar configurações básicas do sistema (como habilitar e desabilitar dispositivos de segurança do tipo “firewalls” e programas antivírus) e executar quaisquer atividades de manutenção do sistema. Seus privilégios são ilimitados e incluem não apenas acesso às pastas e arquivos dos demais usuários como também a possibilidade de alterar ou, simplesmente, cancelar suas contas (veja, na Figura 1, as tarefas que estão ao alcance de um administrador do Windows XP no que diz respeito a “Contas de usuário”).  

Clique para ampliar...
Figura 1: Janela “Contas de usuário” aberta por um administrador.

No computador onde está registrado, um administrador do Windows XP é o “rei da cocada preta”. Comparado com ele, o usuário comum, ou padrão (“standard user”), é quase um pária. Seus privilégios são muito mais limitados. No que diz respeito à alteração de contas, ele só pode mudar sua própria foto e senha. Veja, na Figura 2, o aspecto da mesma janela aberta no Windows XP por um “Convidado”, o usuário com menor grau de privilégios, e compare as ações disponíveis com as da Figura 1.

Clique para ampliar...
Figura 2: Mesma janela, aberta por um “Convidado”.

Quanto a programas, só pode rodar os instalados por um administrador, jamais instalá-los ele mesmo. Dependendo dos privilégios concedidos pelo administrador, ele pode criar, renomear e remover pastas e arquivos, desde que dentro de seus limites (ou seja, não pode sequer consultar pastas e arquivos criados por outros usuários exceto em locais explicitamente dedicados ao compartilhamento de arquivos, como a pasta “Arquivos compartilhados”). E no que toca a configurações, pode alterar apenas as que afetam sua própria Área de Trabalho (fundo de tela, cores, fontes, etc.) mas não aquelas que dizem respeito a configurações gerais da máquina, como data e hora do sistema, gerenciamento de energia e coisas que tais. A mais simples das solicitações, como o acesso às telas da “Ajuda e Suporte”, é negada a um “Convidado”. Veja, na Figura 3, o que ocorre quando um convidado em Windows XP tenta abrir a janela “Ajuda e Suporte”.

Clique para ampliar...
Figura 3: acesso negado ao centro de ajuda e suporte.

As razões do controle

Há três razões para que isto seja assim. Em primeiro lugar, segurança. Em segundo, segurança. E, em terceiro (adivinhou, heim?!!), segurança.

Em primeiro lugar segurança porque, como um usuário comum não pode ter acesso aos dados dos demais usuários comuns (que, por sua vez, também não podem ter acesso aos seus), sua privacidade e seus dados pessoais estão seguros.

Em segundo lugar segurança porque, como um usuário comum não pode rodar programas exceto os instalados pelo administrador, a possibilidade de que ele venha a contaminar o micro rodando um programa capaz de disseminar vírus, cavalos de Tróia ou programas espiões fica significativamente reduzida.

E em terceiro lugar segurança porque, como um usuário comum não pode alterar as configurações básicas do computador, fica impedido de desabilitar firewalls, antivírus e outros dispositivos de segurança garantindo, pelo menos em tese, que a máquina permaneça protegida durante todo o tempo de uso.

A concepção, em teoria, é tão engenhosa que, mesmo em uma máquina isolada utilizada exclusivamente por um usuário deve haver duas contas. Uma, a do próprio usuário, imbuído dos privilégios de administrador, para que possa instalar programas, alterar configurações e fazer todos os ajustes necessários. A outra, do mesmo usuário, porém com uma identidade diferente e na qualidade de usuário comum, para uso diário do computador.

Por que isto?

Porque quando o computador está sendo usado por um membro registrado no grupo dos administradores, qualquer programa pode ser executado, já que o sistema operacional parte do princípio que todo programa cuja execução foi solicitada naquele contexto tem permissão para rodar pois, implicitamente, quem solicitou sua execução foi um administrador. O que nem sempre é verdade, já que a forma usual de contaminar uma máquina com programas mal intencionados é fazer com que sua execução seja solicitada à revelia do usuário.

Explicando melhor: imagine um desses programas que prometem exibir aquelas sensacionais fotos de fulana ou sicrana (ou beltrano, para quem gosta...) sem roupa. Arquivos que chegam geralmente sob a forma de anexos a mensagens de correio eletrônico ou em disquetes ou “pen-drives”. O usuário registrado (“logado”) como administrador executa um inocente clique sobre o ícone do programa e, enquanto aprecia as fotos, o malévolo aplicativo instala à sorrelfa (dicionário, por favor) um programa espião que passa a rodar em segundo plano. Como tudo isto foi feito por um usuário com privilégios de administrador, o sistema operacional “acha” que está tudo nos conformes e lá se vão os dados e senhas da conta bancária do otá... digo, da vítima, diretamente para a máquina do pilantra que “plantou” o programa espião. Já se o usuário estiver usando o micro sob uma identidade cuja conta não detenha privilégios de administrador, assim que for tentada a instalação do programa espião em segundo plano o sistema a intercepta, emite um aviso de que está em curso uma tentativa de burlar a segurança e aborta o processo.

Em princípio uma estratégia inteligente e quase infalível para garantir a segurança.

Agora, pergunto: você usa seu computador assim (com duas contas, uma delas de usuário comum)? Conhece alguém que use?

Eu não uso nem conheço. E explico o porquê.

Por que não funciona

Pensando bem, “não funciona” é um certo exagero. Para sistemas corporativos, até que a coisa dá certo. As grandes empresas costumam manter uma política rígida do que pode ou não ser instalado em seus computadores (não apenas por questões de segurança como também por razões legais relativas às licença de uso – ou seja, para evitar que empregados abusados instalem programas piratas cuja presença pode custar um fortuna à empresa em caso de fiscalização), portanto para elas e para os administradores de suas redes é altamente desejável que os privilégios dos usuários comuns sejam limitados. Por outro lado, seus computadores (os das empresas) na maioria dos casos são máquinas destinadas a executar tarefas específicas, como acesso a bancos de dados, redação e consulta de documentos, troca de correspondência eletrônica e mais umas tantas tarefas que variam de empresa para empresa (como desenhos técnicos e simuladores no caso das empresas de engenharia). E todos os programas necessários para executar estas tarefas são previamente instalados pelos administradores, baseados na política de uso da empresa. Portanto, no caso das corporações, o usuário comum não tem mesmo que instalar coisa alguma. Mesmo porque não tem outra alternativa...

Já para sistemas domésticos, cujas máquinas são usadas para praticamente tudo, incluindo troca de arquivos (de música, vídeo e até mesmo executáveis), “bate-papo” eletrônico, conversa via VoIP com ou sem imagem ao vivo transmitida por câmaras de vídeo e comunicações em geral no seu sentido mais amplo, o negócio é diferente. O controle de contas de usuários de Windows XP revelou-se desastroso não apenas do ponto de vista do sistema como também do usuário.

Do ponto de vista do sistema, não funciona porque a conta de administrador tem privilégios demais. Quando um administrador está usando a máquina, todos os programas rodam com privilégios de administrador e, da forma como Windows XP gerencia a situação, não há como evitar uma possível contaminação.

Já do ponto de vista do usuário comum, não funciona porque sua conta tem privilégios de menos. E ele fica proibido de efetuar mesmo as alterações mais comezinhas na configuração do sistema.

Explicando melhor e ainda usando, para começar, um exemplo corporativo. Imagine que você viajou com um micro portátil de sua empresa, um “notebook” no qual sua conta não detém privilégios de administrador, para participar de uma reunião com a Diretoria da filial, digamos, de Timbuktu. Em lá chegando, pretende ajustar a hora de seu sistema para o fuso horário local. Não pode porque trata-se de um ajuste interno do sistema ao qual apenas os administradores têm acesso. Paciência: vamos trabalhar com a hora errada mesmo. Mas durante a longa reunião, seu computador portátil deverá permanecer ligado todo o tempo para que você tenha acesso aos dados. O local da reunião não dispõe de uma tomada de energia com a tensão necessária, portanto a bateria deverá agüentar o tranco. E agüentaria, desde que você pudesse ajustar o gerenciamento de energia (“power management”) do Painel de Controle para o modo de máxima economia. Mas não pode, porque este ajuste também exige privilégios de administrador. Para contornar o problema poderia, pelo menos, imprimir para consultar durante a reunião alguns dos documentos importantes que traz arquivados no disco rígido do computador desde que tivesse privilégios para instalar o driver da impressora da filial. Mas não tem. E nem ao menos pode transferi-los para um dos micros da rede segura da filial, já que lhe faltam privilégios para se conectar a ela. Dureza, nénão?

Agora vamos a seu micro de casa. Você, como bom usuário e seguidor fervoroso dos preceitos da MS sobre segurança, criou duas contas. A sua, com privilégios de usuário comum, com a qual pretende fazer uso quotidiano do micro, e uma segunda, também sua mas com privilégios de administrador, usada apenas para instalação de programas e alterações nas configurações do sistema. Dispõe então de sua ID e sua SuperID, como manda o figurino.

Mas seu micro de casa – ou sua rede doméstica, que há muitas – não é um instrumento (só) de trabalho. É também uma máquina de entretenimento onde são instalados jogos, programas reprodutores de música e vídeo, editores de imagens, enfim, aquele monte de coisas que faz do micro um instrumento de prazer. E volta e meia é preciso instalar mais um programa.

Tudo bem: troca-se de usuário, registra-se (ou faz-se o “logon”) usando a SuperID com privilégios de administrador, instala-se o programa e troca-se novamente para a conta de usuário comum. Funciona? Muitas vezes, mas nem sempre. Há programas que só “aparecem” na conta em que foram instalados e não há como executá-los com outra identidade. Se foi instalado por um administrador, só pode ser executado por ele.

Tudo bem: ainda há uma solução: troca-se para a conta de administrador, altera-se provisoriamente o tipo da conta de usuário comum concedendo-lhe privilégios de administrador, volta-se a ela, instala-se o programa e depois, por segurança, reduz-se novamente seus privilégios para usuário comum. É chato, dá trabalho, mas é o preço da segurança.

O problema é que nem sempre funciona. Há programas, especialmente aqueles desenvolvidos para versões de Windows mais antigas, que ao rodar efetuam alterações em algumas chaves do Registro de Windows. Ou que tentam acessar arquivos de dados que foram armazenados nas pastas de sistema. E nada disso é permitido ao usuário comum. Portanto, depois que os privilégios de administrador usados para instalar o programa voltam ao nível de usuário comum, ele não roda por lhe serem vedadas certas ações imprescindíveis. Só roda em “nível de administrador”.

Resultado: por maior que seja a preocupação com segurança, o usuário comum acaba se cansando daquela chateação toda, manda às favas as recomendações da MS, cria uma conta para si mesmo com privilégios de administrador e passa a executar suas atividades rotineiras com ela. A máquina fica mais exposta às intempéries, é verdade, mas pelo menos todos os programas funcionam. E não é de admirar que se reclame tanto das vulnerabilidades de Windows XP.

Trata-se, evidentemente, de um alvitre pouco recomendável e longe da solução ideal. Mas é assim que procede a grande maioria dos usuários de Windows XP.

A solução encontrada pelos desenvolvedores de Vista foi conceder mais privilégios para as contas de usuários comuns e, paradoxalmente, reduzir os privilégios das contas de administradores, mantendo ambos os tipos de conta sob controle.

Vamos ver como isso foi feito.

Na próxima coluna, naturalmente...

 

B. Piropo