Vida y muerte de Adobe Flash

Cómo un editor de gráficos vectoriales ayudó a crear una de las tecnologías más importantes de Internet y por qué acarreó grandes riesgos de seguridad.

Imagina que viajas al pasado, a 2008, por ejemplo. Acabas de comprarte un ordenador nuevo con Windows XP, lo conectas a Internet, abres el navegador, vas a tu página web favorita… y te encuentras con que no se muestra la mitad del contenido que hay en ella. “Prueba a instalarte Adobe Flash”— te aconseja por teléfono un amigo que sabe mucho de ordenadores.

Los orígenes de Flash se remontan a principios de la década de 1990. Era una herramienta para crear animaciones simples basadas en vectores, lo suficientemente compactas como para descargarlas incluso con una conexión lenta a Internet mediante un módem.

A finales de la década de 2000, Adobe Flash Player, que en el fondo seguía siendo una herramienta de animación, era prácticamente indispensable. Sin ella, literalmente la mitad de las páginas web no funcionaban. A su vez, los ciberdelincuentes también empezaron a utilizar las decenas de vulnerabilidades que se encontraban en este reproductor. En gran parte debido a ello, desde 2010 Flash ha tenido muchos críticos acérrimos e incluso el propio Adobe reconoció que Internet necesitaba desarrollarse en diferentes direcciones. Sin embargo, “la muerte” de Flash se prolongó durante casi 10 años, y aun así no fue enterrado como es debido. Todo esto hace que este sea uno de los episodios más interesantes de la historia de la seguridad de la información online. Profundicemos en los detalles…

Los ordenadores se convierten en tablets

La historia de Flash comienza entre 1992 y 1993, cuando varias empresas lanzaron al mismo tiempo diferentes tablets. Eso es, como el iPad, pero 13 años antes. Por ejemplo, así era la IBM ThinkPad 700T, un extraño ejemplar.

La tablet ThinkPad 700T.

La tablet ThinkPad 700T. Fuente.

Estos dispositivos utilizaban Penpoint OS, desarrollado por GO Corporation. No obstante, este primer intento de crear una tablet portátil fracasó. En 1994, Go Corporation se vendió a AT&T Corporation, que rápidamente cesó su producción. Sin embargo, se escribieron varias aplicaciones independientes para Penpoint OS. Una de ellas fue el editor de gráficos SmartSketch, desarrollado por Futurewave Software.

Desgraciadamente, el lanzamiento de Smartsketch coincidió con la desaparición de Penpoint OS. Futurewave primero adaptó el editor para Microsoft Windows y Mac OS y, posteriormente, implementó la función de crear gráficos animados y cambió el nombre del producto a FutureSplash Animator. En 1996, Macromedia compró Futurewave Software y su producto pasó a llamarse Macromedia Flash. Este constaba de dos componentes: un programa para crear animaciones y una función compacta de Macromedia Flash Player para que los usuarios las pudieran reproducir en sus ordenadores. Cabe destacar que tanto SmartSketch, como los primeros Macromedia Flash, utilizaban lo que se conoce como gráficos vectoriales.

Las fotos e imágenes JPEG que todos utilizamos usan gráficos rasterizados en los que cada píxel individual tiene un valor de color, y puede haber miles o incluso millones de ellos. Los gráficos vectoriales no almacenan información de píxeles; son una receta para recrear una imagen a partir de formas primitivas o geométricas: líneas, cuadrados, círculos, etc. Los archivos vectoriales suelen ser más compactos que los rasterizados, ya que, en lugar de describir cada píxel de una imagen de un círculo sobre un fondo blanco, almacenan una sola instrucción: “Dibuja un círculo con un radio de X píxeles sobre un fondo blanco”.

En la década de 1990, la gente generalmente se conectaba a Internet mediante módems. Estas conexiones eran realmente lentas, con una tasa de transferencia de datos de 5 a 6 kilobytes por segundo. Cualquier imagen rasterizada de una calidad mínimamente decente tardaba al menos unos segundos (o incluso minutos) en cargarse. Por ello, muchos usuarios simplemente desactivaban las imágenes en la configuración de su navegador. Sin embargo, al utilizar gráficos vectoriales, Macromedia Flash pudo generar imágenes animadas coloridas que se cargaban en muy poco tiempo.

Antes de continuar, hablemos de otro punto importante: cuando hablamos de Flash, nos referimos esencialmente al código que se descarga en un ordenador cada vez que un usuario abre una web con contenido Flash. Este no es un archivo ejecutable ordinario, sino un conjunto de instrucciones ejecutadas por Macromedia Flash Player en el PC. De todas formas, el principio es el mismo (sin embargo, en teoría, no había nada que impidiera crear un archivo ejecutable que incluyera tanto el contenido como el reproductor).

