Het leven en het einde van Adobe Flash

Hoe een editor voor vectorgrafieken een van de belangrijkste technologieën van het internet hielp creëren, en waarom dit tot enorme veiligheidsrisico’s leidde.

Hoe een editor voor vectorgrafieken een van de belangrijkste technologieën van het internet hielp creëren, en waarom dit tot enorme veiligheidsrisico's leidde.

Laten we voor even terugkeren naar het jaar 2008. U hebt net een nieuwe computer gekocht met Windows XP erop, sluit hem aan op het internet, opent de browser, navigeert naar uw favoriete website… en ziet dat de helft niet wordt weergegeven. “Probeer Adobe Flash te installeren”, aldus een vriend die alles van computers afweet.

De oorsprong van Flash gaat terug tot het begin van de jaren negentig: het was een tool om eenvoudige, op vectoren gebaseerde animaties te maken die compact genoeg waren om zelfs via een trage internetverbinding via een modem te worden gedownload.

Eind jaren 2000 was Adobe Flash Player – nog steeds een animatieprogramma in hart en nieren – vrijwel onmisbaar. Zonder Adobe werkte letterlijk de helft van alle websites niet. Tegelijkertijd begonnen ook cybercriminelen gebruik te maken van de tientallen kwetsbaarheden erin waren gevonden. Grotendeels om die reden heeft Flash sinds 2010 veel vurige critici gekend, en zelfs Adobe zelf erkende dat het internet zich langs andere lijnen moet ontwikkelen. Desondanks duurde de “begrafenis” van Flash bijna 10 jaar, en zelfs toen werd de tool niet echt goed begraven. Dit alles zorgt voor een van de interessantste episodes in de geschiedenis van online informatiebeveiliging. Laten we eens dieper op de details ingaan…

Computers worden tablets

De geschiedenis van Flash begint in 1992-93, toen verschillende bedrijven tegelijkertijd tablet-computers uitbrachten. Dat klopt, net als de iPad, alleen dan 13 jaar eerder. Zo zag de IBM ThinkPad 700T, een zeldzaam ras, er bijvoorbeeld uit:

De ThinkPad 700T-tablet

De ThinkPad 700T-tablet. Bron

Deze apparaten gebruikten Penpoint OS, ontwikkeld door GO Corporation. Deze eerste poging om een draagbare tabletcomputer te maken is echter mislukt. Al in 1994 werd Go Corporation verkocht aan AT&T Corporation, en dat bedrijf staakte de productie onmiddellijk. Er waren echter verschillende onafhankelijke toepassingen geschreven voor Penpoint OS. Een daarvan was de grafische editor SmartSketch, ontwikkeld door Futurewave Software.

Helaas viel de release van Smartsketch samen met de ondergang van Penpoint OS. Futurewave paste de editor eerst aan voor Microsoft Windows en Mac OS, voegde vervolgens de mogelijkheid toe om geanimeerde afbeeldingen te maken en doopte het product om tot FutureSplash Animator. In 1996 werd Futurewave Software overgenomen door Macromedia, en werd het product omgedoopt tot Macromedia Flash. Het bestond uit twee componenten: een programma om animaties te maken en een compacte Macromedia Flash Player om ze af te spelen op de computers van de gebruikers. Belangrijk is dat zowel SmartSketch als de vroege Macromedia Flash gebruikmaakten van zogenaamde vector-graphics.

De JPEG-foto’s en -afbeeldingen waaraan we allemaal gewend zijn, maken gebruik van rasterafbeeldingen, waarbij elke afzonderlijke pixel een kleurwaarde heeft. En dat kunnen er duizenden of zelfs miljoenen zijn. Vector-graphics slaan geen pixelinformatie op, maar zijn een recept om een afbeelding te recreëren uit primitieven of geometrische vormen: lijnen, vierkanten, cirkels, enz. Vectorbestanden zijn doorgaans compacter dan rasterbestanden: in plaats van elke pixel in een afbeelding van een cirkel op een witte achtergrond te beschrijven, slaan we één enkele instructie op: “Teken een cirkel met een straal van X pixels op een witte achtergrond.”

