La vita e la morte di Adobe Flash

Oggi vi spieghiamo come un software di grafica vettoriale ha contribuito a creare una delle tecnologie più importanti di Internet e come mai tutto questo ha portato a grandi rischi per la sicurezza.

Facciamo finta di essere tornati indietro nel tempo, ad esempio, nel 2008. Avete appena comprato un nuovo computer con Windows XP, lo avete collegato a Internet, avete aperto il browser, siete andati sul vostro sito web preferito… e avete scoperto che metà del sito non viene visualizzato. “Prova a installare Adobe Flash”, vi consiglia al telefono un amico esperto di computer.

Le origini di Flash risalgono ai primi anni ’90: si trattava di uno strumento per creare semplici animazioni vettoriali abbastanza compatte da poter essere scaricate anche con una connessione ad Internet lenta via modem.

Alla fine degli anni 2000, Adobe Flash Player, che rimane sostanzialmente un tool di animazione, era praticamente indispensabile. Senza Adobe Flash Player, letteralmente la metà dei siti web non funzionavano. Allo stesso tempo, i cybercriminali hanno iniziato a sfruttare le decine e decine di vulnerabilità trovate nel player. Per questo motivo, dal 2010, Flash ha ricevuto numerose e ferventi critiche e persino Adobe stesso ha riconosciuto che Internet deve intraprendere nuovi sviluppi. Ciononostante, il “funerale” di Flash si è prolungato per quasi 10 anni, e tutt’ora non ha ricevuto una sepoltura adeguata. Ci troviamo di fronte a uno degli episodi più interessanti della storia della sicurezza informatica. Approfondiamo i dettagli…

I computer diventano tablet

La storia di Flash inizia nel 1992-93, quando diverse aziende lanciano sul mercato i computer-tablet. Esatto, proprio come l’iPad, ma 13 anni prima. Ad esempio, date un’occhiata all’aspetto che aveva l’IBM ThinkPad 700T, di certo un esemplare raro:

Il tablet-computer ThinkPad 700T.

Il tablet-computer ThinkPad 700T. Fonte

Questo genere di dispositivi utilizzavano il sistema operativo Penpoint sviluppato da GO Corporation. Tuttavia, questo primo tentativo di creare un tablet-computer portatile fallì. Già nel 1994, Go Corporation fu venduta ad AT&T Corporation, che ne cessò immediatamente la produzione. Tuttavia, vennero scritte diverse applicazioni indipendenti per Penpoint OS. Una di queste era il software grafico SmartSketch, sviluppato da Futurewave Software.

Purtroppo, il lancio di Smartsketch coincise con la scomparsa di Penpoint OS. Futurewave adattò il software per Microsoft Windows e Mac OS, poi aggiunse la possibilità di creare grafiche animate, rinominando il prodotto FutureSplash Animator. Nel 1996, Futurewave Software fu acquisita da Macromedia e il suo prodotto fu ribattezzato Macromedia Flash. Includeva due componenti: un programma per la creazione di animazioni e un’utility compatta, Macromedia Flash Player, per riprodurle sui computer degli utenti. È importante osservare che sia SmartSketch che il primo Macromedia Flash utilizzavano la cosiddetta grafica vettoriale.

Le foto e le immagini JPEG a cui siamo tutti abituati utilizzano la grafica raster, in cui ogni singolo pixel ha un valore di colore (possono essere migliaia o addirittura milioni). La grafica vettoriale non memorizza informazioni sui pixel; si tratta di un sistema per ricreare un’immagine a partire da forme geometriche o primitive: linee, quadrati, cerchi, ecc. I file vettoriali tendono a essere più compatti di quelli raster. Invece di descrivere ogni pixel in un’immagine di un cerchio su sfondo bianco, memorizziamo una singola istruzione: “disegna un cerchio con un raggio di X pixel su uno sfondo bianco”.