Flash no tardó mucho en adquirir otras funciones: además de los gráficos, llegaron el sonido y los efectos especiales y, más tarde, la transmisión de vídeo.

Añadidos online

El autor de este post se topó por primera vez con Macromedia Flash en 2001 cuando estaba viendo Masyanya, la respuesta rusa a Beavis y Butt-Head. Ese otoño, todos los lunes por la mañana, descargaba y veía un nuevo episodio de esta webserie de animación, que duraba uno o dos minutos. El creador de Masyanya, Oleg Kuvaev, hizo la animación de los vídeos con Macromedia Flash y los subió a su página web específicamente como archivos ejecutables, con Flash Player y la propia animación incrustada en su interior. En su esencia, este enfoque se adelantó a YouTube. Masyanya ilustra perfectamente la compactabilidad del formato: el sexto episodio de la serie (llamado “Módem”) pesaba solo 600 kilobytes, con el software de reproducción ya incluido. El mismo episodio en formato de vídeo, con la calidad más básica, pesaría el triple, y a esto habría que sumarle el peso del reproductor.

La tecnología Macromedia Flash expandió de forma significativa las funcionalidades de los navegadores de Internet de entonces, que en sí mismos no diferían en términos de contenido mostrado: solo texto e imágenes. Por lo tanto, crear un complemento para reproducir contenido Flash directamente en el navegador fue un desarrollo lógico, eliminando la necesidad de descargar y ejecutar cosas por separado. Es decir, los archivos Flash seguían siendo código ejecutado en el ordenador, la única diferencia estaba en que, tras la instalación del complemento, estos programas se ejecutaban al mismo tiempo que se cargaba el contenido web, sin que el usuario realizara ninguna acción.

Las herramientas de desarrollo también se expandieron: para finales de la década de 1990 ya no se trataba de una simple animación. Flash logró implementar elementos de menú interactivos para el usuario, y contaba con soporte para un lenguaje de secuencias de comandos que le permitía crear construcciones cada vez más complejas dentro de un archivo Flash. Para poder visualizarlo, veamos la evolución de las funcionalidades de las páginas web.

Esta es la primera página web, de 1990:

La primera página web de la historia. Con solo texto e hipervínculos.

La primera página web de la historia. Con solo texto e hipervínculos. Fuente. 

Esta es una típica página web de 1996:

Portal de Yahoo! en otoño de 1996. Aún solo con texto y enlaces, además de algunos elementos gráficos.

Portal de Yahoo! en otoño de 1996. Aún solo con texto y enlaces, además de algunos elementos gráficos. Fuente.

Y esta es una página web con elementos Flash, de 2000:

Página web de la PlayStation de Sony en el 2000. Derrocha color, pero la mayoría de los elementos están hechos en HTML simple. El elemento central animado contiene fotos, animaciones y vídeos.

Página web de la PlayStation de Sony en el 2000. Derrocha color, pero la mayoría de los elementos están hechos en HTML simple. El elemento central animado contiene fotos, animaciones y vídeos. Fuente.

Los diseñadores web de la época tenían diferentes prioridades: algunos se esforzaban por lograr la máxima compatibilidad, otros sacrificaban la compatibilidad en pro de los gráficos. En el ejemplo de 1996, aunque una web tuviera elementos Flash, aún podía usarse sin ellos. En el segundo, las webs necesitaban Flash, sin él no funcionaban, como esta miniweb de Nike Air:

En un primer momento, se ve bien, pero toda la interfaz de la web de Nike Air de 2006 fue creada con Flash, pero, sin el complemento adecuado, no se abría correctamente.

En un primer momento, se ve bien, pero toda la interfaz de la web de Nike Air de 2006 fue creada con Flash, pero, sin el complemento adecuado, no se abría correctamente. Fuente.

Macromedia Flash amplió considerablemente los límites de lo que era posible hacer al diseñar una web. Esto liberó a los desarrolladores con respecto a la colocación de elementos animados, el uso de sonido y vídeo, así como de efectos llamativos al navegar entre páginas.

Adobe Corporation compró Macromedia en 2006. Pronto, Flash se empezó a utilizar para crear juegos completos que se ejecutaban directamente en el navegador, algo sin precedentes a mediados de la década de 2000. Mientras tanto, los dispositivos móviles se desarrollaban rápidamente, así como alternativas de Flash Player para ellos, haciendo que el contenido estuviera disponible en múltiples plataformas. En 2005 fue el lanzamiento de YouTube, una plataforma que también usó Flash Player para mostrar sus vídeos.