In de onstuimige jaren negentig gingen mensen meestal via modems het internet op. Deze verbindingen waren tergend langzaam, met in het beste geval een gegevensoverdrachtsnelheid van 5-6 kilobytes per seconde. Elke rasterafbeelding van enigszins fatsoenlijke kwaliteit deed er op zijn minst enkele seconden (of zelfs minuten) over om te laden. Als gevolg daarvan schakelden veel gebruikers eenvoudigweg afbeeldingen uit in de browserinstellingen. Macromedia Flash kon echter met behulp van vectorafbeeldingen kleurrijke geanimeerde beelden leveren die in een mum van tijd werden geladen.

Een ander belangrijk punt voordat we verdergaan: wanneer we het over Flash hebben, hebben we het in wezen over de code die naar een computer wordt gedownload telkens wanneer een gebruiker een site met Flash-inhoud opent. Dit is geen gewoon uitvoerbaar bestand, maar een reeks instructies die door de Macromedia Flash Player op de pc worden uitgevoerd. Toch is het principe hetzelfde (in theorie was er echter niets op tegen om een uitvoerbaar bestand te maken dat zowel de inhoud als de speler bevatte).

Het duurde niet lang voordat Flash extra functionaliteiten begon te krijgen: naast graphics kwamen er geluid en speciale effecten, en later zelfs video-overdracht.

Online toevoegingen

De auteur van dit artikel kwam in 2001 voor het eerst in aanraking met Macromedia Flash bij het bekijken van Masyanya, het Russische antwoord op Beavis and Butt-Head. Dat najaar downloadde en bekeek ik elke maandagochtend een nieuwe aflevering van de online tekenfilm, die een tot twee minuten duurde. De maker van Masyanya, Oleg Kuvaev, maakte de geanimeerde video’s met Macromedia Flash en uploadde ze specifiek naar zijn website als uitvoerbare bestanden, met Flash Player en de animatie zelf ingebed. Deze aanpak was in feite de voorganger van YouTube. Masyanya illustreert perfect de compactheid van het formaat: de zesde aflevering van de serie (genaamd “Modem”) was slechts 600 kilobyte groot – inclusief de software om hem af te spelen, niet te vergeten. Dezelfde aflevering in videoformaat van de meest elementaire kwaliteit weegt drie keer zoveel, en dat is zonder videoplayer.

De Macromedia Flash-technologie breidde de mogelijkheden van internetbrowsers in die tijd aanzienlijk uit, die zelf niet verschilden qua weergegeven inhoud: tekst en afbeeldingen, en dat was het dan. Het was dus een logische ontwikkeling om een plug-in te maken om Flash-inhoud rechtstreeks in de browser af te spelen, zodat het niet meer nodig was om dingen afzonderlijk te downloaden en uit te voeren. Dat wil zeggen, Flash-objecten waren nog steeds code die op uw computer werd uitgevoerd, maar het enige verschil was dat, na installatie van de plug-in, deze programma’s draaiden terwijl de webinhoud werd geladen, zonder enige extra actie van de gebruiker.

De hulpmiddelen voor ontwikkelaars werden ook uitgebreid: eind jaren negentig ging het niet meer om eenvoudige animatie. Flash maakte het mogelijk om interactieve menu-items te implementeren, en er was ondersteuning voor een scripttaal waarmee je steeds complexere constructies binnen een Flash-object kon maken. Om dit te visualiseren, laten we de evolutie van de mogelijkheden van websites zien.

Dit is de allereerste website uit 1990:

De allereerste website. Aleen tekst en hyperlinks

De allereerste website. Aleen tekst en hyperlinks. Bron

Dit is een typische website uit 1996:

Het Yahoo!-portaal in het najaar van 1996. Nog altijd tekst en links, plus wat grafische elementen.

Het Yahoo!-portaal in het najaar van 1996. Nog altijd tekst en links, plus wat grafische elementen. Bron

En hier is een website met Flash-elementen uit 2000:

De Sony PlayStation-website in 2000. Een kleurenuitbarsting, maar de meeste elementen zijn uitgevoerd in gewone HTML. Het centrale, geanimeerde element bevat foto's, animaties en video's.

