La vida y la 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é condujo a grandes riesgos de seguridad.

Supongamos que volvemos al pasado, por ejemplo, a 2008. Acabas de comprar una computadora nueva con Windows XP, la conectas a Internet, abres el navegador, vas a tu sitio web favorito… y encuentras que la mitad de él no se puede ver. “Intenta instalar Adobe Flash”, te aconseja por teléfono tu amigo que sabe todo sobre computadoras.

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 lenta conexión a Internet mediante un módem.

A fines 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, la mitad de los sitios web no funcionaban, literalmente. De igual manera los ciberdelincuentes comenzaron a utilizar las docenas y docenas de vulnerabilidades que se encontraban en el reproductor. Gracias a esto, en gran medida, desde 2010 Flash ha tenido muchos críticos acérrimos, e incluso el propio Adobe reconoció que Internet necesita desarrollarse en diferentes direcciones. No obstante, el “funeral” de Flash se prolongó durante casi 10 años, y aun así no fue enterrado como es debido. Todo lo convierte en uno de los episodios más interesantes en la historia de la seguridad de la información en línea. Profundicemos en los detalles…

Las computadoras se vuelven tabletas

La historia de Flash comienza entre 1992 y1993, cuando varias empresas lanzaron tabletas al mismo tiempo. Exacto, como el iPad, pero 13 años antes. Por ejemplo, así es como se veía el IBM ThinkPad 700T, un extraño espécimen.

ThinkPad 700T, la tableta computadora. Fuente.

Estos dispositivos utilizaban Penpoint OS, desarrollado por GO Corporation. No obstante, este primer intento de crear una tableta portátil chocó y se incendió. En 1994, Go Corporation fue vendida a AT&T Corporation, quien cesó su producción rápidamente. 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, posteriormente, implementó la función de crear gráficos animados, al tiempo que cambiaba el nombre del producto a FutureSplash Animator. En 1996, Macromedia compró Futurewave Software y su producto pasó a llamarse Macromedia Flash. Constaba de dos componentes: un programa para crear animaciones y una utilidad compacta Macromedia Flash Player para que los usuarios las pudieran reproducir en sus computadoras. 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 de trama, 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, y demás. Los archivos vectoriales suelen ser más compactos que los de trama: 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 a través de módems. Estas conexiones eran tediosamente lentas, con una tasa de transferencia de datos, de 5 a 6 kilobytes por segundo. Cualquier imagen rasterizada de una calidad mínimamente decente tomaba al menos unos segundos (o incluso minutos) en cargarse. Como resultado, muchos usuarios simplemente desactivaron las imágenes en la configuración de su navegador. No obstante, mediante gráficos vectoriales, Macromedia Flash pudo generar imágenes animadas coloridas que se cargaban en muy poco tiempo.

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

No pasó mucho tiempo antes de que Flash comenzara a adquirir otras funciones: además de los gráficos, llegaron el sonido y los efectos especiales, y más tarde la transmisión de video.

Aditivos en línea

El autor de este post se topó por primera vez con Macromedia Flash en 2001 cuando veía Masyanya, la respuesta rusa a Beavis and Butt-Head. Ese otoño, todos los lunes por la mañana, descargué y vi en línea un nuevo episodio de la caricatura, que duraba uno o dos minutos. El creador de Masyanya, Oleg Kuvaev, hizo la animación de los videos con Macromedia Flash y los subió a su sitio web específicamente como archivos ejecutables, con Flash Player y la propia animación incrustada en su interior. Esencialmente, este enfoque se adelantó a YouTube. Masyanya ilustra perfectamente la compacidad del formato: el sexto episodio de la serie (de nombre “Modem”) pesaba solo 600 kilobytes de tamaño, no olvides que con el software de reproducción ya incluido. El mismo episodio en formato de vídeo, con la calidad más básica, pesa el triple, a eso hay que sumar el reproductor.

La tecnología Macromedia Flash aumentó de forma significativa las capacidades de los navegadores de Internet en esos días, que en sí mismos no diferían en términos de contenido mostrado: solo texto e imágenes. Por ende, 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. O sea, los objetos Flash seguían siendo código ejecutado en la computadora; la única diferencia es que, tras la instalación del complemento, estos programas eran ejecutados al mismo tiempo que se cargaba el contenido web, sin que el usuario realizara alguna 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. Ahora, 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 objeto Flash. Para poder observar esto, veamos la evolución de las capacidades del sitio web.

Aquí está la primera página web, de 1990:

La primera página web de la historia. Sólo texto e hipervínculos. Fuente.

Aquí, un sitio web típico de 1996:

Portal de ¡Yahoo! en otoño de 1996. Texto y enlaces fijos, además de algunos elementos gráficos.

Y aquí otro sitio web con elementos Flash de 2000:

