FlawOpen

flawopen.com/Incidents/polyfill-io-supply-chain-incident-june-2024

● Polyfill.io service · CWE-829 · June 2024 · Alta
Investigación · FlawOpen

Ataque a la cadena de Polyfill.io (2024)

Incidente de 2024: polyfill.io redirigió a algunos visitantes. Elimina la referencia al CDN; no se asignó una CVE.

💡 Explicación en Lenguaje Sencillo (ELI5)

Imagina que un restaurante pone en cada mesa una botella de un proveedor externo. Si el proveedor cambia el contenido, puede afectar a quienes la usan aunque el restaurante no cambie su menú.

Conceptos Clave y Términos

Dynamic User-Agent Polyfilling
Distribución de paquetes de JavaScript adaptados según los encabezados del navegador, lo que imposibilita los hashes de Subresource Integrity (SRI).
Conditional Payload Evasion
Análisis de Referer HTTP, tamaño de pantalla, user-agent y devtools para entregar scripts limpios a desarrolladores mientras se ataca a usuarios móviles reales.
Domain Ownership Transfer Risk
El peligro inherente de incrustar scripts de terceros desde dominios que pueden ser adquiridos, expirar o transferirse sin consentimiento.
Subresource Integrity (SRI)
Mecanismo criptográfico del navegador que valida los hashes de los scripts antes de su ejecución.

Mapeos de marcos

  • Referencia CWE para la debilidad descrita en esta guía: CWE-829

Cronología del Incidente

Febrero de 2024

Sansec informó del cambio de propietario del dominio y la cuenta de GitHub; Fastly ofreció una alternativa preventiva.

25 de junio de 2024

Sansec publicó su análisis y estimó más de 100.000 sitios expuestos según su propia medición.

26–27 de junio de 2024

Cloudflare anunció reescrituras automáticas hacia su espejo; después se suspendió el dominio. Elimina las referencias antiguas en vez de depender de reescrituras temporales.

Flujo de Ataque Paso a Paso

Paso 1

Cambio de control

Sansec informó que el dominio polyfill.io y la cuenta de GitHub cambiaron de manos en febrero de 2024. Fastly ofreció una alternativa preventiva antes de que se denunciaran respuestas maliciosas. Más tarde, Fastly indicó que supo del ataque cuando Sansec publicó su informe; la alternativa de febrero fue preventiva y no demuestra que conociera actividad maliciosa.

Paso 2

El sitio carga el CDN

Una página que referencia cdn.polyfill.io hace que el navegador solicite y ejecute el JavaScript recibido en el contexto de esa página.

Paso 3

Redirección condicional observada

La muestra analizada por Sansec redirigía condicionalmente a algunos visitantes móviles. Esto describe esa muestra, no todas las respuestas del CDN.

Paso 4

Mitigaciones y respuesta

Cloudflare reescribió referencias hacia su espejo; Fastly ofreció una alternativa independiente. Sansec informó de anuncios de Google Ads rechazados en algunos comercios, no de una penalización general en la búsqueda orgánica.

Código Fuente: Vulnerable vs. Seguro

IMPLEMENTACIÓN VULNERABLE
<!-- VULNERABLE: Direct 3rd-party CDN script without integrity verification -->
<!DOCTYPE html>
<html>
<head>
  <title>Production Web App</title>
  <!-- Polyfill CDN serves arbitrary dynamic code controlled by third party -->
  <script src="https://cdn.polyfill.io/v3/polyfill.min.js?features=default,Array.prototype.flat"></script>
</head>
<body>
  <h1>Welcome</h1>
</body>
</html>
PARCHE SEGURO Y ROBUSTO
<!-- Build this file from a reviewed, version-pinned dependency. -->
<script defer src="/assets/vendor/polyfills.min.js"></script>

Lista de Verificación de Seguridad para Ingeniería

Fuentes