Sítio do Piropo

B. Piropo

< Jornal Estado de Minas >
Volte
16/11/2006

< Windows Vista: Avanços na Segurança >


O Windows Vista vem aí. E desta vez vem mesmo: a Microsoft já começou a despachar o produto na versão “OEM” (a que é instalada diretamente pelos fabricantes) e a tomar providências para o lançamento mundial, que ocorrerá ainda este mês.

E vem com tudo: é uma versão completamente diferente do Windows XP. Tão diferente que só se fala nas mudanças visuais, na interface “Aero” com suas transparências, nas mudanças no Windows Explorer e suas janelas, nas pastas virtuais e, com alguma amargura, no hardware exigido para rodar decentemente (que recomendo não somente ser pelo menos o dobro do mínimo sugerido pela MS de uma CPU de 800 MHz com 512 MB de memória RAM, como também ser equipado com um adaptador de vídeo dotado de um co-processador gráfico poderoso). E pouco se menciona sobre aquilo que me parece a característica mais revolucionária do sistema: suas inovações no campo da segurança. Tantas e tão numerosas que levaram a própria MS a declarar que o Vista é “o Windows mais seguro e confiável jamais desenvolvido”. E que, naturalmente, não poderão ser discutidas detalhadamente aqui. Mas vamos tentar pelo menos abordar os pontos mais relevantes.

O mais importante deles é justamente um que não “aparece”: O “Security Development Lifecycle – SDL”, uma filosofia de desenvolvimento de produto inteiramente nova da qual o Vista é o primeiro exemplar criado do princípio ao fim inteiramente de acordo com suas especificações.

O SDL é um dos principais pilares da iniciativa “Trustworthy Computing” adotada pela MS a partir de 2003, que altera radicalmente sua metodologia de desenvolvimento. Tradicionalmente a empresa escrevia o código, testava-o para verificar o funcionamento e somente então se preocupava com a segurança, eliminando vulnerabilidades. O SDL incorpora a preocupação com segurança a cada estágio de desenvolvimento, desde a fase de concepção até o lançamento do produto (“do berço ao túmulo”, segundo a própria MS). De acordo com ela, todo software deve ser “seguro por projeto” (“Secure by Design”: concebido, desenvolvido e implementado de modo a proteger a si mesmo e as informações que processa e a resistir a ataques), “seguro por padrão” (“Secure by Default”: garantir segurança desde o momento em que começa a ser executado), seguro na fase de distribuição (“Secure in Deployment”: conter ferramentas que auxiliem o usuário a manter a segurança) e, finalmente, deve informar os usuários sobre quaisquer eventuais vulnerabilidades e imediatamente distribuir as devidas correções. Para tentar alcançar estes objetivos a MS agregou especialistas em segurança (e, dizem, até grupos de “hackers” especializados em rompê-la) às equipes responsáveis por cada fase de desenvolvimento do Vista, da concepção à distribuição. Isto é o SDL.

O segundo ponto importante também não é visível mas pode ser detectado por um usuário experiente. Trata-se do “Windows Service Hardening – WSH”, uma limitação imposta aos poderes (ou “privilégios”) dos “serviços” do sistema operacional.

“Serviços” são programas auxiliares que rodam em segundo plano e, como bem diz o nome, funcionam como auxiliares do sistema operacional e aplicativos. Se você roda Windows XP, abra a entrada “Executar” do menu “Iniciar” e entre com o comando “services.msc” seguido de ENTER para abrir o “Console de serviços” que mostra os serviços disponíveis e os que estão sendo executados (aqueles em cuja coluna “Status” consta “Iniciado”). Veja como seu número é expressivo. Note ainda que, na maioria deles, consta “Sistema local” na coluna “Fazer logon como”, significando que estes são serviços invocados pelo próprio sistema operacional. Serviços deste tipo rodam com todos os privilégios habilitados. O que, em princípio, é natural, já que um serviço carregado pelo próprio sistema operacional deve mesmo ter acesso a todos os recursos do sistema, uma situação ideal em um mundo perfeito.