Negli inebrianti anni ’90, le persone si collegavano generalmente tramite modem. Tali connessioni erano noiosamente lente, con una velocità di trasferimento dati di 5-6 kilobyte al secondo nel migliore dei casi. Qualsiasi immagine raster con una qualità minimamente decente richiedeva almeno alcuni secondi (o addirittura minuti) per essere caricata. Di conseguenza, molti utenti si limitavano a disattivare le immagini nelle impostazioni del browser. Utilizzando la grafica vettoriale, invece, Macromedia Flash era in grado di fornire immagini animate colorate che si caricavano in pochissimo tempo.

Un aspetto importante da chiarire prima di continuare è il seguente: quando si parla di Flash, si parla essenzialmente del codice che viene scaricato sul computer ogni volta che l’utente apre un sito con contenuti Flash. Non si tratta di un normale file eseguibile, ma di un insieme di istruzioni eseguite da Macromedia Flash Player sul PC. Il principio è comunque lo stesso (in teoria, anche se nulla vietava di creare un file eseguibile contenente sia il contenuto che il player).

Non ci volle molto tempo prima che Flash iniziasse a integrare altre funzionalità: oltre alla grafica, arrivarono il suono e gli effetti speciali, e in seguito anche la trasmissione di video.

Additivi online

Mi sono imbattuto per la prima volta in Macromedia Flash nel 2001, guardando Masyanya, la versione russa di Beavis and Butt-Head. Quell’autunno, ogni lunedì mattina, scaricavo e guardavo un nuovo episodio del cartone animato online, della durata di uno o due minuti. Il creatore di Masyanya, Oleg Kuvaev, creava i video animati con Macromedia Flash e li caricava sul suo sito web come file eseguibili, con Flash Player e l’animazione stessa incorporata. Questo approccio ha sostanzialmente preceduto YouTube. Masyanya illustra perfettamente la compattezza del formato: il sesto episodio della serie (intitolato “Modem”) ha una dimensione di soli 600 kilobyte (compreso il software di riproduzione, non dimentichiamolo). Lo stesso episodio in un formato video dalla qualità più elementare pesa tre volte tanto, e questo senza lettore.

La tecnologia Macromedia Flash ha esteso in modo significativo le capacità dei browser Internet dell’epoca, che a loro volta non si differenziavano in termini di contenuti visualizzati: testo e immagini, punto. Era quindi logico creare un plug-in per la riproduzione di contenuti Flash direttamente nel browser, eliminando la necessità di scaricarli ed eseguirli separatamente. In altre parole, gli oggetti Flash erano ancora codice eseguito sul computer, con l’unica differenza che, dopo l’installazione del plug-in, questi programmi venivano eseguiti durante il caricamento del contenuto web, senza alcuna azione aggiuntiva da parte dell’utente.

Anche gli strumenti per gli sviluppatori si ampliarono: alla fine degli anni ’90 non erano più semplici animazioni. Flash permetteva in quel momento di implementare voci di menu interattivi per l’utente e supportava un linguaggio di scripting che consentiva di creare costruzioni sempre più complesse all’interno di un oggetto Flash. Per farvi capire meglio di cosa parliamo, diamo un’occhiata all’evoluzione delle funzionalità dei siti web.

Ecco la prima pagina web mai esistita, datata 1990:

La prima pagina web della storia. Solo testo e link.

La prima pagina web della storia. Solo testo e link. Fonte

E qui ecco un tipico sito web del 1996:

Il portale di Yahoo! nell'autunno del 1996. Sempre testo e link, più alcuni elementi grafici.

Il portale di Yahoo! nell’autunno del 1996. Sempre testo e link, più alcuni elementi grafici. Fonte

Qui invece potete osservare un sito web del 2000 con elementi Flash:

Il sito web della Sony PlayStation nel 2000. Un tripudio di colori, ma la maggior parte degli elementi è stata realizzata in semplice HTML. L'elemento centrale animato contiene foto, animazioni e video

Il sito web della Sony PlayStation nel 2000. Un tripudio di colori, ma la maggior parte degli elementi è stata realizzata in semplice HTML. L’elemento centrale animato contiene foto, animazioni e video. Fonte