Website del PlayStation de Sony en el 2000. Un derroche de color, pero la mayoría de los elementos están hechos en HTML simple. El elemento central animado contiene fotos, animaciones y videos. Fuente.

Los diseñadores web de la época tenían diferentes prioridades: algunos se esforzaban por lograr una compatibilidad máxima, otros sacrificaban la compatibilidad por el bien de los gráficos. En el primer caso de 1996, incluso si un sitio tenía elementos Flash, todavía podía usarse sin ellos. En el segundo, un sitio necesitaba Flash; sin él nada funcionaba. Como este minisitio de Nike Air:

Primero, se ve bien. Toda la interfaz del sitio web de Nike Air de 2006 fue creado con Flash. No se abrió correctamente por no tener el complemento adecuado. Fuente.

Macromedia Flash amplió seriamente los límites de lo que era posible en el diseño de un sitio web. Esto desató las manos de los desarrolladores con respecto a la colocación de elementos animados, el uso de sonido y video, así como de efectos llamativos al navegar entre páginas.

Adobe Corporation compró Macromedia en 2006. Pronto, Flash se utilizaba para crear juegos completos que eran ejecutados directamente en el navegador, un paso 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. 2005 vio el lanzamiento de YouTube. El cual también usó Flash Player para entregar videos.

Una consecuencia negativa fue que los anunciantes se dejaron llevar por la creación de llamativos banners basados ​​en Macromedia/Adobe Flash. Debido a que estos todavía programas eran ejecutados en la computadora del usuario, a veces ejercían una gran carga en el sistema, lo que alentaba seriamente otros programas. En algunos navegadores y complementos para ellos, aparecía la opción de desactivar Flash por defecto. No obstante, como rápidamente se descubrió, los banners eran el menor de los muchos problemas que aguardaban al mundo informático dominado por Flash.

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 primeros tiempos de la web moderna. A principios de la década de 2000, notificar a los usuarios y clientes sobre las vulnerabilidades no era una práctica usual. En el archivo de boletines y avisos de Adobe, que incluye datos de la era de Macromedia, la primera entrada sobre una vulnerabilidad de Flash Player aparece en 2002. 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 la 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, usualmente requerían poca o ninguna acción por parte del usuario. Basta con atraer a la víctima a un sitio web que tenga incrustado un objeto Adobe Flash malicioso. Algunos ataques comprometieron los sistemas de distribución de anuncios, lo que provocó que contenido malicioso apareciera repentinamente en sitios web visitados por millones de usuarios.

No por nada hemos enfatizado que los objetos Flash son esencialmente programas que se envían a la máquina de un usuario y es allí donde se ejecutan. Una consecuencia de la amplia gama de capacidades de la tecnología fue la aparición de incontables lagunas a través de las cuales los atacantes podían obtener el control total de una computadora. Para 2005, Flash era la tecnología más popular para ejecutar aplicaciones web.

“No hay problema”, pensamos en 2022. Solo hay que entregar una actualización a todos los usuarios. Pero las actualizaciones automáticas de Flash Player aparecieron hasta el final de la vida útil de la tecnología; en la década de 2000 simplemente no existían. En aquel entonces, debías visitar el sitio web de Adobe, descargar la nueva versión e instalarla de forma manual. 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 con otras tres) en un boletín de Microsoft, porque el código de Adobe podría distribuirse con Windows XP. El mismo Microsoft manejó sus actualizaciones, y su proceso para entregar e instalar parches tampoco fue ideal.

Lo grave que era la situación de entrega de actualizaciones es evidente en un informe de Kaspersky de 2012. Ese año, Adobe Flash Player encabezaba las listas por la cantidad de vulnerabilidades encontradas en las computadoras 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 instalaron. Con cada agujero de seguridad descubierto, 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, al menos para la mayoría de los usuarios, tomó de tres semanas a dos meses, algo inaudito 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, pro ahora de 2015. En él se enumeran 13 vulnerabilidades nuevas en Flash Player, que se sabía eran usadas (junto con otras que eran antiguas, pero aún estaban activas) en los llamados paquetes de explotación: kits que contienen múltiples exploits para atacar vulnerabilidades en el software en las computadoras 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, de acuerdo con los expertos de Kaspersky, una vulnerabilidad de Flash. 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 en línea.

Un funeral de 10 años

