flawopen.com/Incidents/polyfill-io-supply-chain-incident-june-2024
Polyfill.io-Lieferkettenangriff (2024)
Vorfall 2024: polyfill.io leitete einige Besucher um. Entfernen Sie den CDN-Verweis; es wurde keine CVE vergeben.
Stellen Sie sich ein Restaurant vor, das auf jeden Tisch eine Flasche eines externen Lieferanten stellt. Ändert der Lieferant den Inhalt, kann das Gäste treffen, obwohl das Restaurant seine Speisekarte nicht ändert.
Kernkonzepte & Begriffe
Dynamic User-Agent Polyfilling- Bereitstellung maßgeschneiderter JavaScript-Pakete abhängig von den Browser-Headern des Clients, wodurch Subresource Integrity (SRI)-Hashes unmöglich werden.
Conditional Payload Evasion- Analyse von Referer, Bildschirmgröße, User-Agent und Entwicklertools, um Entwicklern saubere Skripte bereitzustellen, während echte mobile Endnutzer angegriffen werden.
Domain Ownership Transfer Risk- Die inhärente Gefahr beim Einbinden von Drittanbieter-Skripten von Domains, die ohne Zustimmung erworben, abgelaufen oder übertragen werden können.
Subresource Integrity (SRI)- Ein kryptografischer Browsermechanismus, der Skripthashes vor der Ausführung validiert.
Framework-Zuordnungen
- CWE-Referenz für die in diesem Leitfaden beschriebene Schwachstelle: CWE-829
Vorfall-Zeitstrahl
Sansec meldete den Besitzerwechsel von Domain und GitHub-Konto; Fastly bot vorsorglich eine Alternative an.
Sansec veröffentlichte seine Analyse und schätzte anhand eigener Messungen über 100.000 betroffene Websites.
Cloudflare kündigte automatische Umschreibungen auf sein Mirror an; später wurde die Domain gesperrt. Entfernen Sie alte Verweise, statt auf temporäre Umschreibungen zu vertrauen.
Schritt-für-Schritt Angriffsablauf
Eigentümerwechsel
Sansec berichtete, dass Domain und GitHub-Konto im Februar 2024 den Besitzer wechselten. Fastly bot vorsorglich eine Alternative an, bevor bösartige Antworten gemeldet wurden. Fastly erklärte später, erst mit Sansecs Bericht von dem Angriff erfahren zu haben; die Alternative im Februar war eine Vorsichtsmaßnahme und kein Hinweis auf damalige Kenntnis bösartiger Aktivitäten.
Website lädt das CDN
Eine Seite mit Verweis auf cdn.polyfill.io veranlasst den Browser, das gelieferte JavaScript abzurufen und im Kontext dieser Seite auszuführen.
Bedingte Weiterleitung beobachtet
Die von Sansec untersuchte Probe leitete bestimmte mobile Besucher bedingt weiter. Das beschreibt die Probe, nicht jede Antwort des CDN.
Gegenmaßnahmen und Reaktion
Cloudflare schrieb Verweise auf sein Mirror um; Fastly bot eine separate Alternative. Sansec meldete abgelehnte Google-Ads-Anzeigen bei einigen Shops, keine allgemeine Abstrafung in der organischen Suche.
Quellcode: Verwundbar vs. Sicher
<!-- 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><!-- Build this file from a reviewed, version-pinned dependency. -->
<script defer src="/assets/vendor/polyfills.min.js"></script>Checkliste für Engineering & Systemsicherheit
- ✓Niemals load third-party scripts from public CDNs into production applications without Subresource Integrity (SRI) hashes.
- ✓Empfohlene Sicherheitsmaßnahme: Vendor all runtime polyfills and libraries directly into your application bundle via npm/yarn/pnpm lockfiles.
- ✓Erzwingen Sie a strict Content Security Policy (CSP) with script-src 'self' to prevent unauthorized script injections.
- ✓Prüfen Sie all domain assets periodically to ensure embedded hosts have not lapsed or transferred ownership.
- ✓Betrachten Sie SRI nicht als Ersatz für die Prüfung der Abhängigkeitskontrolle; verwenden Sie es nur bei stabilen Bytes und verifiziertem Hash.