Ocorre que, infelizmente, o mundo não é perfeito. Pelo contrário: está infestado de biltres que se dedicam diuturnamente a procurar vulnerabilidades nos componentes do sistema operacional visando tirar proveito delas para instalar programas mal intencionados nas máquinas alheias com intuitos variados que vão desde o simples prazer de prejudicar a quem sequer conhecem, corrompendo arquivos, até o roubo puro e simples de senhas e identidades para a prática de delitos financeiros. E alguns de seus alvos principais são, justamente, os “serviços”, notadamente os invocados pelo sistema operacional que detêm os maiores privilégios e que por isso apresentam maior potencial de danos. Tanto é assim que os programas mal intencionados que mais se disseminaram ultimamente e causaram maiores prejuízos foram justamente os vermes Sasser e Blaster, que se aproveitam de uma vulnerabilidade detectada (e já corrigida) no RPC (Remote Procedure Call), serviço tipo “sistema local” de Windows XP.

A estratégia “Service Hardening” visa justamente evitar que fatos semelhantes se repitam no Vista através daquilo que a MS chamou de “restricted services” (serviços restritos), um conjunto de medidas que que reduz os privilégios dos “serviços” tanto quanto possível e limita drasticamente seu raio de ação. No Vista qualquer “serviço”, inclusive do tipo “sistema local”, desfrutará do mínimo indispensável de privilégios, o que reduzirá significativamente o potencial de danos de uma vulnerabilidade que eventualmente venha a apresentar.

Para implementar o WSH, todos os serviços foram examinados individualmente e determinou-se o “Windows Service Hardening Profile” de cada um, um perfil que define tanto os privilégios que o serviço deve dispor quanto aqueles que podem ser excluídos. Estes perfis são aplicados individualmente durante a instalação de Vista e dispensam quaisquer ações de administração, manutenção ou interação do usuário ou do administrador. Isto é o WSH.

Um terceiro ponto também imperceptível ao usuário comum foi o amplo uso da proteção tipo “No eXecute” (NX), uma tecnologia normalmente implementada em hardware (ou seja, no próprio microprocessador) que permite aos desenvolvedores de sistemas operacionais e programas delimitar rigorosamente as regiões da memória RAM que podem conter código executável e as que apenas podem conter dados (marcadas, portanto, como “No eXecute”), impedindo assim que vulnerabilidades tipo “Buffer Overflow” sejam aproveitadas. O Windows Vista não apenas explora integralmente esta facilidade nos microprocessadores em que ela foi implementada como também oferece facilidades adicionais para que os desenvolvedores de programas para o Vista também explorem esta proteção.

Mas nem todas as novidades são “invisíveis”. Muitas delas, pelo contrário, saltam à vista. Por exemplo: as mudanças na Central de Segurança, que incluem o novo Windows Defender, um aplicativo integrado ao sistema operacional cujo objetivo é protegê-lo contra programas espiões (“spywares”). Ou a nova versão, agora bidirecional, do Windows Firewall, o programa que cria uma barreira protetora entre o computador e o conteúdo potencialmente danoso proveniente da Internet ou da rede. Ou ainda os formidáveis avanços de segurança incorporados à nova versão do Internet Explorer, o IE7. Mas como nenhum deles é exclusivo do Vista (a Central de Segurança e o Firewall existem desde o Windows XP SP2 e tanto o Defender quanto o IE7 são independentes do sistema e podem ser incorporados ao Windows XP), vamos fixar nossa atenção naquilo que parece ser o mais notável dos avanços de segurança do Windows Vista: o “User Account Control – UAC”, controle das contas de usuário. E o adjetivo “notável” deve ser encarado aqui em pelo menos duas de suas acepções: “o que pode ser percebido” e “considerável, extraordinário”.

Que o controle de contas de usuário “pode ser percebido” tanto pelo usuário comum quanto pelos detentores de privilégios de administrador é inegável: volta e meia um e outro são interrompidos por janelas solicitando autorização para executar esta ou aquela tarefa. E é a razão disso que faz com que o controle de contas de usuário possa ser considerado “extraordinário”. Senão, vejamos.