De Sony PlayStation-website in 2000. Een kleurenuitbarsting, maar de meeste elementen zijn uitgevoerd in gewone HTML. Het centrale, geanimeerde element bevat foto’s, animaties en video’s. Bron

Webdesigners hadden toen verschillende prioriteiten: sommigen streefden naar maximale compatibiliteit, anderen offerden compatibiliteit op omwille van de graphics. In het voorgaande voorbeeld uit 1996 was de site zelfs als die Flash-elementen had nog steeds bruikbaar zonder die elementen. In het andere geval had een site Flash nodig; zonder Flash zou hij niet werken. Zoals deze Nike Air-minisite:

Dat ziet er op het eerste gezicht goed uit. De hele interface van de Nike Air website van 2006 was gebouwd met Flash. Maar zonder de juiste plug-in opende hij niet.

Dat ziet er op het eerste gezicht goed uit. De hele interface van de Nike Air website van 2006 was gebouwd met Flash. Maar zonder de juiste plug-in opende hij niet. Bron

Macromedia Flash verlegde de grenzen van wat mogelijk was in het ontwerpen van websites aanzienlijk. Ontwikkelaars konden zo veel meer doen wat betreft de plaatsing van geanimeerde elementen, het gebruik van geluid en video, en opvallende effecten bij het bewegen tussen pagina’s.

In 2006 werd Macromedia gekocht door Adobe Corporation. Al snel werd Flash gebruikt om hele spellen te maken die direct in de browser draaiden, wat een ongekende stap was halverwege de jaren 2000. Ondertussen ontwikkelden mobiele apparaten zich snel. Ook voor hen werden er Flash Player-alternatieven ontwikkeld, waardoor inhoud op meerdere platforms beschikbaar kwam. In 2005 zag YouTube het licht. En ook YouTube gebruikte Flash Player om video’s aan te bieden.

Een negatief gevolg was dat adverteerders zich te buiten gingen aan het maken van opzichtige banners op basis van Macromedia/Adobe Flash. Aangezien dit nog steeds programma’s waren die op de computer van de gebruiker werden uitgevoerd, belastten zij het systeem soms zwaar, waardoor andere programma’s ernstig werden vertraagd. In sommige browsers en plug-ins daarvoor verscheen de optie om Flash standaard uit te schakelen. Maar al snel bleek dat banners het minste van de vele problemen waren die de door Flash gedomineerde computerwereld te wachten stonden.

Enorm beveiligingslek

Het reconstrueren van de tijdlijn van het opsporen van kwetsbaarheden in Adobe Flash Player is vrij moeilijk, aangezien het programma uit de begintijd van het moderne web dateert. Begin jaren 2000 was het nog niet gangbaar om gebruikers en klanten op de hoogte te brengen van kwetsbaarheden. In het archief van Adobe-bulletins en waarschuwingen, dat ook gegevens uit het Macromedia-tijdperk bevat, verschijnt de eerste vermelding over een kwetsbaarheid in Flash Player in 2002. De CVE-database van MITRE bevat meer dan 1100 kwetsbaarheden met betrekking tot Adobe Flash Player.

De eerste ACE-kwetsbaarheden (arbitrary code execution) in deze database dateren ook uit 2002. Een aanvaller kon een Adobe Flash-bestand naar het slachtoffer sturen, dat bij het afspelen schadelijke code uitvoerde. Sommige van deze kwetsbaarheden hadden een maximale CVSS-score van 10,0 (volgens niet-geverifieerde bronnen waren er meer dan 800 ACE-kwetsbaarheden in alle Flash Player-versies). Dergelijke kwetsbaarheden waren gemakkelijk te misbruiken, er was vaak weinig of geen actie van de gebruiker voor nodig. Het volstond om het slachtoffer naar een website te lokken met een schadelijk Adobe Flash-object erin verwerkt.  Sommige aanvallen brachten advertentiedistributiesystemen in gevaar, waardoor schadelijke inhoud plotseling op websites verscheen die door miljoenen gebruikers werden bezocht.

