Os 10 Bugs Mais Caros da Historia
Um tour pelos 10 bugs de software que causaram mais estrago na historia. De foguetes explodindo a bolsas de valores parando, cada caso tem uma licao pratica que
Carregando
Um tour pelos 10 bugs de software que causaram mais estrago na historia. De foguetes explodindo a bolsas de valores parando, cada caso tem uma licao pratica que
Entenda overflow de inteiro com exemplos praticos em JS, Python e TS
Checklist pratico de code review baseado em desastres reais
Os 10 Bugs Mais Caros da Historia. Um tour pelos 10 bugs de software que causaram mais estrago na historia. De foguetes explodindo a bolsas de valores parando, cada caso tem uma licao pratica que voce pode aplicar hoje.
4 de junho de 1996. O foguete Ariane 5 da Agencia Espacial Europeia explode 37 segundos apos o lancamento. O motivo? Um numero de 64 bits foi convertido pra um inteiro de 16 bits. O valor era grande demais, causou um overflow, e o sistema de navegacao ficou maluco.
O pior: o codigo que causou o problema vinha do Ariane 4. Funcionava perfeitamente no foguete anterior porque a trajetoria do Ariane 4 nunca gerava valores altos o suficiente pra estourar o limite de 16 bits. Quando reutilizaram o mesmo modulo no Ariane 5, que tinha uma trajetoria completamente diferente, ninguem testou se os valores continuavam dentro do range.
Prejuizo direto: 370 milhoes de dolares. Mas o estrago real foi maior — atrasou o programa espacial europeu em anos e destruiu a confianca no processo de desenvolvimento que a ESA seguia. Tudo porque alguem assumiu que 'se funcionava antes, funciona agora'.
Licao pratica: nunca reutilize codigo sem revalidar as premissas do contexto original. O que mudou? Os inputs sao os mesmos? Os ranges sao compativeis? Se voce nao sabe responder isso, voce nao sabe se o codigo vai funcionar.
O Boeing 737 MAX caiu duas vezes — Lion Air em outubro de 2018 e Ethiopian Airlines em marco de 2019. 346 pessoas morreram. O culpado: um sistema chamado MCAS (Maneuvering Characteristics Augmentation System) que dependia de um unico sensor de angulo de ataque.
O MCAS foi criado pra compensar uma mudanca na aerodinamica do 737 MAX em relacao ao modelo anterior. Os motores eram maiores e ficavam mais pra frente, o que mudava o comportamento do aviao em certas situacoes. Em vez de redesenhar a estrutura, a Boeing decidiu resolver com software.
O problema: o MCAS lia dados de apenas um sensor. Se esse sensor desse leitura errada, o sistema empurrava o nariz do aviao pra baixo repetidamente. Os pilotos lutavam contra o sistema sem entender o que estava acontecendo — a Boeing nao incluiu o MCAS no manual de treinamento.
Prejuizo: mais de 20 bilhoes de dolares entre indenizacoes, multas, queda nas acoes e custos de reparo. Mas nenhum numero faz justica a 346 vidas perdidas. O bug nao era so tecnico — era um problema de processo. Faltou redundancia no sensor, faltou transparencia no treinamento, faltou humildade pra admitir que software nao substitui engenharia mecanica.
19 de julho de 2024. Uma atualizacao do CrowdStrike Falcon, um dos softwares de seguranca mais usados do mundo, derrubou 8.5 milhoes de maquinas Windows simultaneamente. Tela azul da morte em massa. Aeroportos, hospitais, bancos, tudo parou.
O que aconteceu: o Falcon usa arquivos de configuracao chamados 'Channel Files' que rodam no nivel do kernel do Windows. Uma atualizacao automatica enviou um arquivo com dados malformados. Como o driver roda no kernel, nao tinha isolamento — o erro derrubou o sistema operacional inteiro.
O fix era simples: iniciar em modo seguro e deletar o arquivo. Mas faz isso em 8.5 milhoes de maquinas, muitas sem acesso remoto funcional. Empresas levaram dias ou semanas pra se recuperar. Estimativas de prejuizo giram entre 5 e 10 bilhoes de dolares globalmente.
Licao: testes automatizados nao substituem deploy gradual. A CrowdStrike nao fez canary release — empurrou a mesma atualizacao pra todos os clientes ao mesmo tempo. Um rollout em fases teria detectado o problema com uma fracao dos usuarios antes de virar catastrofe planetaria.
1 de agosto de 2012. A Knight Capital Group, uma das maiores empresas de trading dos EUA, fez deploy de codigo novo nos servidores de producao. Mas um dos 8 servidores ainda rodava uma versao antiga que executava uma funcao de teste em ordens reais. Em 45 minutos, o sistema executou milhoes de operacoes erradas e a empresa perdeu 440 milhoes de dolares. A Knight Capital faliu dias depois.
Entre 1985 e 1987, a maquina de radioterapia Therac-25 deu overdoses de radiacao em pelo menos 6 pacientes. 3 morreram. A causa: uma race condition no software que controlava os modos de operacao. Quando o operador digitava rapido demais, o software entrava num estado inconsistente e aplicava a dose errada. O fabricante removeu os intertravamentos de hardware que existiam no modelo anterior porque 'o software ja cuidava disso'.
O famoso bug do ano 2000. Sistemas antigos armazenavam datas com apenas 2 digitos pro ano. Quando virou 2000, esses sistemas interpretariam como 1900. O mundo gastou estimados 300 bilhoes de dolares pra corrigir o problema antes da virada. Muita gente diz que 'nao aconteceu nada', mas so nao aconteceu porque investiram pesado em correcao. Nos paises que nao investiram, sistemas quebraram sim.
Abril de 2014. Descobriram uma vulnerabilidade no OpenSSL que existia ha 2 anos. O bug era um buffer over-read na extensao heartbeat do TLS. Qualquer pessoa podia ler ate 64KB de memoria do servidor por requisicao — incluindo chaves privadas, senhas e dados de usuarios. Cerca de 17% dos servidores web do mundo estavam vulneraveis. O fix era trocar uma linha de codigo, mas o estrago ja estava feito.
Setembro de 1999. A sonda Mars Climate Orbiter da NASA chegou perto demais de Marte e se desintegrou na atmosfera. O motivo? Um modulo de software mandava dados em libras-forca (unidade imperial) e outro modulo esperava newtons (unidade metrica). Ninguem conferiu. 327 milhoes de dolares evaporaram porque dois times usaram sistemas de medicao diferentes e nao combinaram antes.
15 de janeiro de 1990. Uma atualizacao de software nos switches da AT&T causou uma cascata de falhas que derrubou 60 mil pessoas por 9 horas. O bug era um break statement dentro de um switch-case em C que nao tratava corretamente a recuperacao de falhas. Quando um switch reiniciava, ele mandava uma mensagem pros vizinhos, que interpretavam como falha e tambem reiniciavam. Efeito domino.
Entre 2009 e 2011, a Toyota fez recall de mais de 9 milhoes de carros por problemas de aceleracao involuntaria. Uma analise forense descobriu que o software do controle eletronico de aceleracao tinha mais de 10 mil variaveis globais e nenhum mecanismo de protecao contra stack overflow. A NASA levou 10 meses pra analisar o codigo. O custo total pro Toyota: mais de 3 bilhoes de dolares em recalls e indenizacoes.
Se voce olhar esses 10 casos, vai notar que as causas se repetem. Nao sao bugs exoticos ou falhas impossiveis de prever. Sao erros de processo que qualquer time comete se nao tiver disciplina.
Nenhum desses bugs exigia um genio pra prevenir. Exigia processo. E processo e a coisa mais chata e mais barata do mundo comparado com 370 milhoes em destrocos ou 346 vidas perdidas.
No CrazyStack, voce aprende a construir software robusto com projetos reais. Testes, deploy gradual, code review que funciona — tudo na pratica. Nao espera o bug de bilhoes bater na sua porta.
Acesse crazystack.com.br e comece agora.