I web designer di allora avevano priorità diverse: alcuni cercavano la massima compatibilità, altri sacrificavano la compatibilità in nome della grafica. Nel primo caso, anche se un sito aveva elementi Flash, era possibile utilizzarlo anche senza Flash. Nel secondo caso, un sito aveva necessariamente bisogno di Flash e senza di esso non avrebbe funzionato. Come questo mini-sito di Nike Air:

Era bello. L'intera interfaccia del sito web Nike Air del 2006 è stata realizzata con Flash. Però non si apriva senza il giusto plug-in.

Era bello. L’intera interfaccia del sito web Nike Air del 2006 è stata realizzata con Flash. Però non si apriva senza il giusto plug-in. Fonte

Macromedia Flash ha ampliato notevolmente i confini di ciò che era possibile fare nel design dei siti web. Ha dato il via libera agli sviluppatori per quanto riguarda il posizionamento di elementi animati, l’uso di suoni e video e gli effetti accattivanti quando si passa da una pagina all’altra.

Nel 2006, Macromedia è stata acquistata da Adobe Corporation. Ben presto, Flash ha cominciato a essere utilizzato per creare interi giochi che funzionavano direttamente nel browser, un passo in avanti senza precedenti nella metà degli anni 2000. Nel frattempo, i dispositivi mobile si stavano sviluppando rapidamente, e si iniziavano a creare alternative a Flash Player anche per loro, rendendo i contenuti disponibili su più piattaforme. Nel 2005 viene lanciato YouTube. Anche YouTube utilizzava Flash Player per trasmettere i video.

Una conseguenza negativa fu che gli advertiser si lasciarono prendere la mano creando banner sgargianti basati su Macromedia/Adobe Flash. Dato che si trattava pur sempre di programmi eseguiti sul computer dell’utente, a volte gravavano pesantemente sul sistema, rallentando seriamente altri programmi. In alcuni browser e plug-in, l’opzione sembrava disabilitare Flash di default. Tuttavia, come si scoprí rapidamente, i banner erano l’ultimo dei problemi che affliggevano il mondo informatico dominato da Flash.

Una gigantesca falla nella sicurezza

Ricostruire la cronologia del rilevamento delle vulnerabilità in Adobe Flash Player è piuttosto difficile, poiché il programma risale agli albori del web. All’inizio degli anni 2000, avvisare utenti e clienti delle vulnerabilità non era ancora prassi comune. Nell’archivio dei bollettini e degli avvisi di Adobe, che include i dati risalenti all’ “era Macromedia”, la prima voce relativa a una vulnerabilità di Flash Player compare nel 2002. Il database CVE del MITRE elenca più di 1.100 vulnerabilità relative ad Adobe Flash Player.

Anche le prime vulnerabilità relative all’esecuzione di codice arbitrario (ACE) presenti in questo database risalgono al 2002. Un hacker poteva inviare alla vittima un file Adobe Flash che, una volta riprodotto, eseguiva codice dannoso. Alcune di queste vulnerabilità hanno ottenuto un punteggio CVSS massimo di 10.0 (secondo fonti non verificate, ci sono più di 800 vulnerabilità ACE in tutte le versioni di Flash Player). Tali vulnerabilità erano facili da sfruttare e con frequenza richiedevano un’azione minima o nulla da parte dell’utente. Infatti, spesso bastava attirare la vittima su un sito web contenente un oggetto Adobe Flash dannoso. Alcuni attacchi hanno compromesso i sistemi di distribuzione degli annunci pubblicitari, facendo apparire improvvisamente contenuti dannosi sui siti web visitati da milioni di utenti.

Non a caso abbiamo sottolineato che gli oggetti Flash sono essenzialmente programmi che vengono recapitati sul computer dell’utente e poi eseguiti. Una conseguenza delle ampie capacità di questa tecnologia è stata la comparsa di innumerevoli scappatoie (note in inglese con il termine, loophole) attraverso le quali gli hacker potevano ottenere il controllo completo di un computer. Già nel 2005, Flash era la tecnologia più diffusa per l’esecuzione di applicazioni web.