Niet voor niets hebben we al benadrukt dat Flash-objecten in wezen programma’s zijn die op de machine van de gebruiker worden afgeleverd en daar worden uitgevoerd. Een gevolg van de uitgebreide mogelijkheden van de technologie was het ontstaan van talloze mazen waardoor aanvallers volledige controle over een computer konden krijgen. Al in 2005 was Flash inmiddels de populairste technologie voor het uitvoeren van webapplicaties.

Geen probleem, denken we in 2022. Regel gewoon een update voor alle gebruikers. Maar automatische Flash Player-updates verschenen pas tegen het einde van de levensduur van de technologie, en in de jaren 2000 bestonden ze gewoon niet. Destijds moest je naar de Adobe-website gaan, de nieuwe versie downloaden en deze handmatig installeren. Sommige gebruikers wisten niet eens dat ze een versie van Flash Player hadden die moest worden bijgewerkt. De kwetsbaarheid uit 2006 werd ook gesignaleerd (samen met drie andere) in een bulletin van Microsoft, omdat Adobe-code kon worden gedistribueerd met Windows XP. Microsoft zorgde zelf voor updates, en het proces voor het leveren en installeren van patches was ook niet bepaald ideaal.

Hoe slecht de situatie rond de levering van updates was, blijkt uit een Kaspersky-rapport uit 2012. Dat jaar was Adobe Flash Player al koploper in aantal gevonden kwetsbaarheden op computers van gebruikers. Tegen die tijd was er een systeem om gebruikers van Flash Player op de hoogte te brengen van beschikbare updates, en om bij te houden hoe snel die werden geïnstalleerd. Met elk ontdekt beveiligingslek groeide en groeide het aandeel kwetsbare gebruikers (met een piek van 60% in 2012!), voordat dit met elke nieuwe patch weer daalde. Het distributieproces van de update duurde voor de meeste gebruikers drie weken tot twee maanden – wat een eeuwigheid is naar de maatstaven van vandaag de dag. Het was het ergst voor gebruikers van zeer oude versies, die zelfs geen updateherinneringen ontvingen; in heel 2012 bedroeg hun aandeel ongeveer 10%.

Laten we eens kijken naar nog een Kaspersky-rapport, dit keer uit het jaar 2015. Dit rapport vermeldt 13 nieuwe kwetsbaarheden in Flash Player, waarvan bekend was dat ze (samen met andere, oude maar nog levende kwetsbaarheden) werden gebruikt in zogenaamde exploit packs. Dit zijn kits met meerdere exploits om kwetsbaarheden in software op computers van gebruikers één voor één aan te vallen, totdat er een doorbraak is. De meeste daadwerkelijke aanvallen op gebruikers werden uitgevoerd via de browser (62%), met als meest voorkomende oorzaak een Flash-kwetsbaarheid, aldus Kaspersky-experts. Flash werd uiteindelijk verdrongen door een andere populaire plug-in-technologie, Java, die bijvoorbeeld werd gebruikt in vroege online banksystemen.

Tienjarige begrafenis

Halverwege de jaren 2010 werd Adobe Flash al als verouderd beschouwd. De eerste spraakmakende verklaring tegen Flash was wellicht de open brief “Thoughts on Flash” van Apple-oprichter en CEO Steve Jobs. Na een permanente crisis in de jaren negentig zat Apple in 2010 goed: in 2007 kwam de eerste iPhone uit, in 2010 gevolgd door de eerste iPad, die in tegenstelling tot de tablets van 1993 een succes werd. De iPhone miste aanvankelijk veel van de functies van andere smartphones. Het ondersteunde bijvoorbeeld geen Flash, en kon dus geen sites weergeven die deze technologie gebruikten. Eind jaren 2000 was dit een serieus argument ten gunste van Nokia’s Symbian-smartphones en vroege Android-toestellen, die wel Flash-ondersteuning hadden.

Steve Jobs noemde beveiliging als een van de belangrijkste redenen waarom mobiele apparaten van Apple nooit Flash zouden laten draaien. Bovendien kon Apple niet aanvaarden dat ze geen controle hadden over de werking van Flash op hun apparaten. Heel zijn leven lang is Flash (behalve voor bepaalde elementen) een eigen oplossing geweest – in tegenstelling tot open standaarden zoals HTML5 of Javascript. Als Apple en Adobe Flash-ondersteuning hadden toegestaan, zouden games, video’s en web-elementen op de smartphone trager zijn geworden of zijn vastgelopen.  En de fabrikant van de telefoon zou dan natuurlijk de schuld hebben gekregen.