As versões atuais de Windows são sistemas operacionais do tipo “multitarefa” e “multiusuário”, ou seja, tanto podem executar (ou simular que estão executando) diversas tarefas simultaneamente quanto podem ser usados por diferentes usuários na mesma máquina (ou na mesma rede), cada um deles com acesso exclusivo a seus próprios recursos (notadamente configurações e dados, sejam arquivos ou pastas).

Para que estes múltiplos usuários possam ser gerenciados pelo sistema é necessário identificá-los e certificá-los. O que é feito pela criação de “contas”, cada uma   com sua identidade e senha.

Um bom sistema multiusuário deve estabelecer uma hierarquia em suas contas, atribuindo-lhes diferentes “privilégios”. Em Windows XP as contas situadas no topo da hierarquia, ou seja, as que “tudo podem” (com direito de acesso a todo o sistema de arquivos e configurações, assim como de criar novas contas, excluir contas existentes e limitar ou ampliar os privilégios dos demais usuários) são as do grupo “Administradores”. As demais, de usuários comuns (“standard users”), têm privilégios limitados que podem ser graduados pelos administradores. Mas, em geral, não têm acesso nem aos arquivos dos demais usuários nem (e principalmente), aos arquivos e recursos do sistema operacional (como por exemplo o “Registro” de Windows).

Esta gradação de privilégios é estabelecida não apenas por questões de privacidade (ou seja, para que um usuário comum não possa bisbilhotar os arquivos dos demais) como também por razões de segurança. Isto porque cada programa invocado (ou “carregado”) por um usuário “herda” seus privilégios. Desta forma, um programa mal intencionado carregado inadvertidamente por um usuário comum não pode causar grandes prejuízos, já que com seus privilégios limitados fica impedido de, por exemplo, instalar um segundo programa (verme, vírus, espião ou cavalo de Tróia) nele “embutido”, já que usuários comuns não podem instalar programas. Se este mesmo programa mal intencionado for invocado por um administrador, o potencial de dano é imenso, já que herdará os plenos poderes dos administradores.

O sistema foi então concebido para ser administrado por um usuário mais experiente, com conta de administrador, enquanto os demais desfrutam apenas dos privilégios limitados de suas contas de usuários comuns. Como um administrador deve, em princípio, saber o que está fazendo, considera-se que a máquina está protegida se este esquema for adotado. Na verdade, em tese, até mesmo a máquina usada por uma única pessoa deve dispor de duas contas: a do dono, sob a personalidade de administrador, que pode instalar programas, alterar configurações, mudar o Registro e acessar a todo o sistema de arquivos, e uma segunda conta, também do dono, mas com outra identidade, com privilégios de usuário comum, com a qual deve fazer uso diário da máquina. Assim evita-se que ele, no uso quotidiano, instale inadvertidamente um “malware”, já que no papel de usuário comum não tem privilégios para tanto.

O problema é que eu mesmo não uso nem conheço ninguém que use Windows XP com tal configuração. Porque os privilégios do usuário comum sob Windows XP foram de tal forma limitados que tornam suas contas praticamente inúteis. Para que se tenha idéia: um usuário comum não pode sequer alterar o fuso horário da máquina, instalar um driver para um novo dispositivo como uma impressora ou mudar o tipo de gerenciamento de energia. Sem falar em alguns programas mais antigos, que só rodam se tiverem sido carregados por um administrador. Em suma: sob Windows XP um usuário comum é um pária. E ninguém gosta de ser pária, ainda mais em sua própria máquina. Por isso todo o mundo se outorga os privilégios supremos de administrador.

Os resultados, evidentemente, são catastróficos. Basta ver com que celeridade se propagam os novos vírus, vermes, cavalos de Tróia e assemelhados. Todos instalados com os privilégios de administradores.