Tutto questo non sarebbe un problema se ci trovassimo nel 2022. Basta fornire un aggiornamento a tutti gli utenti e il gioco è fatto. Peccato però che gli aggiornamenti automatici di Flash Player sono apparsi solo verso la fine del ciclo di vita della tecnologia: infatti, negli anni 2000 non esistevano. All’ epoca bisognava andare sul sito web di Adobe, scaricare la nuova versione e installarla manualmente. Alcuni utenti non sapevano nemmeno di avere una versione di Flash Player da aggiornare. La vulnerabilità del 2006 è stata segnalata (insieme ad altre tre) anche in un bollettino Microsoft, perché il codice Adobe poteva essere distribuito con Windows XP. È stata la stessa Microsoft a gestire gli aggiornamenti e il processo di distribuzione e installazione delle patch non è stato altrettanto ideale.

Quanto fosse grave la situazione della distribuzione degli aggiornamenti è evidente da un report  di Kaspersky risalente al 2012. Quell’anno, Adobe Flash Player era già il leader in quanto a numero di vulnerabilità riscontrate nei computer degli utenti. A tal proposito, era stato creato un sistema per notificare agli utenti di Flash Player gli aggiornamenti disponibili e per monitorare la velocità con cui venivano installati. Con ogni falla di sicurezza scoperta, la quota di utenti vulnerabili cresceva sempre di più (con un picco del 60% nel 2012!), prima di diminuire con ogni nuova patch. Il processo di distribuzione degli aggiornamenti, almeno per la maggior parte degli utenti, richiedeva da tre settimane a due mesi: un’eternità per gli standard odierni. La situazione era peggiore per gli utenti con versioni molto vecchie, che non ricevevano nemmeno i promemoria di aggiornamento. Durante tutto il 2012 la loro quota era di circa il 10%.

Diamo un’occhiata a un altro report di Kaspersky, questa volta del 2015. In esso sono elencate 13 nuove vulnerabilità di Flash Player, note per essere state utilizzate (insieme ad altre vecchie, ma ancora attive) nei cosiddetti exploit pack, ovvero kit contenenti più exploit per attaccare le vulnerabilità dei software sui computer degli utenti, una dopo l’altra, fino a quando non si riesce a penetrare completamente. La maggior parte degli attacchi agli utenti sono stati realizzati attraverso il browser (62%) e la causa più comune, secondo gli esperti di Kaspersky, è stata una vulnerabilità di Flash. Flash è stato infine spodestato come principale fonte di attacchi da un’altra tecnologia plug-in molto diffusa, Java, utilizzata, ad esempio, nei primi sistemi bancari online.

Un funerale che è durato 10 anni

A metà degli anni 2010, Adobe Flash era già considerato obsoleto. Forse la prima dichiarazione altisonante contro Flash è stata la lettera aperta “Thoughts on Flash” del fondatore e CEO di Apple Steve Jobs. Dopo aver attraversato una crisi permanente negli anni 90′, nel 2010 Apple si era ben posizionata: nel 2007 uscì il primo iPhone, seguito nel 2010 dal primo iPad che, a differenza dei tablet del 1993, ebbe successo. Inizialmente l’iPhone non disponeva di molte delle funzioni presenti negli altri smartphone. In particolare, non supportava Flash e quindi non poteva visualizzare i siti che utilizzavano questa tecnologia. Alla fine degli anni 2000, questo era un serio punto a favore degli smartphone Symbian di Nokia e dei primi dispositivi Android, che supportavano Flash.

Per Steve Jobs, la sicurezza era uno dei motivi principali per cui i dispositivi mobile Apple non avrebbero mai utilizzato Flash. Inoltre, Apple non poteva accettare di non avere alcun controllo sul funzionamento di Flash sui suoi dispositivi. Da sempre, Flash (tranne che per alcuni elementi) è stata una soluzione proprietaria, a differenza degli standard aperti come HTML5 o Javascript. Se Apple avesse adottato Flash e Adobe avesse implementato il suo supporto, i giochi, i video e gli elementi web sullo smartphone si sarebbero rallentati o bloccati. In tal caso, la colpa sarebbe stata del produttore del telefono!