Er waren ook nog andere argumenten. In tegenstelling tot desktopcomputers moet code voor smartphones zo gestroomlijnd mogelijk zijn zodat de batterij niet te snel leegloopt. Het stroomlijnen van Flash, dat toen niet eens GPU-versnelling ondersteunde, was zo goed als onmogelijk. Zelfs als Adobe een geweldige versie van de Flash Player had gemaakt, zouden de prestaties van Flash-toepassingen afhangen van de individuele ontwikkelaars, waarvan er vele duizenden waren. En de control freaks van Apple konden dit niet toestaan.

Ook andere technologiebedrijven wilden niet afhankelijk zijn van de eigen software van een concurrent. De gebruikelijke manier waarop marktspelers met elkaar samenwerken is via samenwerking op basis van een open norm. Maar dat vereist natuurlijk wel dat iedereen deze norm accepteert! En dat was zo simpel nog niet. Sommigen probeerden het succes van Flash te kopiëren en hun eigen formaat te creëren. Met name Microsoft besloot in 2007 zijn eigen “verbeterde Flash” te ontwikkelen, genaamd Silverlight, maar dat sloeg (gelukkig) niet aan.

In 2015 publiceerde het magazine Wired een artikel met de veelzeggende titel “Flash. Must. Die.” Het beschrijft de pogingen van verschillende spelers in de industrie om de “one big vulnerability” (één grote kwetsbaarheid) die Adobe Flash Player heet, aan te pakken. Datzelfde jaar schakelden de ontwikkelaars van de Firefox-browser de plug-in voor het afspelen van Flash-inhoud standaard uit. Chrome verklaarde dat het “onbelangrijke” Flash-inhoud op websites (lees: videobanners die het systeem ernstig belasten) zou uitschakelen. Alex Stamos, destijds Chief Security Officer van Facebook, stelde voor een einddatum vast te stellen waarop de steun voor deze oude technologie zou worden stopgezet. Facebook zelf gebruikte op dat moment nog Flash om video’s af te spelen. De open standaard HTML5 was inderdaad in de positie om Flash te vervangen als de universele tool voor het bouwen van interactieve websites met veel inhoud. Maar om van de ene op de andere dag van zo’n enorme erfenis af te komen was gewoon onmogelijk. Advertentienetwerken waren afhankelijk van Flash, net als gebruikers van oude computers met oude browsers en ontwikkelaars van sites met een grote content-bibliotheek.

Pas in juli 2017 kondigde Adobe aan de ontwikkeling en ondersteuning van Flash stop te zetten, maar wel nog met een royale overgangsperiode van drie jaar. Vrijwel onmiddellijk begonnen alle populaire browsers Flash-inhoud alleen te draaien wanneer de gebruiker daar zelf om vroeg. Uiteindelijk werd op 12 januari 2021, dus 25 jaar na de release van Macromedia Flash Player 1.0 en 13 jaar na de ontdekking van de eerste superkritieke kwetsbaarheid in de software, de gebruikersondersteuning voor Flash stopgezet. Na vandaag spelen moderne browsers geen Flash-inhoud meer af, zelfs als u dat wilt en Flash Player hebt geïnstalleerd, en de laatste versie blokkeert het zelfs.

De end-of-life Flash-pop-up die eind 2020 verscheen.

De end-of-life Flash-pop-up die eind 2020 verscheen. Bron

Maar het Flash-tijdperk is nog niet helemaal voorbij. Veertig dagen nadat Flash werd teruggetrokken, publiceerden wij een overzicht van de toenmalige situatie met betrekking tot de technologie. Sommige bedrijfsapplicaties, zo bleek, waren er nog steeds aan gekoppeld en werden niet meer bijgewerkt. Met name in China wordt de technologie nog veel gebruikt. Sommige bedrijven die geen afstand willen of kunnen doen van Flash zijn zelfs bereid om aangepaste browsers te maken die Flash nog wel ondersteunen. We kunnen alleen maar hopen dat ze weten wat ze doen. Gebruik dergelijke browsers op zijn minst niet op computers zonder een hoogwaardige beveiligingsoplossing.

