segunda-feira, 11 de maio de 2009

Não faça isso em casa - pode ser um tiro no pé

ou "uma história que a Microsoft gostaria de esquecer"

Ricardo Goldbach*

Vem de longe a sequência de erros e consertos da empresa de Redmond. Tem sido assim desde o Windows 2.0, cujo lançamento em dezembro de 1987 passou desapercebido, até o Windows 7.0 RC, lançado há poucos dias e que a cada hora sofre novas correções. Como ocorreu com o Windows Vista, nota-se no Windows 7 RC uma sequência infindável de erros primários, nem sempre corrigidos a tempo. Estamos em maio de 2009 e acabo de ler que a Microsoft corrige falha importante no Windows 7 RC.

Um pouco de História

Com uma interface gráfica que era inteiramente suportada pelo sistema operacional MS-DOS, o Windows 95 (lançado em agosto de 1995) sucedeu as versões 3.0, 3.1 e 3.11. Mas, da mesma forma que os antecessores, o 95 continuava a ser apenas uma versão do MS-DOS, embelezada pelo uso do mouse e de uma tela gráfica com ícones coloridos. Falhas gritantes que existiam no 95 fizeram com que a MS o substituísse pelo Windows 98, que se mostrou igualmente como um queijo suiço, no que se refere a buracos na segurança e falhas de execução e usabilidade.

Apostando no universo corporativo, a Microsoft já havia iniciado o desenvolvimento, em 1993, de um novo sistema operacional, o Windows NT (de New Technology). Ele deveria ser menos sujeito a panes, mais seguro e suportar aplicações multitarefa – na acepção acadêmica do termo, além de introduzir conceitos de segurança até então inexistentes, como o de propriedade (ownership) de arquivos por parte do usuário logado. Não vale a pena aprofundar aqui considerações sobre o amadorismo que caracterizou a implementação do NT, que chegou a permitir o tráfego de senhas não encriptadas através da rede.

Como o Windows NT prometia ser uma evolução das versões 3.x e 9x, grandes corporações e
instituições sérias, como a Marinha dos Estados Unidos, o adotaram como plataforma padrão de operação de suas atividades.

O
USS Yorktown e o Projeto Smart Ship

Em 4 de julho de 1984 a Marinha dos EUA comissionou o cruzador USS Yorktown (CG 48), da classe Ticonderoga, equipado com mísseis mar-ar e antisubmarino, além de lançadores de torpedo e outros armamentos usuais de naves desta categoria. Em dezembro de 1995 o cruzador foi escolhido como protótipo do ambicioso projeto Smart Ship (navio inteligente), passando a contar também com uma rede de 27 computadores, cada um deles dispondo de duas CPUs Pentium Pro de 200 MHz em configuração dual, todas rodando o Windows NT 4.0, sucessor do Windows NT 3.51.

O projeto Smart Ship visava a redução do contingente de marinheiros responsáveis pela operação de navios de guerra e tinha como meta a automação de operações da ponte de comando, monitorando e controlando processos de geração de relatórios de danos, de otimização do consumo de combustível, de propulsão e navegação, dentre outros.

Um projeto desgovernado em alto mar


Ocorre que em 21 de setembro de 1997, durante operações na costa do estado da Virginia, um administrador do sistema de bordo do USS Yorktown digitou um algarismo zero num campo do banco de dados do programa Remote Database Manager (administrador remoto de banco de dados), de acordo com um memorando do comandante da Frota de Superfície do Atlântico, Vice-Almirante Henry Giffin. Ainda segundo o memorando, uma divisão por zero – o conteúdo incorretamente digitado – causou um colapso do banco de dados, além de acarretar a paralisação de terminais remotos e consoles de gerenciamento da rede.

Na conclusão do memorando,
reproduzido no site da Universidade de Stanford, o Vice-Almirante Henry Giffin declara que
"The Yorktown's Standard Monitoring Control System administrators entered zero into the data field for the Remote Data Base Manager program. That caused the database to overflow and crash the LAN consoles and miniature remote terminal units".
A divisão por zero é uma impropriedade matemática que ocorre na execução de programas tanto por falha de projeto e implementação de sistemas operacionais, compiladores e aplicativos, quanto pela entrada incorreta e não verificada de dados, como no caso da pane do USS Yorktown. O resultado foi a conhecida tela azul ou blue screen of death, tão familiar aos usuários mais antigos do Windows. Como consequência da pane, o cruzador ficou à deriva por cerca de duas horas, sendo depois rebocado para a base naval de Norfolk. Dois dias se passaram até que as condições operacionais do navio fossem recuperadas.

"usar Windows NT [...] em um navio de guerra
é o mesmo que ter esperança
de que a sorte esteja a nosso favor"

Fé em Deus e mão na roda do leme?

De acordo com o engenheiro Anthony DiGiorgio, do Centro de Suporte Técnico da Frota do Atlântico, “usar Windows NT, conhecido por ter falhas em alguns modos [de operação], em um navio de guerra, é o mesmo que ter esperança de que a sorte esteja a nosso favor”. No original,
"using Windows NT, which is known to have some failure modes, on a warship is similar to hoping that luck will be in our favor".
É isso. Não consigo me esquecer do caso do USS Yorktown quando vejo a Microsoft emitir alerta após alerta, sobre novas descobertas em falhas de operação ou segurança de seus sistemas operacionais e aplicativos, principalmente quando se referem ao buffer overflow. Este problema resulta de erro em desenvolvimento de software (falta de observância forçada à presença do caractere null ou "\0" ao final de um buffer em memória). Falhas causadas por buffer overflow existem ou existiram em praticamente todos os aplicativos desenvolvidos até hoje pela Microsoft; em algumas vêzes ele compromete a segurança dos dados do usuário ou torna-o vulnerável a ataques online, em outras trava completamente o sistema.

Em tempo: à época, a Marinha dos EUA considerou esta primeira experiência com um Smart Ship como tendo sido um sucesso.

Já vi este filme antes. Hasta la Vista.


____

* O autor tem mais de 30 anos de experiência em TI, em ambientes de
mainframes, minicomputadores, supermicrocomputadores e microcomputadores, nas atividades de levantamento de requisitos, projeto, desenvolvimento, testes e homologação de sistemas, suporte, administração de dados e de bancos de dados, treinamento e coordenação de equipes de desenvolvimento.


Associações interessantes:

Government Computer News: Software glitches leave Navy Smart Ship dead in the water, matéria também referenciada no site do Massachussets Institute of Technology (MIT)

Universidade de Stanford: Military cases - Smart Ship

Site de Jerry Pournelle, colunista da revista Byte Magazine entre os anos de 1982 e 2006: The Yorktown Affair

Site oficial da Marinha dos EUA: Navy News

Site oficial da Marinha dos EUA: "Smart ships" initiatives successful

PC World (11/05/2009):
Microsoft corrige falha importante no Windows 7 RC

2 comentários: