A vida e a morte do Adobe Flash

Como um editor de gráficos vetoriais ajudou a criar uma das tecnologias mais importantes da Internet e por que isso levou a enormes riscos de segurança.

Vamos fingir que estamos de volta, digamos, em 2008. Você acabou de comprar um novo computador com Windows XP, conectou-o à internet, abriu o navegador, acessou seu site favorito… e descobriu que metade dele não abre. “Tente instalar o Adobe Flash”, aconselhou por telefone um amigo que sabe tudo sobre computadores.

As origens do Flash remontam ao início da década de 1990: era uma ferramenta para criar animações simples baseadas em vetores, compactas o suficiente para serem baixadas mesmo em uma conexão de internet lenta por meio de um modem.

No final dos anos 2000, o Adobe Flash Player – continua uma ferramenta de animação que é do coração – era praticamente indispensável. Sem ele, literalmente metade de todos os sites não funcionavam. Ao mesmo tempo, os cibercriminosos começaram a utilizar as dezenas e dezenas de vulnerabilidades encontradas no player. E foi por causa disso que o Flash tem recebido muitas críticas fervorosas desde 2010, e até a própria Adobe reconheceu que a internet precisava se desenvolver em linhas diferentes. No entanto, o “funeral” do Flash foi prolongado por quase 10 anos – e mesmo assim não foi devidamente sepultado. Tudo isso contribui para um dos episódios mais interessantes da história da segurança da informação online. Vamos nos aprofundar nos detalhes…

Computadores se tornam tablet

A história do Flash começa em 1992/93, quando várias empresas lançaram tablets de uma só vez. Isso mesmo, como o iPad – só que 13 anos antes. Veja como era o IBM ThinkPad 700T, uma peça rara, por exemplo:

O computador tablet ThinkPad 700T. <a href="https://twitter.com/lenovonews/status/674237494758522880" target="_blank">Fonte</a>.

O computador tablet ThinkPad 700T. Fonte.

Esses dispositivos usavam o Penpoint OS desenvolvido pela GO Corporation. Esta primeira tentativa de fazer um computador tablet portátil, no entanto, travou e queimou. Já em 1994, a Go Corporation foi vendida para a AT&T Corporation, que imediatamente cessou sua produção. No entanto, vários aplicativos independentes foram escritos para o Penpoint OS. Um deles foi o editor gráfico SmartSketch, desenvolvido pela Futurewave Software.

Infelizmente, o lançamento do Smartsketch coincidiu com o fim do Penpoint OS. O Futurewave primeiro adaptou o editor para Microsoft Windows e Mac OS, depois a funcionalidade de criar gráficos animados foi adicionada, enquanto renomeava o produto FutureSplash Animator. Em 1996, a Futurewave Software foi adquirida pela Macromedia, e seu produto foi renomeado para Macromedia Flash. Consistia em dois componentes: um programa para criar animações e um utilitário compacto Macromedia Flash Player para reproduzi-las nos computadores dos usuários. É importante ressaltar que tanto o SmartSketch quanto o Macromedia Flash inicial usavam o que conhecemos como gráficos vetoriais.

As fotos e imagens JPEG que todos estamos acostumados usam gráficos raster, em que cada pixel individual tem um valor de cor – e pode haver milhares ou até milhões deles. Gráficos vetoriais não armazenam informações de pixel; eles são uma receita para recriar uma imagem a partir de formas primitivas ou geométricas: linhas, quadrados, círculos, etc. Arquivos vetoriais tendem a ser mais compactos que os raster: em vez de descrever cada pixel em uma imagem de um círculo sobre fundo branco, armazenamos uma única instrução: “Desenhe um círculo com um raio de X pixels em um fundo branco”.

Nos anos 1990, as pessoas geralmente ficavam online por meio de modems. Essas conexões eram muito lentas, com uma taxa de transferência de dados de 5 a 6 kilobytes por segundo, na melhor das hipóteses. Qualquer imagem raster de qualidade mínima decente levou pelo menos alguns segundos (ou até minutos) para carregar. Como resultado, muitos usuários simplesmente desativaram as imagens nas configurações do navegador. Usando gráficos vetoriais, no entanto, o Macromedia Flash foi capaz de fornecer imagens animadas coloridas que foram carregadas rapidamente.

Outro ponto importante antes de continuarmos: quando falamos de Flash, estamos falando essencialmente do código que é baixado em um computador toda vez que um usuário abre um site com conteúdo Flash. Este não é um arquivo executável comum, mas um conjunto de instruções executadas pelo Macromedia Flash Player no PC. Ainda assim, o princípio é o mesmo (em teoria, porém, não havia nada que impedisse a criação de um arquivo executável contendo tanto o conteúdo quanto o player).

Não demorou muito para o Flash começar a pegar funcionalidades adicionais: além dos gráficos, vieram sons e efeitos especiais e, posteriormente, até transmissão de vídeo.

Aditivos online

O autor deste post teve contato com o Macromedia Flash pela primeira vez em 2001, ao assistir Masyanya, a resposta da Rússia ao desenho norte-americano Beavis e Butt-Head. Naquele outono, toda segunda-feira de manhã, baixava e assistia a um novo episódio da animação russa online, com duração de um a dois minutos. O criador do Masyanya, Oleg Kuvaev, fez os vídeos animados com Macromedia Flash e os carregou em seu site especificamente como arquivos executáveis, com o Flash Player e a própria animação incorporada. Essa abordagem essencialmente antecipou o YouTube. Masyanya ilustra perfeitamente a compacidade do formato: o sexto episódio da série (chamado “Modem”) tinha apenas 600 kilobytes de tamanho – incluindo o software de reprodução, não se esqueça. O mesmo episódio em formato de vídeo da qualidade mais básica pesa três vezes mais, e isso sem player.

A tecnologia Macromedia Flash expandiu significativamente as capacidades dos navegadores de internet naqueles dias, que não diferiam em termos de conteúdo exibido: texto e imagens, ponto final. Portanto, foi um desenvolvimento lógico criar um plug-in para reproduzir conteúdo Flash diretamente no navegador, eliminando a necessidade de baixar e executar as coisas separadamente. Ou seja, os objetos Flash ainda eram códigos executados em seu computador — a única diferença é que, após a instalação do plug-in, esses programas rodavam à medida que o conteúdo da web era carregado, sem nenhuma ação adicional do usuário.

As ferramentas do desenvolvedor também se expandiram: no final da década de 1990, não se tratava mais de animação simples. O Flash agora tornava possível implementar itens de menu interativos com o usuário, e havia suporte para uma linguagem de script que permitia criar construções cada vez mais complexas dentro de um objeto Flash. Para visualizar isso, vamos mostrar a evolução dos recursos do site.

Aqui está a primeira página web, nos anos 1990:

A primeira página web feita. Apenas textos e links. Fonte.

Esta é uma página padrão de um website em 1996:

O portal Yahoo! no outono de 1996. Ainda texto e links, com mais alguns elementos gráficos. <a href="https://web.archive.org/web/19961017235908/http://www2.yahoo.com/" target="_blank">Fonte</a>.

O portal Yahoo! no outono de 1996. Ainda texto e links, com mais alguns elementos gráficos. Fonte.

E aqui temos um website com elementos Flash dos anos 2000:

O website da Sony PlayStation nos anos 2000. Uma profusão de cores, mas a maioria dos elementos é feito em HTML simples. O elemento central animado contém fotos, animações e vídeos. <a href="https://www.webdesignmuseum.org/flash-websites/playstation-2000" target="_blank">Fonte</a>.

O website da Sony PlayStation nos anos 2000. Uma profusão de cores, mas a maioria dos elementos é feito em HTML simples. O elemento central animado contém fotos, animações e vídeos. Fonte.

Web designers naquela época tinham prioridades diferentes: alguns lutavam pela compatibilidade máxima, outros sacrificavam a compatibilidade por causa dos gráficos. No primeiro caso de 1996, mesmo que um site tivesse elementos Flash, ainda era possível navegar nele sem problemas. No outro exemplo, um site precisava de Flash; sem isso ele não funcionaria. Como, por exemplo, este landing page do Nike Air:

Em primeiro lugar, parece bom. Toda a interface do site Nike Air 2006 foi construída usando Flash. Não abria sem o plug-in correto. <a href="https://www.webdesignmuseum.org/flash-websites/nike-air-2006" target="_blank">Fonte</a>.

Em primeiro lugar, parece bom. Toda a interface do site Nike Air 2006 foi construída usando Flash. Não abria sem o plug-in correto. Fonte.

O Macromedia Flash expandiu seriamente os limites do que era possível no design de sites. Desatou as mãos dos desenvolvedores em relação à colocação de elementos animados, uso de som e vídeo e efeitos atraentes ao se mover entre as páginas.