Flash is ook van belang voor web-archivarissen: met het verdwijnen van de technologie is veel van de creatieve output van tienduizenden mensen ontoegankelijk geworden.

(Bijna) niemand heeft schuld

Het is volkomen begrijpelijk waarom Adobe er zo lang over deed om het einde van Adobe Flash aan te kondigen. Ondersteuning voor de technologie op de overgrote meerderheid van de consumenten-pc’s betekende een hoge verkoop van tools voor content-ontwikkeling. Vanaf 2013 kon het bedrijf dit deel van de technologie aanpassen voor de moderne wereld: met het nog steeds actieve Adobe AIR kun je namelijk toepassingen ontwikkelen voor Windows, Mac OS, Android en iOS. Het is in wezen de directe opvolger van Adobe Flash en ondersteunt zowel de eigen technologieën van het bedrijf als open-source technologieën zoals HTML5.

Dat wil niet zeggen dat Adobe Flash op een bijzonder slechte manier heeft ontwikkeld.  De technologie was gedoemd door haar eigen populariteit, en ook door de ontwikkelingsprincipes van de jaren negentig. Adobe Flash Player had volledige toegang tot de bronnen van de computer, en elke grote coderingsfout had even grote gevolgen. Een goed voorbeeld was de bug in de player waardoor elke site toegang kreeg tot de webcam van de gebruiker. Omgaan met een dergelijke erfenis (oude code die onveilig is ontworpen), is geen eenvoudige taak. Repareren is ook lastig: elke optimalisatie of beveiligingstechnologie brengt de compatibiliteit met miljoenen Flash-toepassingen op duizenden websites in gevaar.

Niet dat Adobe het niet geprobeerd heeft. Na de ontdekking van het eerste 10.0-lek in 2008 heeft Adobe tot 2011 elk jaar tientallen kritieke kwetsbaarheden in Flash Player gepatcht. Maar het lijkt erop dat het aanpassen van Flash aan de evoluerende ideeën over internetbeveiliging net een brug te ver was. De huidige browsers hebben helemaal geen plug-ins nodig om bijna alle online inhoud weer te geven. Dit betekent dat alleen de ontwikkelaar van de browser verantwoordelijk is voor het veilig surfen van de gebruiker, en niemand anders.

Alles wat van het web wordt gedownload, wordt nu per definitie als onveilig beschouwd, dus doen browsermakers veel moeite om websites van elkaar en van andere programma’s op het apparaat – of het nu een computer, smartphone of tablet is – te isoleren. Ze doen duidelijk goed werk, maar helaas verbeteren ook de cybercriminelen hun tools. Alleen al in Google Chrome zijn in 2022 zes zero-day-kwetsbaarheden ontdekt die al bij aanvallen zijn gebruikt. Natuurlijk, dat zijn er minder dan de 15 Adobe Flash Player-kwetsbaarheden die in 2015 door cybercriminelen werden uitgebuit, maar het verschil is niet groot.

Laten we positief eindigen: Adobe Flash heeft een belangrijke rol gespeeld bij het vormgeven van het web zoals we dat nu kennen. Het veranderde websites van een saaie verzameling puur op tekst gebaseerde pagina’s in iets, nou ja, flitsenders. Flash hielp de droom te verwezenlijken van een virtueel universum, zoals in science fiction-boeken en -films uit de jaren negentig. Voor sommigen was het ontwerp van websites in de jaren 2000 te opzichtig, te schreeuwerig, te in-your-face. In het daaropvolgende decennium werd de algemene stijl van sites en toepassingen zachter, terwijl het internet zelf een onmisbaar onderdeel van het moderne leven werd. Adobe Flash was instrumenteel in deze periode, het zogenaamde romantische tijdperk van het internet. Het mag dan wat ruwe randjes hebben gekend, was misschien wat gevoelig voor het morsen van uw gegevens door een onzorgvuldige klik van uw kant, maar het zal altijd een essentieel onderdeel blijven van de vroege geschiedenis van het web.

Tips