Webmail
E-mail:
Senha:
Siga-nos
Redes sociais
Fone: (55)3233 1796
Plantão: 99986 3660
Untitled Document
A falha na atualização do Windows 7 e a jabuticaba

Nesta altura dos acontecimentos meus preclaros leitores devem estar fartos de saber da cangancha havida semana passada com a já famosa atualização de segurança 2823324 de Windows 7. Afinal, “deu” até na TV, e no jornal das oito, em pleno horário nobre. E quando um fiasco em uma área eminentemente técnica chega a ser mencionada em noticiário televisivo, pode crer: foi cangancha pra mais de trezentos talheres…

Não obstante vou assumir o risco de abordar o assunto. Isto porque, embora fartamente explorado pelo noticiário especializado da Internet, jornais e revistas, quase não encontrei abordagens discutindo os detalhes técnicos do assunto. A coisa estava mais para programa do Ratinho que para Ciência e Vida. Então, com meu parco conhecimento, vou tentar cobrir esta lacuna.

Começando por descrever o desastre.

Já há algum tempo, exceto em casos gravíssimos de falha de segurança, a MS decidiu agrupar todas as atualizações mensais em um único dia. E decidiu-se pela segunda terça feira de cada mês que, por isto, ficou conhecida por seus técnicos como “patch Tuesday”. A deste mês caiu no último dia 9, há exatamente uma semana. E esta “patch Tuesday” permanecerá por muito tempo, senão para sempre, na memória da equipe técnica da MS.

Se você está lendo estas mal traçadas, provavelmente é usuário de Windows. E como tal já deve ter feito inúmeras atualizações. Que, mesmo que o seu sistema esteja configurado para baixá-las e instalá-las automaticamente independentemente de sua participação, há um momento em que você precisa intervir: assim que terminada a instalação o sistema deve ser reinicializado à seu comando para finalizar o processo. Pois bem: era justamente neste momento que a desdita se manifestava: em vez de recarregar o sistema, a máquina exibia a sinistra “tela azul da morte” que ilustra o topo desta coluna com uma mensagem informando que por tais e quais razões o sistema não poderia ser iniciado. E por mais que você tentasse reinicializar, resetar, desligar e religar, o resultado era sempre o mesmo: a frustrante tela azul com o aviso. O sistema não entrava nem com reza forte.

Havia, entretanto, alguns detalhes interessantes. Para começar, embora todas as versões às quais a MS oferece suporte recebessem atualizações na “patch Tuesday”, somente Windows 7 era afetado. E mais: não qualquer Windows 7, mas apenas as versões “x86”, ou “de 32 bits”.

Até aí, tudo bem. Afinal, versões diferentes de Windows diferem pelo código, ou seja, as sequências de instruções que em conjunto formam as rotinas de programação podem ser diferentes. Portanto nada há de extraordinário que uma falha se manifeste na versão “x86” e não na “x64” da mesma edição de Windows. Estranho mesmo – e adiante veremos porque – é que, como foi anunciado no início, o problema ocorresse apenas na versão PT-BR, ou seja, em português do Brasil. Pois foi isto que se divulgou quando os primeiros usuários começaram suas mui justificadas lamentações, como se percebe nesta nota emitida no dia seguinte, 10/04, no sítio da revista Veja. Já a nota emitida na mesma data em O Globo e assinada pelo respeitado jornalista Carlos Alberto Teixeira é mais cautelosa: cita parte dopronunciamento oficial da MS (compreensivelmente sucinto, posto que até então pouco se sabia sobre as causas e extensão dos estragos) e, em uma atualização (da nota) dois dias depois, sugere um meio de contornar o problema (na mesma data, 12/04, o mesmo Carlos Alberto Teixeira publica uma entrevista com o especialista em segurança Marcelo Souza que se constituiu em uma das poucas abordagens não sensacionalistas do assunto).

Aí foi aquela festa. Mesmo sem saber o que havia provocado a falha e que estranha razão a levava a se manifestar apenas no Brasil (razão pela qual se concluiu, um tanto apressadamente, que ocorria apenas na versão em português do Brasil) e com pouquíssimas informações sobre o que de fato estava ocorrendo, todo o mundo baixou o pau na MS. O sítio da Veja anunciou que “Usuários do Windows 7 podem mover ação contra a Microsoft”. A Fundação Procon-SPnotificou a MS solicitando esclarecimentos sobre a falha e informando que a empresa “poderia ser penalizada” caso se comprovassem irregularidades.