C’erano anche altri motivi. A differenza dei computer da tavolo, il codice per gli smartphone deve essere il più snello possibile per non consumare la batteria. Semplificare Flash, che all’epoca non supportava nemmeno l’accelerazione della GPU, era praticamente impossibile. Anche se Adobe avesse realizzato una versione eccellente di Flash Player, le prestazioni delle applicazioni Flash avrebbero dovuto dipendere dai singoli sviluppatori, che erano diverse migliaia. E la dispotica Apple, con la sua mania di controllo, non avrebbe mai potuto tollerare questa situazione.

Tuttavia, Apple non era l’unica. A molte altre aziende tecnologiche non piaceva l’idea di dipendere da un software proprietario di un concorrente. Il modo normale in cui gli operatori del mercato interagiscono tra loro è la collaborazione su uno standard aperto. Ad ogni modo questo richiedeva che tutti accettassero lo standard, e non è stato facile! Alcuni hanno cercato di replicare il successo di Flash e di creare un proprio formato proprietario. In particolare, nel 2007, Microsoft decise di sviluppare il proprio “Flash migliorato”, Silverlight, ma (fortunatamente) non ebbe successo.

Nel 2015, la rivista Wired ha pubblicato un articolo intitolato “Flash. Must. Die.” (ovvero, Flash. Deve. Morire). Descriveva i tentativi di vari operatori del settore di affrontare “l’unica grande vulnerabilità” che prende il nome di Adobe Flash Player. Nello stesso anno, gli sviluppatori del browser Firefox hanno disabilitato di default il plug-in per la riproduzione di contenuti Flash. Chrome ha dichiarato che avrebbe disabilitato i contenuti Flash “non importanti” sui siti web (ad esempio, i banner video che sovraccaricano il sistema). Alex Stamos, all’epoca Chief Security Officer di Facebook, suggerì di fissare una data ultima entro la quale ritirare il supporto a questa tecnologia obsoleta. In quel momento Facebook stesso utilizzava ancora Flash per riprodurre i video. Lo standard aperto HTML5 era effettivamente in grado di sostituire Flash come strumento universale per la creazione di siti web interattivi. Tuttavia, sbarazzarsi di una tecnologia così diffusa da un giorno all’altro era semplicemente impossibile. Le reti pubblicitarie dipendevano da Flash, così come gli utenti di computer datati con browser vecchi e i developer con un’ampia libreria di contenuti.

È solo nel luglio 2017 che Adobe ha annunciato di smettere di sviluppare e supportare Flash, ma con un generoso periodo di transizione di tre anni. Da subito, tutti i browser più diffusi hanno iniziato a eseguire i contenuti Flash solo su richiesta dell’utente. Infine, il 12 gennaio 2021 (25 anni dopo il rilascio di Macromedia Flash Player 1.0 e 13 anni dopo la scoperta della prima vulnerabilità supercritica nel software), il supporto agli utenti per Flash è stato interrotto. Da oggi, i browser moderni non riproducono più contenuti Flash, anche se lo si desidera e si ha Flash Player installato, e l’ultima versione ne blocca addirittura l’esecuzione.

Il pop-up sulla fine della vita di Flash che è apparso alla fine del 2020.

Il pop-up sulla fine della vita di Flash che è apparso alla fine del 2020. Fonte

Tuttavia, l’era di Flash non è ancora finita. Quaranta giorni dopo la fine di Flash, abbiamo pubblicato un’analisi della situazione attuale di questa tecnologia. È emerso che alcune applicazioni aziendali erano ancora legate a questa tecnologia e non venivano più aggiornate. In particolare, la tecnologia è ancora ampiamente utilizzata in Cina. Alcune aziende che non vogliono o non possono abbandonare Flash sono addirittura pronte a creare browser personalizzati che lo supportano. Possiamo solo sperare che sappiano cosa stiano facendo. Per lo meno, dovrebbero evitare di utilizzare questi browser su computer privi di una soluzione di sicurezza di alta qualità.

