Fehlende Subresource Integrity - 4200 Websites durch geändertes Browsealoud-Script gehackt - darunter Websites der britischen und der US-Regierung - Ziel Monero per Coinhive-Script schürfen

13.02.2018 23:52:39, Jürgen Auer, keine Kommentare

Über manche Dinge kann man nur den Kopf schütteln. Da gibt es ein Tool namens Browsealoud, das eigentlich nützlich ist. Es kann auf Websites genutzt werden, um Websiteinhalte vorzulesen. Eingebunden wird es per JavaScript, verantwortlich ist der britische Anbieter Texthelp.

Irgendwie gelang es Kriminellen, sich Zugang zu deren Server zu verschaffen und das Script zu ändern.

Ergebnis: Das Coinhive-Script wurde eingebunden und schürfte am Sonntag Monero, eine Kryptowährung. Das auf etwa 4.200 Sites, darunter diversen Regierungen, Universitäten und öffentlichen Einrichtungen.
.

UK ICO, USCourts.gov... Thousands of websites hijacked by hidden crypto-mining code after popular plugin pwned

http://www.theregister.co.uk/2018/02/11/browsealoud_compromised_coinhive/

.
Der Text vermutet entweder gehackte Server oder Interne, die sich rächen wollten.

> For several hours today, anyone who visited a site that embedded Browsealoud inadvertently ran this hidden mining code on their computer, generating money for the miscreants behind the caper.

Eine Scriptsuchmaschine findet aktuell 4300 Websites, die das Script eingebunden haben, darunter cuny.edu und in.gov, das scheint die offizielle Site von Indiana zu sein. Auch dublincity.ie und manchester.gov.uk sind vorne mit dabei.

Gefunden hatte das Scott Helme:

https://twitter.com/Scott_Helme/status/962684239975272450

> Ummm, so yeah, this is *bad*. I just had @phat_hobbit point out that @ICOnews has a cryptominer installed on their site...

Etwas später weist er darauf hin, daß man mit Content Security Policy (CSP) und Subresource Integrity so etwas komplett verhindern könne.

Das greift auch der Artikel auf. Das Prinzip bei Subresource Integrity ist simpel: Über die extern eingebundene Datei wird ein Hashwert berechnet, der zusätzlich lokal abgelegt wird. Der Browser kann den Hashwert ebenfalls berechnen. Weicht dieser vom Wert in der Seite ab, wird das Script nicht ausgeführt.

> If any one of these outside resources is hacked or tampered with to perform malicious actions, such as mine crypto-coins, all the websites relying on that compromised resource will end up pulling the evil code onto their pages and into visitors' browsers.

Wenn Sites diversen Code von anderen Sites laden und eine dieser Quellen gehackt wird: Dann führen alle Sites, die diesen Code einbinden, den Hackercode aus.

Wobei man da schon sagen muß: Kryptomining ist bald noch harmlos. Da gibt es weitaus heiklere Dinge.

Beim W3C ist das standardisiert:

Subresource Integrity

https://www.w3.org/TR/SRI/

Die Technik ist simpel:

> <script src="https://example.com/example-framework.js"
> integrity="sha384-Li9vy3DqF8tnTXuiaAJuML3ky+er10rcgNR/VqsVpcw+ThHmYcwiB1pbOxEbzJr7"
> crossorigin="anonymous"></script>

Mit dem crossorigin-Attribut "anonymous" wird festgelegt, daß keine weiteren Daten (etwa Cookies) an diese Website geschickt werden.

Scott Helme:

> "There's a technology called SRI (Sub-Resource Integrity) designed to fix exactly this problem, and unfortunately it seems that none of the affected sites were using it."

Subresource Integrity löst genau dieses Problem. Offenbar haben diverse Sites das nicht eingesetzt.

Natürlich macht SRI keinen Sinn, wenn sich solche Scripte "ständig ändern". Aber üblicherweise sind das statische Dinge, die sich gerade nicht ständig ändern. Etwa dann, wenn man ein JavaScript von einem Content Delivery Network holt, das seit Jahren unverändert ist. Änderungen werden meist über eine neue Version verteilt, so daß sich auch der Dateiname ändert.

Der Blogbeitrag von Scott Helme

Protect your site from Cryptojacking with CSP + SRI

https://scotthelme.co.uk/protect-site-from-cryptojacking-csp-sri/

zeigt Bildschirmphotos. Da wurden Websites komplett heruntergefahren. Eine Einschränkung: SRI ist noch "relativ neu" und wird vom IE / Edge und Safari noch nicht unterstützt.

*
* (wird nicht angezeigt)
Die Erläuterungen zum Datenschutz habe ich gelesen und stimme diesen zu.