Uma malhação de Judas. Uma festa.

Isto sem mencionar o fato de que usuários – todos, evidentemente, mui bem intencionados – danaram-se a publicar procedimentos os mais diversos para corrigir o problema. Só o sítio da Veja, no artigo “O leitor ensina: como contornar a falha na atualização do Windows 7”, oferece quatro “receitas” diferentes – e isto em 11/04, enquanto a MS divulgava o procedimento de correção recomendado.

Mas, afinal, o que teria acontecido?

Bem, até o momento em que digito estas mal traçadas, ainda não se sabe muito. E não foi possível recorrer à MS como fonte de informação. Eu bem que tentei, mas fui informado por um representante da empresa que qualquer informação somente seria prestada – mesmo para a imprensa especializada – através de comunicados oficiais. Uma atitude perfeitamente razoável tendo em vista o vulto que o problema havia assumido e suas implicações legais e financeiras.

Mas a MS fez mais que isto: emitiu dois boletins de suporte descrevendo o problema e sugerindo um procedimento para corrigi-lo, o primeiro, KB 2839011, em linguagem mais técnica, o segundo “Atualização de segurança KB 2823324 do Windows 7”, dirigido especificamente aos usuários leigos, basicamente com o mesmo objetivo do anterior, mas com linguagem simplificada e fartamente ilustrado para facilitar o entendimento. Em ambos os comunicados a MS informava que a atualização havia sido removida do pacote correspondente a abril/2013 e os usuários que ainda não tivessem atualizado seu sistema poderiam fazê-lo sem problemas.

Restava então investigar e garimpar aqui e ali informações que, cotejadas e avaliadas, poderiam fornecer uma explicação racional para o ocorrido.

Então vamos lá. Começando pelo mais importante: qual era a função da nefasta atualização?

Bem, não foi fácil descobrir, já que assim que a MS percebeu o tamanho da encrenca, simplesmente removeu a dita atualização do alcance dos usuários e curiosos e fechou todos os atalhos para páginas que fornecessem seus detalhes técnicos. Mas, com paciência sempre se encontra alguma coisa. Como o boletim de suporte da Microsoft sobre a dita atualização, “MS13-036” cujo título, “Vulnerabilidades no driver do modo kernel podem permitir a elevação de privilégio”, afinal, esclarece o objetivo da atualização.

Mas que diabo é isso?

Não vou descer a detalhes que não cabem aqui, mas quem estiver interessado pode encontra-los no boletim acima citado. Vou apenas simplificar a coisa até o ponto que nos interessa.

O nível de privilégio de uma conta de usuário é o parâmetro que define o que ele pode fazer com e na máquina. Por exemplo: um usuário cujo nível de privilégio é baixo tem o acesso vedado ao Gerenciador de Dispositivos e não pode sequer abri-lo. Eleve um pouco este nível e ele pode abrir o Gerenciador de Dispositivos para inspecionar a lista de dispositivos conectados à máquina mas não pode alterá-lo. Eleve ainda mais o nível de privilégio para, digamos, administrador, e ele pode fazer o que bem entender com o Gerenciador, inclusive remover ou desativar dispositivos. O mesmo ocorre com novos programas: é preciso um nível de privilégios elevado para ter o direito de instalá-los.

O nível de privilégios de cada usuário é decidido pelo administrador do sistema quando a conta do usuário é criada e, evidentemente, não pode ser alterado pelo próprio usuário. Imagine o estrago que um empregado descontente ou revoltado por ter tomado conhecimento que será demitido pode fazer em uma empresa se conseguir elevar seu nível de privilégios à revelia do administrador…

Pois bem: era justamente isto que a tal vulnerabilidade permitia.

E onde se escondia a vulnerabilidade?

No gerenciador (“driver”) do modo “kernel”.

Kernel” é uma palavra inglesa que significa “cerne”, “centro”, “núcleo”. No contexto acima ela se refere ao núcleo do sistema operacional, sua parte mais central, composta das rotinas essenciais para o funcionamento do sistema. Segundo verbete da Wikipedia (em inglês) “Kernel… é o componente principal dos sistemas operacionais da maioria dos computadores”. É ele que gerencia todos os recursos da máquina, sendo responsável pela comunicação entre os programas (software) e os componentes físicos da máquina (hardware), inclusive memória e UCP. O “kernel” é a essência do sistema operacional. É código puro.

O que torna particularmente estranho que um fiasco como o ocorrido se manifeste apenas na versão de um idioma específico da mesma atualização.

