Handels-Buttons

:warning: Sicherheitslücke :warning:

Zusammenfassung: Die Installation dieses Plugins führt dazu, dass – selbst wenn es deaktiviert ist – alle vorhandenen benutzerdefinierten Topic-Felder für jeden, der Zugriff auf das Topic hat, einschließlich anonymer Benutzer, offengelegt werden. Abhängig von anderen installierten Plugins können benutzerdefinierte Topic-Felder sensible Daten enthalten.

Bei der Überprüfung dieses Plugins für einen Kunden haben wir eine Reihe von Sicherheitsproblemen entdeckt. Wir haben diese Probleme in unserer Fork (https://github.com/communiteq/discourse-topic-trade-buttons/tree/master) behoben und einen Pull-Request erstellt. Der Topic-Autor hat jedoch weder auf unseren Pull-Request noch auf unsere private Nachricht geantwortet, sodass wir diese Probleme nun offenlegen.

Sicherheitsfix: Informationsleck

Alle benutzerdefinierten Felder (auch die von anderen Plugins!) werden serialisiert, auch für anonyme Benutzer. Benutzerdefinierte Felder können sensible Daten enthalten und sollten niemals auf diese Weise serialisiert werden.
Da die Werte sold_at usw. ohnehin serverseitig gesetzt werden und die Buttons auf topic.archived „berechnet“ werden, kann die Logik für benutzerdefinierte Felder aus dem Frontend-Code entfernt werden, und die benutzerdefinierten Felder müssen nur für die Admin-Oberfläche serialisiert werden, damit diese funktioniert – daher kann die Serialisierung auf Admin-Benutzer beschränkt werden. Wir vermuten, dass dies nicht einmal notwendig ist.

Initialisierungsfixes

Die Prüfung if SiteSetting.topic_trade_buttons_enabled, die die Serialisierungslogik absperrt, macht einen Neustart von Discourse nach dem Aktivieren oder Deaktivieren des Plugins erforderlich. Diese Prüfung ist unnötig, da Discourse sich bereits darum kümmert.
Die Verwendung von respect_plugin_enabled: false ist unnötig und verschlimmert das oben beschriebene Sicherheitsproblem.

7 „Gefällt mir“