Em 2006, a Macromedia foi comprada pela Adobe Corporation. Logo, o Flash estava sendo usado para criar jogos inteiros que rodavam direto no navegador – um passo sem precedentes em meados dos anos 2000. Enquanto isso, os dispositivos móveis estavam se desenvolvendo rapidamente. As alternativas do Flash Player também estavam sendo desenvolvidas para eles, disponibilizando conteúdo em várias plataformas. 2005 foi o ano do lançamento do YouTube. Ele também usou o Flash Player para entregar vídeos.

Uma consequência negativa foi que os anunciantes se empolgaram demais criando banners berrantes em Macromedia/Adobe Flash. Como ainda eram executados no computador do usuário, às vezes eles sobrecarregavam o sistema, deixando outros programas muito lentos. Em alguns navegadores e plug-ins, apareceu a opção de desativar o Flash por padrão. Porém, como rapidamente aconteceu, os banners eram o menor dos muitos problemas que aguardavam o mundo da computação dominado pelo Flash.

Um enorme buraco de segurança

Reconstruir a linha do tempo da detecção de vulnerabilidades no Adobe Flash Player é bastante difícil, pois o programa remonta ao início da web moderna. No início dos anos 2000, ainda não era prática comum notificar usuários e clientes sobre vulnerabilidades. No arquivo de boletins e avisos da Adobe, que inclui dados da era Macromedia, a primeira menção sobre uma vulnerabilidade do Flash Player aparece em 2002. O banco de dados CVE do MITRE lista mais de 1.100 vulnerabilidades relacionadas ao Adobe Flash Player.

As primeiras vulnerabilidades de execução de código arbitrário (ACE) neste banco de dados também datam de 2002. Um invasor conseguiu enviar um arquivo Adobe Flash para a vítima, que, quando reproduzido, executava um código malicioso. Algumas dessas vulnerabilidades tinham uma pontuação máxima de CVSS de 10,0 (de acordo com fontes não verificadas, havia mais de 800 vulnerabilidades do ACE em todas as versões do Flash Player). Essas vulnerabilidades eram fáceis de explorar, muitas vezes exigia pouca ou nenhuma ação do usuário. Bastava atrair a vítima para um site com um objeto Adobe Flash malicioso incorporado nele. Alguns ataques comprometeram os sistemas de distribuição de anúncios, fazendo com que conteúdo malicioso aparecesse repentinamente em sites visitados por milhões de usuários.

Não é à toa que temos enfatizado que os objetos Flash são essencialmente programas que são entregues na máquina do usuário e executados lá. Uma consequência dos amplos recursos de tecnologia foi o surgimento de inúmeras brechas por meio das quais os invasores poderiam obter controle total sobre um computador. Já em 2005, o Flash era a tecnologia mais popular para executar aplicativos web.

Em 2002, não achamos que isso é um problema. Basta entregar uma atualização para todos os usuários. Mas as atualizações automáticas do Flash Player apareceram apenas no final da vida útil da tecnologia – elas simplesmente não existiam nos anos 2000. Naquela época, você tinha que ir ao site da Adobe, baixar a nova versão e instalá-la manualmente. Alguns usuários nem sabiam que tinham uma versão do Flash Player que precisava ser atualizada. A vulnerabilidade de 2006 também foi sinalizada (junto com outras três) em um boletim da Microsoft, porque o código da Adobe poderia ser distribuído com o Windows XP. A própria Microsoft tratou das atualizações para o processo de entrega e de instalação de patches – que também não foi o ideal.

O quão ruim era a situação de entrega de atualizações é evidente em um relatório da Kaspersky de 2012. Naquele ano, o Adobe Flash Player já era o líder em número de vulnerabilidades encontradas nos computadores dos usuários. Até então, um sistema estava em vigor para notificar os usuários do Flash Player sobre as atualizações disponíveis, bem como para rastrear a rapidez com que eram instaladas. Com cada falha de segurança descoberta, a parcela de usuários vulneráveis ​​cresceu exponencialmente, chegando a 60% em 2012, antes de diminuir a cada nova patch. O processo de distribuição de atualização, pelo menos para a maioria dos usuários, levou de três semanas a dois meses – segundo os padrões atuais. O pior de tudo era para usuários de versões muito antigas, que nem recebiam lembretes de atualização; ao longo de 2012 sua participação alcançou apenas cerca de 10%.

Vamos dar uma olhada em outro relatório da Kaspersky, desta vez de 2015. Ele lista 13 novas vulnerabilidades no Flash Player, que eram conhecidas por serem usadas (junto com outras que eram antigas, mas ainda ativas) nos chamados pacotes de exploração — kits contendo várias explorações para atacar vulnerabilidades em software nos computadores dos usuários, uma a uma, até que uma descoberta fosse feita. A maioria dos ataques reais aos usuários foi realizada por meio do navegador (62%), sendo a causa mais comum, segundo especialistas da Kaspersky, uma vulnerabilidade do Flash. O Flash acabou sendo derrubado como a principal fonte de ameaças por outra tecnologia de plug-in popular, Java, que foi usada, por exemplo, nos primeiros sistemas bancários online.

Funeral de dez anos

Em meados da década de 2010, o Adobe Flash já era visto como obsoleto. Talvez a primeira declaração de destaque contra o Flash tenha sido a carta aberta “Thoughts on Flash” do fundador e CEO da Apple, Steve Jobs. Depois de passar por crises permanentes nos anos 90, em 2010 a Apple estava bem: em 2007 foi lançado o primeiro iPhone, seguido em 2010 pelo primeiro iPad, que, ao contrário dos tablets de 1993, fez sucesso. O iPhone inicialmente carecia de muitos dos recursos encontrados em outros smartphones. Em particular, ele não suportava Flash e, portanto, não podia exibir sites que usavam a tecnologia. No final dos anos 2000, esse foi um argumento sério a favor dos smartphones Symbian da Nokia e dos primeiros dispositivos Android, que tinham suporte a Flash.

Steve Jobs citou a segurança como uma das principais razões pelas quais os dispositivos móveis da Apple nunca rodariam o Flash. Além disso, a Apple não podia aceitar não ter controle sobre como o Flash operava em seus dispositivos. Durante toda a sua vida, o Flash (exceto por alguns elementos) foi uma solução proprietária – ao contrário de padrões abertos como HTML5 ou Javascript. Se a Apple tivesse permitido e a Adobe tivesse implementado o suporte a Flash, jogos, vídeos e elementos da web no smartphone teriam prejudicado a performance do aparelho e até travado. E a fabricante do dispositivo teria sido culpada!

Havia outros argumentos também. Ao contrário dos computadores desktop, o código para smartphones deve ser o mais simplificado possível para não consumir a bateria. Otimizar o Flash, que na época nem suportava aceleração de GPU, era praticamente impossível. Mesmo que a Adobe tivesse feito uma ótima versão do Flash Player, o desempenho dos aplicativos Flash dependeria dos desenvolvedores individuais — dos quais havia muitos milhares. E a obsessão por controle da Apple não foi capaz de tolerar isso.

Outras empresas de tecnologia também não queriam depender do software proprietário de um concorrente. A maneira normal que os players do mercado interagem é através da colaboração em um padrão aberto. Mas isso ainda exigia que todos aceitassem esse padrão! E isso não foi fácil. Alguns tentaram replicar o sucesso do Flash e criar seu próprio formato proprietário. Em particular, a Microsoft decidiu em 2007 desenvolver seu próprio “Flash aprimorado” chamado Silverlight, mas – felizmente – não pegou.

Em 2015, a revista Wired publicou um artigo intitulado “Flash. Deve. Morrer.” Ele descreve as tentativas de vários players do setor de lidar com a “grande vulnerabilidade” que atende pelo nome de Adobe Flash Player. Nesse mesmo ano, os desenvolvedores do navegador Firefox desativaram o plug-in para reproduzir conteúdo Flash por padrão. O Chrome afirmou que desativaria o conteúdo Flash “sem importância” em sites (leia-se: banners de vídeo que sobrecarregam seriamente o sistema). Alex Stamos, então Diretor de Segurança do Facebook, sugeriu definir uma data final para retirar o suporte para essa tecnologia herdada. O próprio Facebook naquele momento ainda estava usando o Flash para reproduzir vídeos. O padrão aberto HTML5 estava de fato em posição de substituir o Flash como a ferramenta universal para a construção de sites interativos com conteúdo pesado. Mas livrar-se de um legado tão grande da noite para o dia era simplesmente impossível. As redes de anúncios dependiam do Flash — assim como usuários de computadores antigos com navegadores desatualizados e desenvolvedores de sites com uma grande biblioteca de conteúdo.

Somente em julho de 2017 a Adobe anunciou que estava suspendendo o desenvolvimento e encerrando o suporte ao Flash, mas com um período de transição generoso de três anos. Quase imediatamente, todos os navegadores populares começaram a executar o conteúdo Flash apenas quando solicitado pelo usuário. Finalmente, em 12 de janeiro de 2021 — 25 anos após o lançamento do Macromedia Flash Player 1.0, e 13 anos após a descoberta da primeira vulnerabilidade supercrítica no software — o suporte ao usuário para Flash foi descontinuado. A partir desta data, os navegadores modernos não reproduzem mais conteúdo em Flash, mesmo que você queira e tenha o Flash Player instalado, e a versão mais recente até o impede de ser executado.

A mensagem pop-up sobre o fim do Flash que aparecia no final de 2020. <a href=" https://www.bleepingcomputer.com/news/security/adobe-flash-player-is-officially-dead-tomorrow/" target="_blank">Fonte</a>.

A mensagem pop-up sobre o fim do Flash que aparecia no final de 2020. Fonte.

No entanto, a era do Flash ainda não acabou. Quarenta dias após a retirada do Flash, publicamos uma análise da situação atual em relação à tecnologia. Descobriu-se que alguns aplicativos corporativos ainda estavam vinculados a ele e não eram mais atualizados. Em particular, a tecnologia ainda é amplamente utilizada na China. Algumas empresas que não querem ou não podem se separar do Flash estão prontas para criar navegadores personalizados que o suportam. Só podemos esperar que eles saibam o que estão fazendo. No mínimo, não use esses navegadores em computadores sem uma solução de segurança de alta qualidade.

O Flash também interessa aos arquivistas da web: com o passar da tecnologia, grande parte da produção criativa de dezenas de milhares de pessoas tornou-se inacessível.

Não é culpa de ninguém – ou quase

É perfeitamente compreensível por que a Adobe demorou tanto para anunciar o fim da vida útil do Adobe Flash. O suporte para a tecnologia na grande maioria dos PCs de consumo significou altas vendas de ferramentas de desenvolvimento de conteúdo. A partir de 2013, a empresa conseguiu adaptar essa parte da tecnologia para o mundo moderno: o ainda ativo Adobe AIR permite desenvolver aplicativos para Windows, Mac OS, Android e iOS. É essencialmente o sucessor direto do Adobe Flash, suportando tecnologias proprietárias da empresa e tecnologias de código aberto, como HTML5.

Isso não quer dizer que a Adobe desenvolveu o Flash de uma maneira particularmente ruim. A tecnologia foi amaldiçoada por sua própria popularidade e pelos princípios de desenvolvimento da década de 1990. O Adobe Flash Player tinha acesso total aos recursos do computador e qualquer grande erro de codificação tinha consequências igualmente importantes. Um excelente exemplo foi o bug no player que permitia que qualquer site acessasse a webcam do usuário. Lidar com esse legado – código antigo inseguro – não é tarefa simples. A correção também é complicada: qualquer otimização ou tecnologia de segurança compromete a compatibilidade com milhões de aplicativos Flash em milhares de sites.

Não que a Adobe não tenha tentado. Após a descoberta da primeira vulnerabilidade 10.0 em 2008, a empresa corrigiu dezenas de vulnerabilidades críticas no Flash Player todos os anos até 2011. Mas parece que adaptar o Flash às ideias em evolução sobre segurança na Internet foi um passo muito largo. Os navegadores de hoje não exigem nenhum plug-in para exibir qualquer conteúdo online. Isso significa que o desenvolvedor do navegador é o único responsável pela navegação segura do usuário e mais ninguém.

Tudo baixado da web agora é considerado inseguro por definição, então os fabricantes de navegadores se esforçam para isolar sites uns dos outros e de outros programas no dispositivo – seja um computador, smartphone ou tablet. Eles estão claramente fazendo um bom trabalho, mas, infelizmente, os cibercriminosos também estão melhorando suas ferramentas. Somente no Google Chrome em 2022, foram descobertas seis vulnerabilidades de zero-day que já usadas em ataques. Claro, isso é menos do que as 15 vulnerabilidades do Adobe Flash Player exploradas por cibercriminosos em 2015, mas a diferença não é enorme.

Vamos terminar com uma nota positiva: o Adobe Flash desempenhou um papel importante na formação da web como a conhecemos agora. Ele transformou sites de uma coleção monótona de páginas baseadas em texto em algo, bem, mais criativo e visual. O Flash ajudou a realizar o sonho de um universo virtual, conforme imaginado pelos livros e filmes de ficção científica dos anos 1990. Para alguns, o design do site nos anos 2000 era muito espalhafatoso, muito exagerado, muito “receba!”. Na década seguinte, o estilo geral dos sites e aplicativos foi arrefecendo, enquanto a própria internet se tornou uma parte indispensável da vida cotidiana. O Adobe Flash foi fundamental durante todo esse período – a chamada era romântica da internet. Pode ter sido difícil, com uma propensão a despejar seus dados por aí através de um clique descuidado, mas sempre continuará sendo uma parte essencial do início da história da web.

Dicas