Una consecuencia negativa fue que los anunciantes se dejaron llevar por la creación de llamativos banners basados ​​en Macromedia/Adobe Flash. Como estos programas todavía se ejecutaban en el ordenador del usuario, a veces sobrecargaban el sistema ralentizando seriamente otros programas. En algunos navegadores y complementos para ellos, aparecía la opción de desactivar Flash por defecto. Sin embargo, como rápidamente se descubrió, los banners eran el menor de los muchos problemas que aguardaba el mundo informático dominado por Flash.

Un agujero de seguridad gigante

Reconstruir la línea de tiempo de la detección de vulnerabilidades en Adobe Flash Player es muy complicado, ya que el programa se remonta a los inicios de la web moderna. A principios de la década de los 2000, notificar a los usuarios y clientes sobre las vulnerabilidades no era una práctica muy común. En el archivo de boletines y avisos de Adobe, que incluye datos de la época de Macromedia, la primera entrada sobre una vulnerabilidad de Flash Player aparece en 2002. Y la base de datos CVE de MITRE enumera más de 1100 vulnerabilidades relacionadas con Adobe Flash Player.

Las primeras vulnerabilidades de ejecución de código arbitrario (ACE, por sus siglas en inglés) en esta base de datos también datan de 2002. Un atacante podía enviar un archivo Adobe Flash a una víctima, que, cuando lo reproducía, ejecutaba un código malicioso. Algunas de estas vulnerabilidades tenían una puntuación CVSS máxima de 10,0 (según fuentes no verificadas, había más de 800 vulnerabilidades ACE en todas las versiones de Flash Player). Dichas vulnerabilidades eran fáciles de explotar, ya que normalmente requerían poca o ninguna acción por parte del usuario. Bastaba con atraer a la víctima a una web que tuviera incrustado un archivo Adobe Flash malicioso. Algunos ataques comprometieron los sistemas de distribución de anuncios, lo que provocó que el contenido malicioso apareciera repentinamente en páginas web visitadas por millones de usuarios.

Por algo hemos enfatizado que los objetos Flash son esencialmente programas que se envían al ordenador de un usuario y es allí donde se ejecutan. Una consecuencia de la amplia gama de funcionalidades tecnológicas fue la aparición de incontables brechas a través de las cuales los atacantes podían obtener el control total de un ordenador. Ya en 2005, Flash era la tecnología más popular para ejecutar aplicaciones web.

En 2022 pensaríamos que no hay problema, tan solo habría que entregar una actualización a todos los usuarios. Pero las actualizaciones automáticas de Flash Player aparecieron al final de la vida útil de esta tecnología, en la década de los 2000 simplemente no existían. En aquel entonces, tenías que ir a la página web de Adobe, descargar la nueva versión e instalarla manualmente. Algunos usuarios ni siquiera sabían que tenían una versión de Flash Player que debía actualizarse. La vulnerabilidad de 2006 también se señaló (junto a otras tres) en un boletín de Microsoft, porque el código de Adobe podría distribuirse con Windows XP. El mismo Microsoft gestionó estas actualizaciones, pero su proceso para entregar e instalar parches tampoco fue el ideal.

La gravedad de la situación de entrega de actualizaciones se trató en un informe de Kaspersky de 2012. Ese año, Adobe Flash Player encabezaba las listas por la cantidad de vulnerabilidades encontradas en los ordenadores de los usuarios. Para entonces, ya existía un sistema para notificar a los usuarios de Flash Player sobre las actualizaciones disponibles, así como para realizar un seguimiento de la rapidez con la que se instalaban. Con cada brecha de seguridad descubierta, la proporción de usuarios vulnerables crecía y crecía (¡llegando al 60 % en 2012!), antes de disminuir con cada nuevo parche. El proceso de distribución de actualizaciones para la mayoría de los usuarios era de tres semanas a dos meses, algo impensable según los estándares actuales. Lo peor de todo para los usuarios de versiones más antiguas es que ni siquiera recibían recordatorios de actualización; a lo largo de 2012 su participación fue de alrededor del 10 %.

Echemos un vistazo a otro informe de Kaspersky, pero ahora de 2015. En él se enumeran 13 vulnerabilidades nuevas en Flash Player, que se sabía que se usaban (junto a otras antiguas, pero que aún estaban activas) en los llamados paquetes de explotación: kits que contienen múltiples exploits para atacar vulnerabilidades en el software de los ordenadores de los usuarios, uno por uno, hasta lograr un gran avance. La mayoría de los ataques reales a los usuarios se llevaron a cabo a través del navegador (62 %), siendo la causa más común una vulnerabilidad de Flash, según los expertos de Kaspersky. Flash finalmente fue derrocado como la principal fuente de amenazas por otra popular tecnología de complemento, Java, que se utilizó, por ejemplo, en los primeros sistemas bancarios online.

