{"id":296696,"date":"2024-06-28T08:56:02","date_gmt":"2024-06-28T06:56:02","guid":{"rendered":"https:\/\/www.borncity.com\/blog\/?p=296696"},"modified":"2024-06-28T13:14:59","modified_gmt":"2024-06-28T11:14:59","slug":"polyfill-lieferkettenangriff-gefhrdet-100-000-webseiten","status":"publish","type":"post","link":"https:\/\/borncity.com\/blog\/2024\/06\/28\/polyfill-lieferkettenangriff-gefhrdet-100-000-webseiten\/","title":{"rendered":"Polyfill: Lieferkettenangriff gef&auml;hrdet 100.000 Webseiten"},"content":{"rendered":"<p><img decoding=\"async\" style=\"float: left; margin: 0px 10px 0px 0px; display: inline;\" title=\"Sicherheit (Pexels, allgemeine Nutzung)\" src=\"https:\/\/borncity.com\/blog\/wp-content\/uploads\/2021\/04\/Sicherheit_klein.jpg\" alt=\"Sicherheit (Pexels, allgemeine Nutzung)\" width=\"200\" align=\"left\" \/>Es gab einen Lieferketten-Angriff gegen das JavaScript-Framework Polyfill, und der neue chinesische Besitzer hat begonnen, Malware \u00fcber das Content Delivery Network dieser Domain auszuliefern. Google hat zwar begonnen, ADs zu blockieren, wenn Webseiten Polyfill verwenden. Sicherheitsforscher gehen aber davon aus, dass mehr als 100.000 Webseiten gef\u00e4hrdet sind.<\/p>\n<p><!--more--><\/p>\n<h2>Was ist Polyfill?<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vg09.met.vgwort.de\/na\/85916809b9624461b592848c437d4f4b\" alt=\"\" width=\"1\" height=\"1\" \/>Bei <a href=\"https:\/\/de.wikipedia.org\/wiki\/Polyfill\" target=\"_blank\" rel=\"noopener\">polyfill<\/a>.js handelt es sich um eine beliebte Open-Source-Bibliothek zur Unterst\u00fctzung \u00e4lterer Browser. Der JavaScript-Code soll in \u00e4lteren Browsern neuere, von diesen nicht unterst\u00fctzte Funktionen mittels eines Workarounds nachr\u00fcsten. Beispielsweise sind Features von HTML5 und CSS in \u00e4lteren Browsern nicht verf\u00fcgbar.<\/p>\n<p>Polyfill-JavaScript-Code bzw. Polyfill-Skripte im Allgemeinen lassen sich direkt in das HTML-Dokument eines Webprojekts einbetten. Dabei integrieren sie sich nahtlos in den bestehenden Quellcode und werden bei korrekter Programmierung nur dann ausgef\u00fchrt, wenn der zugreifende Browser das jeweilige Webfeature tats\u00e4chlich nicht unterst\u00fctzt. IONOS hat <a href=\"https:\/\/www.ionos.de\/digitalguide\/websites\/web-entwicklung\/polyfill\/\" target=\"_blank\" rel=\"noopener\">hier<\/a> eine umfangreichere Beschreibung zu Polyfill erstellt.<\/p>\n<p>Nennenswerte Nutzer sind JSTOR, Intuit und das Weltwirtschaftsforum. Polyfill wird auch in verschiedenen Webpaketen wie Magento (eCommerce-Shop) oder WordPress (CMS) eingesetzt. Hier ist aber ein genauer Blick erforderlich, was genau eingesetzt wird.<\/p>\n<h2>Lieferkettenangriff, was ist passiert?<\/h2>\n<p>Es gibt eine Domain <em>poliyfill.io<\/em>, die den Polyfill-JS-Code \u00fcber ein Content-Delivery-Network ausliefert. Im Februar 2024 ging diese Domain und das GitHub-Konto an einen chinesischen Eigent\u00fcmer und jetzt liefert dieser \u00fcber <em>cdn.poliyfill.io<\/em> Malware aus. Die betreffende Information ist mir bereits vor Tagen untergekommen (Urlaubs-bedingt habe ich es nicht thematisiert).<\/p>\n<p><a href=\"https:\/\/sansec.io\/research\/polyfill-supply-chain-attack\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" title=\"Polyfill supply chain attack\" src=\"https:\/\/i.postimg.cc\/tJQ3dbYx\/image.png\" alt=\"Polyfill supply chain attack\" \/><\/a><\/p>\n<p>Die Leute von Sansec haben den Sachverhalt im Artikel <a href=\"https:\/\/sansec.io\/research\/polyfill-supply-chain-attack\" target=\"_blank\" rel=\"noopener\">Polyfill supply chain attack hits 100K+ sites<\/a> dokumentiert. Der Polyfill-Code wird dynamisch auf der Grundlage der HTTP-Header generiert, so dass verschiedene Angriffsmethoden denkbar sind. Die Leute von Sansec haben eine bestimmte Malware entschl\u00fcsselt und dokumentiert, die mobile Nutzer \u00fcber eine gef\u00e4lschte Google-Analytics-Domain (www.googie-anaiytics.com) auf eine Sportwettseite umleitet. Der Code verf\u00fcgt \u00fcber einen speziellen Schutz gegen Reverse Engineering und wird nur auf bestimmten mobilen Ger\u00e4ten zu bestimmten Zeiten aktiviert. Er wird auch nicht aktiviert, wenn er einen Admin-Benutzer erkennt. Au\u00dferdem verz\u00f6gert er die Ausf\u00fchrung, wenn ein Webanalysedienst gefunden wird, vermutlich um nicht in den Statistiken zu landen.<\/p>\n<p>Google hat bereits am 25. Juni 2024 damit begonnen, Google Ads f\u00fcr eCommerce-Seiten zu blockieren, die<em> polyfill.io<\/em> verwenden. Und die Sansec-Webseite ist inzwischen Ziel von DDoS-Angriffen um deren Infrastruktur und den Artikel aus dem Internet zu bekommen. Im Tweet wird erw\u00e4hnt, dass diese Seite in Magento-Modulen eingebettet wird und so \u00fcber 110.000 Webseiten betroffen seien. Sansec hat die Details der ausgelieferten Malware in seinem Artikel dokumentiert. Hinweise auf dieses Verhalten wurden schnell aus dem Github-Repository entfernt (<a href=\"https:\/\/web.archive.org\/web\/20240229113710\/https:\/\/github.com\/polyfillpolyfill\/polyfill-service\/issues\/2834\" target=\"_blank\" rel=\"noopener\">Archiv hier<\/a>).<\/p>\n<p>Die Kollegen von Bleeping Computer haben den Sachverhalt <a href=\"https:\/\/www.bleepingcomputer.com\/news\/security\/polyfillio-javascript-supply-chain-attack-impacts-over-100k-sites\/\" target=\"_blank\" rel=\"noopener\">hier<\/a> zeitnah dokumentiert. Die Domain <em>polyfill.io<\/em> wurde vom Registrar Namecheap abgeschaltet, nachdem Forscher den Malware-Befall aufgedeckt hatten. Zudem hat Clouflare damit begonnen, die Polyfill-Codebestandteile aus ausgelieferten Webseiten zu entfernen. Bleeping-Computer hat dies in <a href=\"https:\/\/www.bleepingcomputer.com\/news\/security\/cloudflare-we-never-authorized-polyfillio-to-use-our-name\/\" target=\"_blank\" rel=\"noopener\">diesem Beitrag<\/a> aufgegriffen und einige Informationen dazu zusammengetragen.<\/p>\n<p>Laut <a href=\"https:\/\/www.bleepingcomputer.com\/news\/security\/polyfill-claims-it-has-been-defamed-returns-after-domain-shut-down\/\" target=\"_blank\" rel=\"noopener\">diesem Bleeping Computer-Beitrag<\/a> haben die Besitzer der Domain Polyfill.io den JavaScript-CDN-Dienst auf einer neuen Domain wieder gestartet (siehe <a href=\"https:\/\/x.com\/Polyfill_Global\/status\/1805923380857897277\" target=\"_blank\" rel=\"noopener\">dieser Tweet<\/a>). Weiterhin behaupten sie, der Polyfill-Dienst sei \"b\u00f6swillig verleumdet\" worden und es habe \"Medienmeldungen gegeben, die Polyfill verleumden\" (siehe auch <a href=\"https:\/\/x.com\/Polyfill_Global\/status\/1806303137034330231\" target=\"_blank\" rel=\"noopener\">diesen Tweet<\/a>). Der Dienst als solcher d\u00fcrfte aber verbrannt sein und es gibt die Empfehlung, diesen Dienst aus Webprojekten auszubauen.<\/p>\n<h2>Polyfill ist nicht polyfill.io<\/h2>\n<p>Ich habe mal kurz im Quellcode des Blogs nachgesehen &#8211; auch in WordPress wird Polyfill verwendet &#8211; und in <a href=\"https:\/\/clicknathan.com\/2024\/02\/01\/why-wordpress-use-of-polyfill-min-js-is-irresponsible\/\" target=\"_blank\" rel=\"noopener\">diesem Artikel<\/a> beschreibt jemand diesen Einsatz als unverantwortlich. Denn viele Experten sind der Meinung, dass Polyfill l\u00e4ngst nicht mehr ben\u00f6tigt wird und eigentlich entfernt geh\u00f6rt. Dem kann ich mich anschlie\u00dfen, aber ob eine Seite durch den Polyfill-Lieferkettenangriff gef\u00e4hrdet ist, h\u00e4ngt davon ab, ob<em> cdn.polyfill.io<\/em> eingebettet wurde. heise hat es in <a href=\"https:\/\/www.heise.de\/news\/Jetzt-handeln-Schadcode-ueber-CDN-des-JavaScript-Service-Polyfill-io-verteilt-9778256.html\" target=\"_blank\" rel=\"noopener\">diesem Artikel<\/a> thematisiert, die Seiten, die sich auf diese Domain st\u00fctzen, binden den Code des chinesischen Anbieters ein. Es gibt aber von Fastly und Cloudflare Alternativen zum oben genannten Dienst.<\/p>\n<p>Denn nur diese (inzwischen abgeschaltete) Domain bzw. das CDN ist unter chinesischer Kontrolle und liefert(e) sporadisch Malware aus. Das Open-Source-Projekt selbst ist nicht betroffen.<\/p>\n<p>In WordPress werden die Polyfill-Routinen aber direkt als <em>.js<\/em>-Dateien aus diesem Open Source-Projekt eingebunden (siehe folgenden Codeauszug sowie den Screenshot), haben also mit obigem CDN nichts zu tun.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"Polyfill in WordPress\" src=\"https:\/\/i.postimg.cc\/0572D7Tz\/image.png\" alt=\"Polyfill in WordPress\" width=\"623\" height=\"604\" \/><\/p>\n<pre>&lt;script type=\"text\/javascript\" src=\"https:\/\/borncity.com\/blog\/wp-includes\/js\/dist\/vendor\/wp-polyfill-inert.min.js?ver=3.1.2\" id=\"wp-polyfill-inert-js\"&gt;&lt;\/script&gt;\r\n...\r\n&lt;script type=\"text\/javascript\" src=\"https:\/\/borncity.com\/blog\/wp-includes\/js\/dist\/vendor\/wp-polyfill.min.js?ver=3.15.0\" id=\"wp-polyfill-js\"&gt;&lt;\/script&gt;<\/pre>\n<p>Daher gibt es diesbez\u00fcglich imho auch keine Gef\u00e4hrdung von WordPress-Seiten. Ich bin aber gespannt, ob der Vorfall dazu f\u00fchrt, dass der Polyfill-JS-Code k\u00fcnftig in WordPress ausgebaut wird.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es gab einen Lieferketten-Angriff gegen das JavaScript-Framework Polyfill, und der neue chinesische Besitzer hat begonnen, Malware \u00fcber das Content Delivery Network dieser Domain auszuliefern. Google hat zwar begonnen, ADs zu blockieren, wenn Webseiten Polyfill verwenden. Sicherheitsforscher gehen aber davon aus, &hellip; <a href=\"https:\/\/borncity.com\/blog\/2024\/06\/28\/polyfill-lieferkettenangriff-gefhrdet-100-000-webseiten\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[426],"tags":[4328],"class_list":["post-296696","post","type-post","status-publish","format-standard","hentry","category-sicherheit","tag-sicherheit"],"_links":{"self":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/296696","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/comments?post=296696"}],"version-history":[{"count":0,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/296696\/revisions"}],"wp:attachment":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/media?parent=296696"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/categories?post=296696"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/tags?post=296696"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}