Para mediados de la década de 2010, Adobe Flash ya era considerado como obsoleto. Quizás la primera declaración de alto perfil contra Flash fue la carta abierta “Pensamientos sobre Flash” del fundador y CEO de Apple, Steve Jobs. Después de pasar por crisis permanentes en los años noventa, para 2010 Apple estaba bien asentada: en 2007 se lanzó el primer iPhone, seguido en 2010 por el primer iPad, que, a diferencia de las tabletas de 1993, tuvo éxito. Inicialmente, el iPhone carecía de muchas de las funciones que se encontraban en otros teléfonos inteligentes. Particularmente, no era compatible con Flash y, por ende, no podía mostrar sitios que usaran esa tecnología. A finales de la década de 2000, este fue un argumento serio a favor de los teléfonos inteligentes Symbian de Nokia y los primeros dispositivos Android, los cuales 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 propietaria, 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, videos y elementos web en el teléfono inteligente se habrían ralentizado o bloqueado. ¡Y la culpa habría sido fabricante del teléfono!

También existieron otros argumentos. A diferencia de las computadoras 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 ese 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 los desarrolladores individuales, de los cuales había varios miles. Y Apple, un fanático del control, no pudo tolerarlo.

Otras empresas de tecnología tampoco querían depender del software propiedad de un competidor. La forma normal en que interactúan los actores del mercado es mediante la colaboración en un estándar abierto. ¡Pero eso todavía requería que todos aceptaran este estándar! Y esto no fue fácil. Algunos intentaron replicar el éxito de Flash y crear su propio formato patentado. Microsoft, particularmente, 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.” Describe los intentos de varios actores de la industria para lidiar con la “gran vulnerabilidad” que se conoce con el nombre de Adobe Flash Player. Ese mismo año, los desarrolladores de Firefox, el navegador, deshabilitaron el complemento para reproducir contenido Flash de forma predeterminada. Chrome declaró que deshabilitaría el contenido Flash “sin importancia” de los sitios web (léase: banners de video que sobrecargan seriamente el sistema). Alex Stamos, 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 videos. De hecho, el estándar abierto HTML5 estaba en posición de reemplazar a Flash como la herramienta universal para crear sitios web interactivos 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 computadoras antiguas con navegadores antiguos, o los desarrolladores de sitios 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 período de transición de tres años. Todos los navegadores populares, de forma 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 del lado del usuario para Flash. Después de hoy, los navegadores modernos ya no reproducen contenido Flash, incluso si lo deseas y tienes instalado Flash Player, y la última versión incluso bloquea su ejecución.

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

Sin embargo, la era Flash todavía no termina. Cuarenta días después de que se retiró Flash, publicamos una revisión de la situación actual con respecto a la tecnología. Resultó que algunas aplicaciones corporativas todavía estaban vinculadas a él y ya no se actualizaban. Esta tecnología todavía se usa ampliamente, 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. Solo podemos esperar que sepan lo que están haciendo. Como mínimo, no hay que usar dichos navegadores en computadoras 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 decenas de miles de personas se ha vuelto inaccesible.

Nadie tiene la culpa… casi

Es totalmente entendible por qué Adobe tardó tanto en anunciar el fin de la vida útil de Adobe Flash. El soporte para la tecnología en la gran mayoría de las 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. Es esencialmente 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 fue maldecida 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 de la computadora, y cualquier error de codificación importante tenía consecuencias igualmente importantes. Un buen ejemplo fue el error en el reproductor que permitía que cualquier sitio accediera a la cámara web del usuario. Lidiar con un legado de este tipo (código antiguo que era inseguro por su diseño) no es una tarea sencilla. La reparación también es complicada: cualquier tecnología de optimización o seguridad pone en peligro la compatibilidad con millones de aplicaciones Flash en miles de sitios web.

No es que Adobe no lo haya intentado. Tras el descubrimiento de la primera vulnerabilidad 10.0 en 2008, Adobe corrigió docenas de vulnerabilidades críticas en Flash Player, cada año, hasta 2011. Pero parece que adaptar Flash a las ideas en evolución sobre la seguridad en Internet fue demasiado. Los navegadores actuales no necesitan ningún complemento para mostrar casi cualquier contenido en línea. 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 los sitios web entre sí y de otros programas en el dispositivo, ya sea una computadora, un smartphone o una tableta. Claramente están haciendo un buen trabajo, pero, por desgracia, los ciberdelincuentes también han mejorado sus herramientas. Solo en Google Chrome en 2022, 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 ahora. Transformó las páginas web de una aburrida colección de sitios basados en texto en algo, bueno, más llamativo. Flash ayudó a hacer realidad el sueño de un universo virtual, tal como lo concibieron los libros y películas de ciencia ficción de la década de 1990. Para algunos, el diseño de sitios web en la década de 2000 era demasiado llamativo, demasiado atrevido, demasiado directo. Durante la década siguiente, el estilo general de los sitios y las aplicaciones se suavizó, mientras que Internet se convirtió en una parte indispensable de la vida moderna. Adobe Flash fue fundamental durante este período, la llamada era romántica de Internet. Puede haber sido tosco en los bordes, propenso a derramar sus datos a través de un clic descuidado, pero siempre seguirá siendo una parte esencial de la historia temprana de la web.

Consejos