Un funeral de 10 años

Para mediados de la década de 2010, Adobe Flash ya estaba considerado como obsoleto. Quizás la primera declaración más sonada contra Flash fue la carta abierta “Pensamientos sobre Flash” del fundador y CEO de Apple, Steve Jobs. Después de atravesar crisis permanentes en los años noventa, en 2010 Apple estaba bien asentada: en 2007 se lanzó el primer iPhone, seguido en 2010 por el primer iPad, que fue todo un éxito, a diferencia de las tablets de 1993. En un primer momento, el iPhone carecía de muchas de las funciones que se encontraban en otros smartphones. En particular, no era compatible con Flash y, por lo tanto, no podía mostrar webs que usaran esta tecnología. A finales de la década de los 2000, este fue un buen argumento a favor de los smartphones Symbian de Nokia y los primeros dispositivos Android que sí tenían soporte para Flash.

Steve Jobs citó la seguridad como una de las principales razones por las que los dispositivos móviles de Apple jamás utilizarían Flash. Además, Apple no podía aceptar no tener control sobre el funcionamiento de Flash en sus dispositivos. Durante toda su vida, Flash (con la excepción de ciertos elementos) ha sido una solución patentada, a diferencia de los estándares abiertos como HTML5 o Javascript. Si Apple lo hubiera permitido y Adobe hubiera implementado la compatibilidad con Flash, los juegos, vídeos y elementos web en los smartphones se habrían ralentizado o bloqueado. ¡Y se le echaría la culpa al fabricante del teléfono!

También hubo otros argumentos. A diferencia de los ordenadores de escritorio, el código para los smartphones debe ser lo más eficiente posible para no consumir la batería. Optimizar Flash, que ni siquiera admitía la aceleración de GPU en aquel entonces, era casi imposible. Incluso si Adobe hubiera hecho una gran versión de Flash Player, el rendimiento de las aplicaciones Flash habría dependido de miles de desarrolladores individuales. Y Apple, un fanático del control, no podía tolerarlo.

Otras empresas de tecnología tampoco querían depender de un software que fuera propiedad de un competidor. Lo normal sería que interactuaran los actores del mercado mediante la colaboración en un estándar abierto, ¡pero esto requería que todos aceptaran este estándar! Y esto no fue nada fácil. Algunos intentaron replicar el éxito de Flash y crear su propio formato patentado. En particular, Microsoft decidió en 2007 desarrollar su propio “Flash mejorado” llamado Silverlight, pero, afortunadamente, no tuvo éxito.

En 2015, la revista Wired publicó un revelador artículo titulado “Flash. Debe. Morir” que describe los intentos de varios actores de la industria de lidiar con la “gran vulnerabilidad” que se conoce con el nombre de Adobe Flash Player. Ese mismo año, los desarrolladores del navegador Firefox deshabilitaron el complemento para reproducir contenido Flash de forma predeterminada. Chrome declaró que deshabilitaría el contenido Flash “sin importancia” de las páginas web (léase: banners de vídeo que sobrecargaban seriamente el sistema). Alex Stamos, el entonces director de seguridad de Facebook, sugirió establecer una fecha final para obtener soporte para esta tecnología heredada. El propio Facebook en ese momento seguía usando Flash para reproducir vídeos. De hecho, el estándar abierto HTML5 estaba en posición de reemplazar a Flash como la herramienta universal para crear páginas web interactivas con mucho contenido. Pero deshacerse de un legado tan grande de la noche a la mañana era prácticamente imposible. Las redes publicitarias dependían de Flash, al igual que los usuarios de ordenadores antiguos con navegadores antiguos o los desarrolladores de webs con una gran biblioteca de contenido.

En julio de 2017, Adobe anunció que dejaría de desarrollar y finalizaría el soporte para Flash, pero con un generoso periodo de transición de tres años. Todos los navegadores populares, casi inmediatamente, comenzaron a ejecutar contenido Flash solo cuando lo solicitaba el usuario. Finalmente, el 12 de enero de 2021, 25 años después del lanzamiento de Macromedia Flash Player 1.0 y 13 años después del descubrimiento de la primera vulnerabilidad supercrítica en el software, se suspendió el soporte de usuario para Flash. A día de hoy, los navegadores modernos ya no reproducen contenido Flash, incluso si lo quieras utilizar y tengas instalado Flash Player, e incluso la última versión bloquea su ejecución.

