Imaginons que nous sommes en 2008. Vous venez d’acheter un nouvel ordinateur avec Windows XP, vous le connectez à Internet, vous ouvrez le navigateur, vous recherchez votre site préféré… et vous découvrez que la moitié des éléments ne s’affichent pas. Un ami qui s’y connaît en informatique vous dit d’ « essayer d’installer Adobe Flash ».
Les origines de Flash remontent au début des années 90 : c’était un outil qui servait à créer de simples animations basées sur un vecteur et il était suffisamment compact pour être téléchargé même si la connexion passait par un modem et était lente.
Puis, dans les années 2000, Adobe Flash Player, qui était encore et toujours un outil d’animation, était devenu indispensable. La moitié des sites ne fonctionnaient pas si vous ne l’aviez pas. D’autre part, les cybercriminels ont commencé à exploiter les dizaines et les dizaines de vulnérabilités trouvées dans le lecteur. C’est principalement à cause de cela que depuis 2010 Flash s’était attiré les foudres des critiques et qu’Adobe avait reconnu qu’avec Internet le programme devait être développé différemment. Néanmoins, les « funérailles » de Flash se sont poursuivies pendant près de 10 ans, même si le programme n’a pas vraiment été enterré. C’est ce qui a donné lieu à un des épisodes les plus intéressants dans l’histoire de la sécurité de l’information en ligne. Rentrons dans les détails…
Les ordinateurs se transforment en tablettes
L’histoire de Flash commence en 1992-93 lorsque plusieurs entreprises lancent en même temps des tablettes. Oui, comme l’iPad, mais ça s’est passé 13 ans plus tôt. Voici à quoi ressemblait le dispositif ThinkPad 700T d’IBM, une espèce rare :
Ces dispositifs utilisaient le service d’exploitation PenPoint OS développé par GO Corporation. Pourtant, cette première tentative de création d’un ordinateur portable tablette a été un échec et a complètement disparu. Dès 1994, AT&T Corporation acquérait Go Corporation et interrompait soudainement la production. Pourtant, plusieurs applications indépendantes avaient été écrites pour PenPoint OS. L’éditeur de graphiques SmartSketch, développé par Futurewave Software, était l’une d’elles.
Malheureusement, la sortie de SmartSketch a eu lieu en même temps que l’abandon de PenPoint OS. Futurewave a d’abord adapté l’éditeur pour Microsoft et Mac OS, puis a ajouté la possibilité de créer des graphiques animés tout en renommant l’outil et en l’appelant FutureSplash Animator. En 1996, Macromedia rachetait Futurewave Software, et son produit était renommé Macromedia Flash. Il avait deux éléments : un programme pour créer des animations, et un outil compact Macromedia Flash Player pour que les utilisateurs puissent les visionner sur leurs ordinateurs. Plus important encore, SmartSketch et le premier Macromedia Flash utilisaient ce que l’on appelle les graphiques vectoriels.
Les photos et les images JPEG que nous avons tous l’habitude d’utiliser pour les graphiques pixelisés, pour lesquels chaque pixel individuel a une valeur de couleur, peuvent s’élever à des milliers voire des millions. Les graphiques vectoriels ne conservent pas les informations du pixel. Ils sont comme une recette que l’on suit pour recréer une image à partir de formes primitives ou géométriques : lignes, carrés, cercles, etc. Les fichiers vectoriels sont généralement plus compacts que les pixelisés. Au lieu de décrire chaque pixel de l’image d’un cercle avec un fond blanc, ils ne gardent qu’une seule instruction : « Dessinez un cercle avec un rayon de X pixels sur fond blanc ».
Dans les années 90, les gens se connectaient généralement via un modem. Ces connexions étaient terriblement lentes, avec un taux de transfert des données de 5-6 kilo-octets par seconde, dans le meilleur des cas. Il fallait compter plusieurs secondes (ou minutes) pour télécharger n’importe quelle image pixelisée d’une qualité un minimum décente. C’est pourquoi de nombreux utilisateurs désactivaient simplement le chargement des images dans les paramètres du navigateur. Pourtant, en utilisant les graphiques vectoriels, Macromedia Flash pouvait charger des images animées et colorées en un rien de temps.
Un autre point important avant de continuer : quand nous parlons de Flash, nous faisons référence au code qui est téléchargé sur l’ordinateur à chaque fois que l’utilisateur ouvre un site ayant un contenu Flash. Il ne s’agit pas d’un fichier exécutable ordinaire ; c’est un ensemble d’instructions que Macromedia Flash Player exécute sur l’ordinateur. En revanche, le principe reste le même. En théorie, rien n’empêchait qu’un fichier exécutable contienne le contenu et le lecteur.
Flash a rapidement eu de nouvelles fonctionnalités. En plus des graphiques, il y a eu le son et les effets spéciaux, puis la transmission vidéo.
Des ajouts en ligne
L’auteur de cet article a découvert Macromedia Flash en 2011 lorsqu’il regardait Masyanya, la version russe de Beavis et Butt-Head. Cet automne-là, comme chaque lundi matin, je téléchargeais le nouvel épisode de ce dessin animé en ligne, qui durait entre 1 et 2 minutes, afin de le visionner. Le créateur de Masyanya, Oleg Kuvaev, avait utilisé Macromedia Flash pour faire ces vidéos animées et les avait téléchargées sur son site comme fichiers exécutables, avec Flash Player et l’animation à l’intérieur. Cette approche a devancé YouTube. Masyanya illustre à la perfection le caractère compact de ce format : le sixième épisode de la série (intitulé « Modem ») ne pesait que 600 kilo-octets, logiciel de lecture inclus, n’oubliez pas. Ce même épisode en format vidéo, et avec une qualité basique, pesait trois fois plus et n’incluait pas le lecteur.
À cette époque, la technologie Macromedia Flash a amélioré de façon significative les capacités des navigateurs Internet, ces derniers n’ayant pas changé si l’on considère le contenu affiché : du texte et des images. Il était donc logique de développer un plug-in qui permettrait de reproduire le contenu Flash directement dans le navigateur, éliminant ainsi le téléchargement et l’exécution de différents éléments. Les objets Flash était toujours exécutés sur l’ordinateur à partir du code. La seule différence était qu’après l’installation du plug-in, ces programmes s’exécutaient pendant que le contenu du site Web chargeait, sans que l’utilisateur n’ait rien à faire.
Les outils de développement ont également évolué. À la fin des années 90, il ne s’agissait plus de simples animations. Flash avait permis l’exécution de commandes de menu interactives pour l’utilisateur, et était compatible avec un langage de programmation qui vous permettait de créer des constructions de plus en plus complexes dans un objet Flash. Pour que vous le visualisiez mieux, laissez-moi vous montrer l’évolution des capacités des sites.
Voici la toute première page, en 1990 :
L’image d’un site typique en 1996 :
Et enfin, voilà un site avec des éléments Flash en 2000 :
Les créateurs de sites Internet avaient d’autres priorités à l’époque : certains cherchaient à obtenir une compatibilité maximale, alors que d’autres sacrifiaient la compatibilité au profit du graphisme. Dans le cas de 1996, même si un site avait des éléments Flash, il pouvait tout de même être consulté sans eux. Dans le second cas, le site avait besoin de Flash ; il ne fonctionnait pas s’il ne l’avait pas. C’est notamment le cas de ce mini-site Nike Air :
Macromedia Flash a fortement repoussé les limites de ce que l’on pouvait faire en conception de sites Internet. Ce programme a libéré les développeurs quant au placement d’éléments animés, à l’utilisation du son et de la vidéo, et à l’ajout d’effets accrocheurs lorsqu’on passe d’une page à l’autre.
Adobe Corporation a racheté Macromedia en 2006. Rapidement, Flash a été utilisé pour créer des jeux qui s’exécutaient directement dans le navigateur. Une avancée sans précédent qui a eu lieu au milieu des années 2000. Pendant ce temps, les dispositifs mobiles se développaient rapidement. Des alternatives de Flash Player pour ces appareils étaient aussi développées afin que le contenu soit disponible depuis diverses plateformes. L’année 2005 a été marquée par le lancement de YouTube. Le site utilisait aussi Flash Player pour ses vidéos.
Le point négatif était que les annonceurs se sont trop emportés lorsqu’il s’agissait de créer des bannières voyantes basées sur Macromedia/Adobe Flash. Étant donné que certains programmes s’exécutaient encore sur l’ordinateur de l’utilisateur, ils surchargeaient parfois le système, ce qui ralentissait de façon significative les autres programmes. Dans certains navigateurs et plug-ins, une option permettait à l’utilisateur de désactiver Flash par défaut. Pourtant, comme nous l’avons rapidement constaté, les bannières seraient le moindre des nombreux problèmes que ce monde informatique dominé par Flash allait rencontrer.
Une faille de sécurité béante
La reconstitution de la chronologie des vulnérabilités détectées dans Adobe Flash Player est assez difficile puisque le programme remonte à l’aube du Web moderne. Au début des années 2000, l’envoi de notifications aux utilisateurs et aux clients pour communiquer des vulnérabilités n’était pas habituel. À en croire les archives des bulletins et des avertissements d’Adobe, qui incluent également les données de l’ère Macromedia, la première entrée au sujet d’une vulnérabilité Flash Player remonte à 2002. La base de données CVE de MITRE compte plus de 1100 vulnérabilités liées à Adobe Flash Player.
Les premières vulnérabilités d’exécution de code arbitraire (ACE) qui apparaissent dans cette base de données datent également de 2002. Un cybercriminel pouvait envoyer un fichier Adobe Flash à la victime qui, alors qu’elle lançait le lecteur, exécutait un code malveillant.
Certaines de ces vulnérabilités avaient un score CVSS maximum de 10.0. Selon des sources non vérifiées, il y avait plus de 800 vulnérabilités d’exécution de code arbitraire dans toutes les versions de Flash Player. Ces vulnérabilités étaient faciles à exploiter, et l’utilisateur n’avait généralement rien, ou peu de choses à faire. Il suffisait de leurrer la victime et de la rediriger vers un site qui contenait un objet Adobe Flash malveillant. Certaines attaques ont mis en danger les systèmes de distribution des publicités, avec des contenus malveillants qui apparaissaient soudainement sur des sites consultés par des millions d’utilisateurs.
Ce n’est pas pour rien que nous avons insisté sur le fait que les objets Flash étaient principalement des programmes qui étaient installés et exécutés sur l’ordinateur de l’utilisateur. Une des conséquences de ce large éventail de compétences de cette technologie a été l’émergence d’innombrables failles qui permettaient aux cybercriminels de prendre complètement le contrôle d’un ordinateur. Déjà en 2005, Flash était la technologie la plus utilisée pour exécuter les applications Web.
Ce n’est pas un problème en 2022. Vous pensez sûrement qu’il suffit de proposer une mise à jour à tous les utilisateurs. Mais les mises à jour automatiques de Flash Player ne sont apparues que vers la fin de vie de cette technologie. Et ce système n’existait pas dans les années 2000. À cette époque, vous deviez aller sur le site d’Adobe, télécharger la nouvelle version et l’installer manuellement. Certains utilisateurs ne savaient même pas qu’il fallait mettre à jour leur version de Flash Player. La vulnérabilité de 2006 apparaît aussi (ainsi que trois autres) dans le bulletin de sécurité de Microsoft puisque le code d’Adobe pouvait être distribué avec Windows XP. Microsoft a géré les mises à jour et le processus de livraison et d’installation des correctifs était loin d’être idéal.
À en juger par ce rapport rédigé par Kaspersky en 2012, il était évident que le processus de livraison des mises à jour était défaillant. Cette année-là, Adobe Flash Player était déjà leader à cause du nombre de vulnérabilités détectées sur les ordinateurs des utilisateurs. C’est alors qu’un système a été mis en place pour notifier les mises à jour de Flash Player disponibles aux utilisateurs et pour vérifier si les correctifs étaient rapidement installés. Lorsqu’une faille de sécurité était découverte, la part d’utilisateurs vulnérables ne cessait d’augmenter (avec un pic à 60 % en 2012 !), avant qu’elle ne chute lors de la sortie du nouveau correctif. Le processus de distribution des mises à jour, du moins pour la plupart des utilisateurs, prenait entre trois semaines et deux mois, une éternité par rapport aux délais actuels. La situation était encore pire pour les utilisateurs qui avaient des versions très anciennes puisqu’ils ne recevaient aucun rappel de mise à jour. Ils représentaient environ 10 % en 2012.
Prenons un autre rapport de Kaspersky publié en 2015. On y parle de 13 nouvelles vulnérabilités dans Flash Player, ainsi que toutes les précédentes non corrigées, qui étaient utilisées pour des packs d’exploit ; des kits qui contenaient plusieurs exploits afin d’attaquer une par une toutes les vulnérabilités du programme sur l’ordinateur de l’utilisateur jusqu’à ce qu’une ouverture soit créée. La plupart de ces attaques étaient lancées via le navigateur (62 %) et, selon les experts de Kaspersky, une vulnérabilité de Flash était la cause principale. Le programme Flash n’était plus la principale source de menaces grâce à l’apparition d’une autre technologie plug-in que vous connaissez : Java. Ce programme était notamment utilisé par les tout premiers systèmes de banque en ligne.
Des funérailles qui ont duré dix ans
Au milieu des années 2010, Adobe Flash était déjà considéré comme obsolète. Les déclarations d’une personne importante, le fondateur et PDG d’Apple Steve Jobs, lors de la publication de sa lettre ouverte « Thoughts on Flash » ont été la première attaque contre Flash. Après avoir traversé plusieurs crises dans les années 90, Apple commençait à bien s’installer en 2010. Le premier iPhone est sorti en 2007, suivi du premier iPad en 2010 qui, contrairement aux tablettes de 1993, a connu un véritable succès. Le premier iPhone manquait de nombreuses fonctionnalités que les autres smartphones avaient. Ainsi, il n’était pas compatible avec Flash et ne pouvait pas afficher les sites qui utilisaient cette technologie. Vers la fin des années 2000, cet argument jouait en faveur des smartphones Symbian de Nokia et des tout premiers dispositifs Android, qui eux étaient compatibles avec Flash.
Steve Jobs a expliqué que c’était principalement pour des raisons de sécurité que les dispositifs mobiles d’Apple n’utiliseraient jamais Flash. De plus, Apple ne pouvait pas accepter de n’avoir aucun contrôle sur la façon dont Flash aurait opéré sur ses dispositifs. Pendant toute son existence, Flash a été une solution propriétaire (sauf pour certains éléments), contrairement aux normes ouvertes comme HTML5 ou Javascript. Si Apple l’avait permis et qu’Adobe avait intégré l’assistance, les jeux, les vidéos et les éléments Web de Flash, le smartphone aurait été lent et aurait bugué. Sans oublier que le fabricant du téléphone aurait été tenu pour responsable !
Il y avait d’autres arguments. Contrairement aux ordinateurs de bureau, le code des smartphones doit être aussi simple que possible pour ne pas vider la batterie. Simplifier Flash, qui n’était même pas compatible avec l’accélération du processeur à l’époque, était tout simplement mission impossible. Même si Adobe avait développé une très bonne version de Flash Player, les performances des applications Flash dépendaient des développeurs individuels, il y en avait plusieurs milliers. Apple étant une entreprise qui aime avoir le contrôle, ce n’était pas une possibilité.
D’autres entreprises technologiques ne voulaient pas non plus dépendre d’un logiciel propriétaire de la concurrence. Les acteurs du marché interagissent normalement par collaboration avec une norme ouverte. Mais cela signifie que cette norme doit être acceptée ! Ce n’était pas facile. Certains ont essayé de reproduire le succès de Flash et de créer leur propre format propriétaire. Ainsi, Microsoft a décidé en 2007 de développer sa propre version « améliorée de Flash », connue comme Silverlight, mais (heureusement) ça n’a pas fonctionné.
En 2015, le magazine Wired a publié un article dont le titre est révélateur : « Flash. Must. Die » (Flash doit mourir). L’article décrit les tentatives de plusieurs acteurs de l’industrie afin de gérer » une grande vulnérabilité » nommée Adobe Flash Player. Cette même année, les développeurs du navigateur Firefox ont désactivé le plug-in qui reproduit le contenu Flash par défaut. Chrome a alors communiqué que le contenu Flash « sans importance » des sites serait désactivé. Autrement dit, les bannières vidéo qui surchargent vraiment le système. Alex Stamos, qui était le responsable de la sécurité chez Facebook, a proposé de fixer une date butoir à partir de laquelle cette technologie ne serait plus utilisée. À ce moment-là, Facebook utilisait encore Flash pour reproduire les vidéos. La norme ouverte HTML5 était bien placée pour remplacer Flash et devenir l’outil universel utilisé pour construire des sites ayant un contenu interactif. Pourtant, il était tout simplement impossible d’arrêter d’utiliser ce programme et tout son héritage du jour au lendemain. Les réseaux publicitaires dépendaient de Flash, tout comme les utilisateurs qui avaient de vieux ordinateurs avec de vieux navigateurs et les développeurs qui avaient des sites avec une vaste bibliothèque de contenu.
Ce n’est qu’en juillet 2017 qu’Adobe a annoncé l’interruption de Flash et la fin de son assistance, mais avec une période de transition assez généreuse : trois ans. Presque immédiatement, tous les navigateurs connus ont commencé à n’exécuter le contenu Flash que lorsque l’utilisateur le demandait. Enfin, le 12 janvier 2021, soit 25 ans après la sortie de Macromedia Flash Player 1.0 et 13 ans après la découverte de la première vulnérabilité critique du programme, l’assistance utilisateur de Flash était interrompue. De nos jours, les navigateurs modernes n’exécutent plus le contenu Flash même si l’utilisateur le demande et que Flash Player est installé ; et les dernières versions bloquent même le programme.
Pourtant, l’ère de Flash n’est pas encore terminée. 40 jours après la fin de Flash, nous avons publié une analyse de la situation alors actuelle de cette technologie. Il s’est avéré que certaines applications d’entreprise y sont encore associées et ne sont plus mises à jour. Cette technologie est particulièrement utilisée en Chine, par exemple. Certaines entreprises qui ne veulent ou ne peuvent pas abandonner Flash sont même prêtes à créer des navigateurs personnalisés pour pouvoir l’utiliser. Nous ne pouvons qu’espérer qu’elles savent ce qu’elles font. Dans le pire des cas, n’utilisez pas ces navigateurs sur un ordinateur si vous n’avez pas une solution de sécurité de qualité.
Flash intéresse aussi les archivistes du Web : avec la disparition de cette technologie, la plupart des créations de dizaines de milliers de personnes sont inaccessibles.
Ce n’est la faute de personne, ou presque
On comprend parfaitement pourquoi Adobe a mis autant de temps a annoncé le décès d’Adobe Flash. L’assistance pour cette technologie utilisée sur la grande majorité des ordinateurs de particuliers représentait un important volume de vente d’outils de développement du contenu. Début 2013, l’entreprise pouvait adapter cette partie de la technologie au monde moderne : le programme encore actif Adobe AIR vous permet de développer des applications pour Windows, mac OS, Android et iOS. C’est l’héritier direct d’Adobe Flash, et il soutient à la fois les technologies propriétaires de l’entreprise et les technologies open-source comme HTML5.
Il va sans dire qu’Adobe avait développé Flash de façon assez pauvre. Cette technologie était maudite par sa popularité et par les principes de développement des années 90. Adobe Flash Player avait complètement accès aux ressources de l’ordinateur et n’importe quelle erreur de codage avait de lourdes conséquences. Le bug du lecteur qui permettait à n’importe quel site d’accéder à la webcam de l’utilisateur est un très bon exemple. Gérer cet héritage, y compris un vieux code non sécurisé depuis sa conception, n’est pas chose facile. Le corriger est tout aussi difficile : toute optimisation ou technologie de sécurité portait préjudice à la compatibilité du programme avec les millions d’applications Flash de milliers de sites.
Adobe a essayé. Après la découverte de la première vulnérabilité critique de score 10.0 en 2008, Adobe a corrigé chaque année, et jusqu’en 2011, des dizaines de vulnérabilités critiques dans Flash Player. Il semblerait que l’adaptation de Flash aux nouvelles idées de la sécurité sur Internet était un vide bien trop grand. De nos jours, les navigateurs n’ont plus besoin de plug-in pour afficher le contenu en ligne. Cela signifie que les développeurs des navigateurs sont responsables de la navigation des utilisateurs et de leur sécurité. Personne d’autre.
Tout contenu téléchargé depuis le Web est considéré comme dangereux par définition. Ainsi, les développeurs des navigateurs s’investissent beaucoup pour isoler les sites des uns des autres et des autres programmes installés sur le dispositif, que ce soit un ordinateur, un smartphone ou une tablette. Il est évident qu’ils font un très bon travail mais, malheureusement, les cybercriminels aussi améliorent leurs outils. En 2022, six vulnérabilités zero-day ont été détectées dans Google Chrome et elles étaient déjà activement exploitées. Il est vrai que c’est inférieur aux 15 vulnérabilités d’Adobe Flash Player que les cybercriminels ont exploité en 2015. Mais la différence n’est pas si importante que cela.
Finissons cet article avec une note positive. Adobe Flash Player a joué un rôle déterminant dans la mise en forme du Web tel que nous le connaissons aujourd’hui. Ce programme a transformé les sites, qui étaient une collection complète de pages texte, en quelque chose de plus attrayant. Flash a aidé à réaliser le rêve de l’univers virtuel, tel que les livres et les films de science-fiction l’imaginaient dans les années 90. Pour certains, la mise en page des sites dans les années 2000 était trop voyante, effrontée et directe. Lors de la décennie suivante, le style général des sites et des applications s’est adouci, alors qu’Internet est devenu un outil indispensable de la vie moderne. Adobe Flash a joué un rôle important pendant toute cette période que nous appelons l’époque romantique d’Internet. Ce programme était peut-être un peu trop brut et rustique, sujet à distribuer vos données si vous cliquiez par mégarde, mais il restera toujours une partie essentielle des débuts d’Internet.