A forma que os desenvolvedores de Vista divisaram para resolver este problema é tão simples quanto eficaz e se desdobrou em dois pontos: ampliar os privilégios das contas de usuários comuns e, paradoxalmente, reduzir os das contas de administradores, mantendo ambos os tipos de conta sob controle. O primeiro ponto foi implementado através do artifício denominado “credenciamento por cima do ombro” (“Over the Shoulders”). O segundo consiste no “Admin Approval Mode” (modo de aprovação de administrador). Vejamos, resumidamente, como funcionam.

Para começar, independente de qualquer autorização, os usuários comuns sob Vista podem executar diversas tarefas antes proibidas, como mudar fuso horário, instalar fontes, impressoras e periféricos, conectar-se a redes seguras, instalar alguns controles ActiveX, instalar atualizações críticas de Windows, baixar arquivos da Internet e abrir o Gerenciador de Tarefas, entre outras. Na verdade, têm acesso à maioria das tarefas do “Painel de Controle”, que sob Windows XP era território proibido. No Vista, as poucas tarefas restantes que exigem privilégios de administrador aparecem marcadas com o pequeno escudo multicor da Central de Segurança.   O que já é um grande avanço.

Mas o melhor está por vir: no Vista, o usuário comum pode fazer praticamente qualquer coisa, desde que autorizado por um administrador através do credenciamento “over the shoulders”.

Funciona assim: digamos que você está registrado (“logado”) em sua própria máquina na qualidade de usuário comum. E digamos que deseja instalar um programa. Em Windows XP teria que efetuar o “logoff” de sua atual identidade, “logar-se” com a de administrador, instalar o programa e fazer o percurso inverso (sim, sempre havia a possibilidade de apelar para o comando “RunAs” e executar a tarefa como administrador, mas pouca gente sabia ou usava este alvitre).

No Vista é diferente: você, mesmo registrado como usuário comum, simplesmente solicita a instalação do novo programa como se fosse um administrador. Vista logo perceberá que você está tentando exceder seus privilégios mas, em vez de emitir uma mal educada   mensagem de erro informando-o disto e abortando a operação, como faz Windows XP, age mais civilizadamente: informa que um programa executável não autorizado deseja rodar em seu computador, avisa que para isto são necessárias credenciais de administrador e, maravilha das maravilhas, abre uma caixa de dados solicitando a senha (portanto, a autorização) de um administrador. Basta entrar com ela que a instalação prossegue, como se tivesse sido solicitada pelo administrador.

Percebeu a diferença? É como se você, usuário comum, usasse a máquina todo o tempo sob a supervisão de um administrador que permanece vigilante, olhando sobre seus ombros. Quando você precisa de autorização, basta pedir: ele estica o braço sobre seu ombro, entra com a senha e todos serão felizes para sempre.

Em uma máquina corporativa, gerida por um administrador “de verdade”, o usuário comum não tem alternativa: terá mesmo que chamar o administrador e solicitar sua autorização e senha para, digamos, instalar um novo programa. Já nas máquinas domésticas, a coisa fica mais fácil, tranqüila e, sobretudo, segura: o esquema “dupla personalidade” funciona à perfeição. Você faz uso diário da máquina como usuário comum e é avisado toda vez que um programa qualquer desejar instalar algo nela. Se for um subreptício “malware”, basta negar a autorização que a instalação é abortada e a máquina permanece indene. Se for um programa que você efetivamente deseja instalar, basta assumir sua personalidade de administrador, entrar com a senha e seguir adiante. Agora a fictícia dupla “dono-usuário” e “dono-administrador” funciona nos conformes. Ficou prático e seguro.

Mas isto não impede que um administrador, inadvertidamente, execute um programa mal intencionado e contamine a máquina em um momento de distração.

Pois é justamente para isto que existe o modo de aprovação de administrador, a outra face da moeda. Trata-se do modo de operação usado quando a máquina está sendo operada por um membro do grupo de administradores, com todos os seus privilégios.

