Sie wurden von einem Plugin gehackt

Ich habe gerade eines meiner Discourse-Foren neu erstellt und als ich es im Browser lade, erscheint folgende Meldung in einem Popup:

You’ve been hacked by a plugin! by w3shi(Hackerone)-S.Lakshmi Vignesh(RCE-POC)

Heiliger… Was ist los? Eines der Plugins, das ich verwende, wurde kompromittiert?

3 „Gefällt mir“

Haben Sie zufällig das Migrate Password Plugin verwendet? Oder ein anderes Plugin aus dem discoursehosting-Repository?

Sieht so aus, als wäre dieses Forum auch betroffen gewesen Am I hacked? or not - Forum Management - Suggestions - DxO Forum

2 „Gefällt mir“

Ja, es ist in der Liste. Und das einzige von discoursehosting.

Ich erinnere mich, dass es aktiv sein muss, um “alten” Benutzern die Anmeldung zu ermöglichen, richtig?

Aber jetzt ist die Frage eher, ob die Installation kompromittiert wurde oder ob nur diese Meldung angezeigt wird. Die Seite ist im Moment zur Sicherheit heruntergefahren.

Zusammen mit diesem Plugin ist hier die Liste, was ich verwende:

Entfernen Sie einfach alles, was sich auf discoursehosting bezieht

9 „Gefällt mir“

Google Translate des französischen Forum-Posts:

Ein Pseudo-Sicherheitsforscher hat ein altes Git-Repository für ein Plugin, das vom Forum verwendet wird, abgerufen und es gekapert, um einfach diese Nachricht anzuzeigen.

Das betreffende Repository (GitHub - discoursehosting/discourse-migratepassword: A touch of security) wurde inspiziert und es sind keine bösartigen Codes vorhanden (es ist lediglich ein Proof of Concept).

Dieses Repository hatte tatsächlich seine URL geändert (es ist jetzt verfügbar unter GitHub - communiteq/discourse-migratepassword: Support migrated password hashes) und der Benutzer hat einfach das Repository discoursehosting/discourse-migratepassword, das zuvor auf communiteq/discourse-migratepassword weitergeleitet hat, neu erstellt, um dort nicht verwandten Code zu platzieren. Wir haben die alte URL verwendet, weshalb wir betroffen waren.

Wenn das stimmt, okay… Ich habe die URL des Plugins auf communiteq geändert und baue es gerade neu. Aber ich muss mir das genauer ansehen (da ich kein Programmierer bin, kann ich mir nicht zu 100 % sicher sein).

5 „Gefällt mir“

TL;DR

Dies ist eine Github-Schwachstelle in einer Exploit-Klasse namens „Repojacking“.

Wir empfehlen allen, ihre Github-Plugin-URLs zu überprüfen und jede einzelne Instanz von discoursehosting in communiteq umzubenennen.

Hintergrund:

Wir mussten unser Unternehmen 2019 von Discoursehosting in Communiteq umbenennen.
Wenn dies geschieht, leitet Github automatisch URLs zu Github-Repositories an ihren neuen Speicherort weiter, bis jemand ein Repository mit demselben Namen erstellt. In diesem Moment wird das neue Repository bevorzugt.

Github kennzeichnete solche Repositories früher als „zurückgezogen“ und verbot die Erstellung eines Repositorys mit demselben Namen.

Ein früherer Exploit wird hier beschrieben. Anscheinend ist diese Korrektur nicht mehr wirksam.

Wir haben einen Github-Missbrauchsbericht eingereicht und werden versuchen, dieses Repository mit allen verfügbaren Mitteln entfernen zu lassen.

16 „Gefällt mir“

Zum jetzigen Zeitpunkt zeigt das kompromittierte Plugin nur eine Nachricht an und hinterlässt eine harmlose Datei in /tmp.
Es ist also noch nichts Schlimmes passiert. Es ist wichtig, Ihre Plugin-URL zu ändern, bevor Sie neu erstellen.

7 „Gefällt mir“

Wow, das kann den Endbenutzer leicht erwischen, einer der Hauptnachteile, wenn man nicht das offizielle Hosting von discourse.org nutzt.

Wenn entweder die Accounts von
angusmcleod (Angus McLeod) · GitHub oder merefield (Robert) · GitHub
aufhören würden zu existieren,

dann wäre ein erster Unterpfad freigelegt, sodass ein Clone-Befehl in meiner app.yml für einen Rebuild vorhanden wäre, der ausgeführt werden soll.

3 „Gefällt mir“