E a razão não é difícil de entender.

Um sistema operacional é um programa. Um programa muito especial, mas um programa. E como todo programa, seus arquivos contêm código e texto.

Por “código” me refiro às instruções que, encadeadas, resultam nas rotinas que fazem o programa funcionar e cumprir sua finalidade. Mas, para isto, ele deve eventualmente se comunicar com o usuário. Por exemplo: imagine um programa que, a páginas tantas, solicite que você faça seu cadastro. Neste ponto ele exibe uma página com uma caixa de entrada de dados precedida pelo texto: “Nome completo”. Outra precedida por “Endereço”. E assim por diante.

Pois bem: em geral todo este texto está contido no corpo do programa, misturado com o código. Em um dado ponto do programa há uma rotina que “limpa” a janela, seguida de outra que distribui as caixas de entrada de dados, mais uma que exibe os textos e, finalmente, dos próprios textos a serem exibidos. Depois vem as rotinas que verificam se os dados estão corretos, ou seja, se o usuário não entrou com o nome no lugar reservado ao telefone e coisa e tal, e o processamento prossegue. E se, por acaso, o usuário cometeu algum erro na entrada de dados, o programa exibe uma janela auxiliar com uma mensagem de erro, também textual. E tudo isto sem falar nos menus e demais textos auxiliares. Quer dizer: no arquivo executável de um programa, além do código, há um bocado de texto.

Agora imagine que seu programa fez tanto sucesso no Brasil que você resolveu exportá-lo para a Conchinchina. Lá não se fala português. Você terá então que traduzir o programa (ou “localizá-lo”, no jargão da MS). E terá que percorrer todo o arquivo procurando por cada frase, mensagem, menu, o diabo, substituindo cada uma delas pelo equivalente em vietnamita (Conchinchina foi o nome dado pelos navegadores portugueses ao que hoje constitui o Vietnam; como veem, Piropo também é cultura…).

Dá um trabalho dos diabos.

Agora você imagine fazer isto para dezenas e dezenas de idiomas como a MS é obrigada a fazer a cada nova versão de seus sistemas operacionais. Era de matar. E era por isto que, há alguns anos, cada vez que uma nova versão de Windows era lançada, nós aqui no Brasil tínhamos que esperar um par de meses para que ela chegasse aqui.

Foi então que a MS decidiu tornar Windows “multilingual” (a palavra não existe em português e é um aportuguesamento do temo equivalente em inglês; existe “multilíngue”, mas o conceito é diferente). E tomou uma providência simples, porém genial: “encapsulou” o texto, ou seja, o separou do código.

Imagine aquele programa descrito sumariamente alguns parágrafos acima. E suponha que, em cada local onde entraria um texto aparece, digamos, um número (senhores programadores e críticos de plantão: isto é apenas uma forma extremamente simplificada de explicar o conceito, portanto contenham seus comentários pouco elogiosos; quanto aos demais leitores, aqueles que desejarem uma explicação mais técnica podem recorrer ao “Guide to Windows Vista Multilingual User Interface” que, embora voltado especificamente para o Vista, explica claramente o assunto). E suponha ainda que, “embutido” no programa, exista uma tabela em que cada número é correlacionado a um texto (palavra, expressão ou mensagem). Em “tempo de execução” (uma forma metida a besta de se referir ao momento em que o programa está sendo executado), quando uma rotina que deve exibir um texto encontra um destes números, vai até a tabela, descobre o texto correspondente ao dito número e o exibe. E toca o programa para a frente.

Agora digamos que você precise traduzir (está bem, “localizar”) seu sistema operacional para, digamos cinquenta idiomas diferentes. Entregue a tabela para cinquenta tradutores eméritos que eles lhe devolverão cinquenta novas tabelas em seus novos idiomas. Para traduzir o programa, basta substituir a tabela sem precisar mexer no código.

Genial, pois não? E foi exatamente isto que a MS fez com Windows há alguns anos. É por isto que atualmente uma nova versão de Windows é liberada quase simultaneamente nos EUA e em dezenas de outros países. E a coisa ficou tão simples que até mesmo o próprio usuário pode mudar o idioma de algumas versões: basta usar o utilitário “pacote de idiomas” (“language pack”) e escolher o idioma desejado.

Percebeu como é simples?