Flash è interessante anche per gli “storici” del web: con la scomparsa di questa tecnologia, gran parte della produzione creativa di decine di migliaia di persone è diventata inaccessibile.

Non è colpa di nessuno (o quasi)

È del tutto comprensibile che Adobe ci abbia messo tanto ad annunciare la fine del ciclo di vita di Adobe Flash. Il supporto della tecnologia sulla stragrande maggioranza dei PC consumer significava vendite elevate di strumenti per lo sviluppo di contenuti. A partire dal 2013, l’azienda è stata in grado di adattare questa parte della tecnologia al mondo moderno: l’ancora attivo Adobe AIR consente di sviluppare applicazioni per Windows, Mac OS, Android e iOS. Si tratta essenzialmente del successore diretto di Adobe Flash, che supporta sia le tecnologie proprietarie dell’azienda che quelle open-source come HTML5.

Questo non vuol dire che Adobe abbia sviluppato Flash in modo scadente. La tecnologia è stata maledetta dalla sua stessa popolarità, oltre che da come si sviluppavano le tecnologie negli anni Novanta. Adobe Flash Player aveva pieno accesso alle risorse del computer e qualsiasi errore di codifica aveva conseguenze altrettanto gravi. Un esempio lampante è stato il bug del player che permetteva a qualsiasi sito di accedere alla webcam dell’utente. Affrontare un’eredità di questo tipo (un codice vecchio e insicuro per scelta progettuale) non è un compito semplice. Anche la correzione è complicata: qualsiasi ottimizzazione o tecnologia di sicurezza mette a rischio la compatibilità con milioni di applicazioni Flash su migliaia di siti web.

Naturalmente non si può affernare che Adobe non ci abbia provato. Dopo la scoperta della prima vulnerabilità 10.0 nel 2008, Adobe ha risolto decine di vulnerabilità critiche in Flash Player ogni anno fino al 2011. Ma sembra che adattare Flash alle tendenze in continuo cambiamento del mondo della internet security fosse troppo complicato. I browser di oggi non richiedono più nessun plug-in per visualizzare i contenuti online. Ciò significa che solo lo sviluppatore del browser è responsabile della sicurezza della navigazione dell’utente, e nessun altro.

Tutto quello che viene scaricato dal web è ormai considerato insicuro per definizione, quindi i produttori di browser si impegnano a fondo per isolare i siti web tra loro e proteggerli dagli altri programmi presenti sul dispositivo, sia esso un computer, uno smartphone o un tablet. È chiaro che stanno facendo un buon lavoro, ma, ahimè, anche i cybercriminali stanno migliorando le loro tecniche. Nel 2022, solo per Google Chrome sono state scoperte 6 vulnerabilità zero-day che sono già state utilizzate negli attacchi. Certo, sono meno delle 15 vulnerabilità di Adobe Flash Player sfruttate dai criminali informatici nel 2015, ma la differenza non è enorme.

Terminiamo questo articolo con una nota positiva: Adobe Flash ha svolto un ruolo importante nel dare forma al web come lo conosciamo oggi. Ha trasformato i siti web da un noioso insieme di pagine testuali, in qualcosa di più sgargiante. Flash ha contribuito a realizzare il sogno di un universo virtuale, come immaginato nei libri e nei film di fantascienza degli anni Novanta. Per alcuni, il design dei siti web negli anni 2000 era troppo appariscente, troppo vistoso, troppo diretto. Nel decennio successivo, lo stile generale dei siti e delle applicazioni si è addolcito, mentre Internet stesso è diventato una parte indispensabile della vita moderna di tutti. Adobe Flash è stato fondamentale in questo periodo, la cosiddetta età romantica di Internet. Magari era un po’ grossolano e a volte poteva mettere a rischio i vostri dati con un click poco attento, ma rimarrà sempre una parte essenziale della storia del web.

Consigli