¿Qué significa "el ataque mediante Polyfill"?
3 de jul. de 2024 - #Informática
Es posible que esta semana os hayan asustado titulares como “El ataque mediante cadena de suministro de Polyfill.io
ha afectado a más de 100.000 páginas web”, y más allá de que se supone que debe dar miedo, no habéis entendido de que va la copla. Esta semana trataré de explicarlo de una forma relativamente sencilla.
Un poco de historia
El primer paso es que entendáis qué es Polyfill
. En nuestros equipos informáticos con conexión a Internet tenemos al menos un progama llamado “navegador”, con el que podemos acceder a diferentes páginas web con contenido diverso. Por poneros algunos ejemplos más habituales, podemos mencionar Mozilla Firefox, Google Chrome o Safari. Estos programas tienen la capacidad de interpretar código que nos llega en ficheros cuyo nombre termina .html
, .css
y .js
.
Los lenguajes de programación en los que están escritos estos ficheros han ido evolucionando con el tiempo. Mientras escribo esto, lo más habitual es escribir los .html
siguiendo el estándar HTML5, pero hace unos años lo normal era emplear HTML4. Así, un navegador moderno que abra una una página HTML4 no tendrá problemas para leerla, pero uno antiguo que no haya recibido actualizaciones (por ejemplo, el que trae la videoconsola Nintendo 3D) en su estado normal tendrá problemas con algunas instrucciones de HTML5. Aún así, muchas veces no notamos esa limitación porque se empleaba un truco: la página web podía traer una serie de ficheros que hacían la labor de un “diccionario entre 2 idiomas”, para poder interpretar adecuadamente las instrucciones que le faltaban al “diccionario que trae de serie” el navegador. Uno de esos “diccionarios” se llama Polyfill.
Muchas de estos “diccionarios” están disponibles en sitios web centrales con un servicio de disponibilidad y actualización muy buenos, llamadas CDN (Content delivery network o Red de Distribución de Contenidos). Por ese motivo, muchísimas webs las enlazan, ahorrándose trabajo (mantenerlos al día requiere tiempo y esfuerzo) y coste de tráfico (si lo paga otro, eso que te ahorras, ¿no?). Por esa razón, muchos desarrolladores han recurrido a polyfill.io
durante años, y es que era muy cómodo, ¡que viva “la Nube de Internet”!
El ataque
En febrero 2024, la compañía Funnul se hizo con el dominio polyfill.io
, y el 24 de junio de 2024 modificó el contenido que había en esa dirección añadiendo código malicioso. Esto es lo que en seguridad informática se llama “un ataque mediante cadena de suministro”: todas las páginas que lo referencian ahora sirven un código malicioso que infecta dispositivos móviles (insértese a una señora que grita “¡virus, virus!”).
El desarrollador original de polyfill
avisó:
Si tu página web utiliza
polyfill.io
, elimínalo INMEDIATAMENTE.
Creé el proyecto de serviciopolyfill
, pero nunca fui propietario de dominio ese dominio, ni tuve influencia sobre su venta.La mayor parte de las funcionalidades que añadía a la plataforma web fueron rápidamente adoptadas por la mayoría de los navegadores mayoritarios, con algunas excepciones que en general a día de hoy ya no se pueden manejar mediante polyfill, como “Web Serial” y “Web Bluetooth”.
→ Fuente: Andrew Betts
¿Qué opino sobre Polyfill?
Cualquier medio que ayude a combatir la obsolescencia programada de los dispositivos es loable, y creo que este ataque va a tener consecuencias tristes en ese sentido. Como dice el desarrollador original, la mayoría de los navegadores modernos no necesitan Polyfill
, pero este señor se olvida de aquellos sistemas que tienen unos años, y son perfectamente funcionales. A esos se les ha hecho una buena faena a medio o largo plazo si se elimina la referencia en vez de invocar una fuente alternativa que “truque” su navegador.
¿Qué puedo hacer yo?
- A nivel de usuario que navega por Internet, la extensión ublock origin bloquea este dominio. Hay soluciones de antivirus que también lo bloquean.
- Si tienes una página web “de elaboración propia” que puede referenciar a nivel de código hacia dicha dirección, deberías deshacerte de ese enlace cuanto antes. Si no quieres renunciar a las funcionalidades de ese paquete, porque has decidido tener en cuenta a cualquier navegador que no sea ni tan moderno ni tan estándar, puedes referenciar el código en
polyfill-fastly.io
. En mi humilde opinión, si quieres menos dolores de cabeza a largo plazo, lo mejor es depender lo mínimo posible de terceros y servir esas funcionalidades desde tu propia página web. Obviamente esto tiene un coste por el tráfico extra desde tu sitio, por lo que cada uno hará su valoración sobre si le compensa esta medida, o no.