Um die potenziellen Auswirkungen für Benutzer der Standardinstallation zu mildern, haben wir Code hinzugefügt, der github.com/discoursehosting/ erkennt und alle Neuerstellungen/Upgrades abbricht.

Der Fehler wird etwa so aussehen:

---
FEHLER: Die Konfigurationsdatei containers/app.yml enthält Verweise auf eine kompromittierte GitHub-Organisation: github.com/discoursehosting
Bitte entfernen Sie alle Verweise auf diese Organisation aus Ihrer Konfigurationsdatei.
Weitere Informationen finden Sie unter https://meta.discourse.org/t/374703/6
---
31 „Gefällt mir“

Danke David!

13 „Gefällt mir“

Hallo Discourse-Community,

ich möchte mich aufrichtig für die Störung entschuldigen, die durch meine Handlungen bezüglich des Plugin-Repositorys verursacht wurde. Bei dem Versuch, auf ein Sicherheitsproblem hinzuweisen, habe ich schwere Fehler gemacht, die gegen den Verhaltenskodex verstoßen haben.

Zukünftig werde ich sicherstellen, dass meine Handlungen den Praktiken der verantwortungsvollen Offenlegung entsprechen, und ich schätze die Gelegenheit, daraus zu lernen.

Nochmals, es tut mir aufrichtig leid für die verursachten Störungen.

@w3shi

20 „Gefällt mir“

Vielen Dank für Ihre Entschuldigung.

Das Nächstverantwortungslose war, mich oder CDCK nicht privat zu kontaktieren, als Sie den Handle aufgegeben haben, denn in den letzten drei Stunden hätte jemand anderes Ihren Beitrag sehen und ihn registrieren können.

Ich habe jetzt die Kontrolle über den alten Github-Handle zurückgewonnen. Und vielen Dank, dass Sie letztendlich das Richtige getan haben und zum fünften Mal darauf hingewiesen haben, dass Github keine Redirects mehr schützt (das letzte Mal war das vierte Mal: “Diese Entdeckung markiert das vierte Mal, dass eine alternative Methode zum Ausführen von Repojacking identifiziert wurde”)

Ich schlage vor, Sie wenden sich an Github und holen sich Ihre Prämie!

12 „Gefällt mir“

Ich entschuldige mich zutiefst für alle entstandenen Unannehmlichkeiten! Und vielen Dank für Ihr Verständnis @RGJ!

12 „Gefällt mir“

Willkommen in der Community und vielen Dank, dass Sie alles repariert haben.

9 „Gefällt mir“

Man sollte im Grunde davon ausgehen, dass nichts sicher ist, was auch nicht gut funktioniert.

Erst vor wenigen Tagen wurde bekannt, dass einer der Entwickler hinter dem NPM-Konto einiger ESLint Prettier-Pakete kompromittiert wurde und neue kompromittierte Versionen einiger beliebter Pakete veröffentlichte:

Diese Pakete wurden dann in anderen Paketen referenziert, da viele behaupten, man solle immer auf die neuesten Versionen aktualisieren.

Nachdem ich diesen Thread gesehen hatte, schlug ich eine Funktion vor, um die Signaturvalidierung von Plugins/Theme-Komponenten bei der Aktualisierung einzuführen: Plugin and theme component signing

Das würde einen kompromittierten Schlüssel nicht aufhalten, aber zumindest einen Teil der Lieferkette vertrauenswürdiger machen. Letztendlich ist es immer noch möglich, dass kompromittierte Drittanbieterbibliotheken eingezogen werden. Zusätzliche Abhängigkeiten sind nicht wirklich sichtbar.

4 „Gefällt mir“

Ich bin mir nicht sicher, ob das noch funktioniert. Ich hatte ein Plugin, das auf die kompromittierte GitHub-URL verwies, und die Fehlermeldung während des Neuaufbaus besagte lediglich, dass das Repository nicht abgerufen werden konnte, mit weiteren Details zu einer Gem-Version oder Ähnlichem. (Ich kann die genauen Informationen nicht einfügen, da sie in meinem Scrollback von all dem anderen Lärm während nachfolgender Builds zu weit zurückliegen.)

Es sieht so aus, als ob die URL/das Repository jetzt gar nicht mehr existiert, was gut ist (zumindest bis jemand anderes es neu erstellt), aber die Fehlermeldung hätte viel Zeit gespart.

1 „Gefällt mir“

In der Tat ist @RGJ nun wieder für die GitHub-Organisation zuständig, daher haben wir die temporäre Fehlermeldung entfernt.

5 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.