La ventana emergente del final de la vida útil de Flash que apareció a finales de 2020.

La ventana emergente del final de la vida útil de Flash que apareció a finales de 2020. Fuente.

Sin embargo, la era Flash todavía no ha terminado. Cuarenta días después de su retirada, publicamos una revisión de la situación actual en aquel momento con respecto a la tecnología y resultó que algunas aplicaciones corporativas todavía estaban vinculadas a él y ya no se actualizaban. Esta tecnología todavía es muy utilizada, particularmente en China. Algunas empresas que no quieren o no pueden separarse de Flash incluso están listas para crear navegadores personalizados que lo admitan. Tan solo esperamos que sepan lo que están haciendo. Como mínimo, no recomendamos utilizar dichos navegadores en ordenadores sin una solución de seguridad de alta calidad.

Flash también es de interés para los archivistas web: con el paso de la tecnología, gran parte de la producción creativa de miles de personas se ha vuelto inaccesible.

Nadie tiene la culpa… o casi nadie

Es totalmente entendible el por qué Adobe tardó tanto tiempo en anunciar el fin de la vida útil de Adobe Flash. El soporte para la tecnología en la gran mayoría de los PC de consumo significó altas ventas de herramientas de desarrollo de contenido. A partir de 2013, la empresa pudo adaptar esta parte de la tecnología al mundo moderno: Adobe AIR, todavía activo, permite desarrollar aplicaciones para Windows, Mac OS, Android e iOS. Este es, en esencia, el sucesor directo de Adobe Flash, que admite tanto las tecnologías patentadas de la empresa como las tecnologías de código abierto como HTML5.

Esto no quiere decir que Adobe haya desarrollado Flash de una manera particularmente pobre. La tecnología estaba maldita por su propia popularidad y también por los principios de desarrollo de la década de 1990. Adobe Flash Player tenía acceso completo a los recursos del ordenador y cualquier importante error de codificación tenía consecuencias igualmente importantes. Un buen ejemplo fue el error en el reproductor que permitía que cualquier web accediera a la webcam del usuario. Lidiar con un legado de este tipo (código antiguo que era inseguro por su diseño) no es tarea fácil. La reparación también es complicada: cualquier tecnología de optimización o seguridad pone en peligro la compatibilidad de millones de aplicaciones Flash en miles de páginas web.

No es que Adobe no lo haya intentado. Tras el descubrimiento de la primera vulnerabilidad 10.0 en 2008, Adobe corrigió cada año decenas de vulnerabilidades críticas en Flash Player, hasta 2011. Pero parece que adaptar Flash a las ideas en evolución sobre la seguridad en Internet era demasiado. Los navegadores actuales no necesitan ningún complemento para mostrar casi cualquier ningún contenido online. Esto significa que el desarrollador del navegador es el único responsable de la navegación segura del usuario y nadie más.

Todo lo que se descarga de la web ahora es considerado inseguro por definición, por lo que los fabricantes de navegadores hacen todo lo posible para aislar las páginas web entre sí y de otros programas en el dispositivo, ya sea un ordenador, un smartphone o una tablet. Claramente están haciendo un buen trabajo, pero, por desgracia, los ciberdelincuentes también han mejorado sus herramientas. En 2022, solo en Google Chrome, se han descubierto seis vulnerabilidades de día cero que ya se han utilizado en ataques. Claro, eso es menos que las 15 vulnerabilidades de Adobe Flash Player explotadas por los ciberdelincuentes en 2015, pero la diferencia no es enorme.

Terminemos con una nota positiva: Adobe Flash desempeñó un papel importante en la configuración de la web tal y como la conocemos a día de hoy. Transformó las páginas web pasando de una aburrida colección de páginas basadas en texto a algo mucho más llamativo. Flash ayudó a hacer realidad el sueño de un universo virtual, tal como lo concibieron los libros y las películas de ciencia ficción de la década de 1990. Para algunos, el diseño de páginas web en la década de los 2000 era demasiado llamativo, demasiado atrevido, demasiado directo. Durante la década siguiente, el estilo general de las webs y las aplicaciones se suavizó, e Internet se convirtió en una parte indispensable de la vida moderna. Adobe Flash fue fundamental durante este periodo, la llamada era romántica de Internet. Puede haber sido algo rudimentario, inseguro y propenso a compartir los datos con tan solo un descuidado clic, pero siempre seguirá siendo una parte esencial de la historia y los inicios de la web.

Consejos