Nesta situação o próprio administrador é mantido sob permanente supervisão do sistema. Ele ainda continua senhor da máquina e detentor de todos os seus privilégios, mas toda vez que for solicitada a execução de alguma tarefa que os exija é avisado através de uma janela que identifica claramente o programa que a está solicitando, pede permissão para prosseguir e indica o grau de risco representado pela ação. Caso se trate de uma ação que corresponda a um ajuste ou manutenção do próprio sistema operacional, aparece uma simples janela de aviso. No caso da instalação de uma aplicação cadastrada (“signed application”), aparece uma mensagem informando que “um programa solicita sua ação para continuar”, identificando o autor e oferecendo-se para prosseguir por padrão. Finalmente, se for um aplicativo desconhecido e não identificado (“unsigned application”), a janela de aviso é destacada com uma barra título alaranjada e o botão oferecido por padrão não é “Prosseguir”, mas “Cancelar” (ou seja: se o administrador mandar prosseguir, será por sua conta e risco). Desta forma é impossível fazer qualquer instalação de programas ou alteração nos parâmetros do sistema sem o conhecimento e o “de acordo” do administrador.

A vantagem disto é que a redução dos privilégios do administrador automaticamente se propaga para os programas invocados por ele. Ou seja: sob Vista rodando no modo de aprovação, os programas usados pelo administrador em suas tarefas diárias ostentarão apenas os privilégios (agora ampliados) concedidos ao usuário comum e não mais poderão instalar programas em segundo plano. Se algum deles, com o conhecimento do administrador ou à sua revelia (e, nesse último caso, provavelmente se trata de um “malware”) solicitar a execução de uma tarefa que demande privilégios de administrador, o sistema será paralisado e o administrador informado sobre a solicitação, que somente será atendida com seu consentimento. O administrador preserva integralmente seus privilégios mas é avisado e sua permissão expressa é solicitada toda vez que for necessário apelar para eles.

O único problema é que isto não resolve a situação daqueles programas antigos que exigem escrita em áreas protegidas (alterações no Registro de Windows e leitura ou gravação de arquivos em regiões inacessíveis do sistema de arquivo) e que, por isso, em Windows XP, só rodavam quando invocados por administradores. Para fazer face a este problema a equipe de segurança de Vista implementou a “file/registry virtualization” (virtualização de arquivo e Registro). Quanto uma aplicação destas é identificada, Vista oferece por padrão um modo de operação especial sob o qual ela roda de fato com privilégios de usuário comum mas com acesso a uma cópia privada dos arquivos e do Registro que pode ser alterada à vontade. Desta forma cada um destes aplicativos funciona com seu próprio Registro e Sistema de Arquivos virtuais, com cópias dos recursos que precisa alterar, de modo que estas alterações “apareçam” apenas para estes aplicativos e não comprometam a segurança do sistema.

A combinação do “credenciamento sobre os ombros” do usuário comum com o “modo de aprovação” do administrador me parece o recurso mais poderoso do Vista contra contaminação por malwares, já que torna praticamente impossível a execução de qualquer código à revelia do usuário, seja ele um administrador ou não. É claro que não garante a inviolabilidade do sistema, já que sempre haverá aquele usuário que por ignorância ou distração permitirá a execução de uma ou outra rotina mal intencionada e os pilantras que as criam continuarão a buscar meios e modos de burlar os usuários. Mas, sem dúvida, representa um grande avanço.

Se Windows Vista será ou não “o Windows mais seguro e confiável jamais desenvolvido” como diz a MS, não sei. Mas que ele é muito mais seguro que o XP, não tenho a menor dúvida. E olhe que digo isto baseado em quase um ano de uso contínuo do sistema em todas as suas versões “beta” lançadas neste período. Sem sofrer sequer uma única infecção...

Ilustração 1

Clique para ampliar...
Ilustração 2 - Clique para ampliar a imagem.

Clique para ampliar...
Ilustração 3 - Clique para ampliar a imagem.

Ilustração 4

Clique para ampliar...
Ilustração 5 - Clique para ampliar a imagem.

B. Piropo