Pois bem: à luz do conhecimento acima exposto e tendo em vista que o texto está encapsulado, totalmente separado do código, diga-me lá: como pode uma falha grave como a que se manifestou na atualização 2823324 ocorrer apenas na versão correspondente a um idioma? (No caso, português do Brasil). E ainda por cima no “kernel”, a parte mais interna do SO onde praticamente não há texto, apenas código tão protegido que é praticamente intocável?

Tem alguma coisa de esquisito aí, pois não?

Mas, ao que parece, foi isto que ocorreu: o problema se manifestou apenas na versão em português.

Ou não?

Bem, não exatamente. Esta foi a conclusão inicial, apressada, derivada do fato de que o problema se manifestou apenas no Brasil. E como aqui se usa a versão PT-BR, pareceu lógico que ela tivesse algo a ver com o problema.

Mas, e se não tivesse, qual seria a explicação?

Bem, uma alternativa viável seria imaginar que o problema não foi causado pela atualização propriamente dita, mas por sua combinação com alguma coisa que exista apenas (ou predominantemente) no Brasil.

Mas o que seria?

O raio de luz que veio espancar as trevas de minha ignorância veio de um (excelente) artigo do blog de Rodrigo Immaginario, da Universidade de Vila Velha, ES: “O verdadeiro problema por trás da atualização do W7 (KB2823324)”.

Entre outras coisas, diz ele: “Todos os indícios apontavam que o problema ocorria somente na versão 32bits do Windows 7 em português, fato no mínimo curioso já que desde o Windows Vista o Windows é Multilingual “.

Então ele pôs-se a matutar sobre que mandinga usada apenas no Brasil poderia ter provocado o problema. E diz ele: “No Brasil vários bancos utilizam um software chamado Guardião. O objetivo desse software e trazer segurança para os clientes do banco quando acessam suas contas pela Internet. Entretanto esse software é tema de constantes discussões nas comunidades de segurança devido ao fato de ter um comportamento similar ao de um malware e ser de uso obrigatório”.

Com esta ideia em mente, ele resolveu efetuar alguns testes (que eu tentei repetir mas, como sou dado ao feio vício de trabalhar, infelizmente só consegui tempo livre para instalar Windows 7 x86 PT-BR em uma máquina “limpa” no final de semana e quando fui procurar a atualização para instalar a MS já a havia trancado a sete chaves).

Rodrigo usou duas máquinas “limpas” (apenas com o SO instalado) com versões Windows 7 x86, uma delas em português do Brasil (PT-BR), outra em inglês americano (EN-US). Ambas se comportaram muito bem e reinicializaram corretamente após atualizadas tantas vezes quantas se tentou, comprovando o fato de que a falha nada tinha a ver com a atualização pura ou com o fato da versão ser em PT-BR.

Em seguida instalou em ambas as máquinas o programa Guardião (ele não informa de qual banco). E ambas as máquinas passaram a travar na inicialização.

Conclui Immaginario: “O problema desta semana (KB2823324), atribuído precipitadamente à Microsoft, não está na versão distribuída pelo Windows Update mas parece estar no software Guardião, que impede a execução correta do procedimento”.

E acrescenta: “Além do Guardião outros softwares, que possuem o mesmo comportamento, podem estar causando o problema”. E para corroborar esta afirmativa, Immaginario cita um experimento semelhante realizado pelo sítio Linha Defensiva em que houve a manifestação de um problema (mensagem de erro de licença de Windows não válida) mesmo em versões de 64 bits em que o antivírus Kasperky estava instalado. Isto, evidentemente, além do conhecido travamento após a instalação de um guardião bancário (no caso, o artigo cita expressamente o G-Buster, “usado por diversos bancos brasileiros”).

Enfim…

De todo este imbróglio pode-se tirar pelo menos duas conclusões.

A primeira é sobre a atualização propriamente dita: mesmo tendo o problema se manifestado imediatamente após sua instalação, convém investigar um pouco antes de atribuir a responsabilidade integralmente à Microsoft, ameaçá-la de processos e exigir explicações ameaçando-a de punição. Cautela e caldo de galinha não fazem mal a ninguém.

A segunda é sobre os “Guardiões bancários”. Mais uma vez, sem esquecer dos novos padrões tupiniquins para tomadas de eletricidade, o uso dos guardiões vem confirmar o velho ditado: “Exceto jabuticaba, tudo o que só existe no Brasil é besteira”.





Rua Antão Faria, 1010
Fone: (55) 3233-1796/3515
Plantão: 99986-3660
São Sepé-RS CEP: 97340-000
PlugNet - Internet Banda Larga em São Sepé - RS