vulnerabilità di sicurezza ![]()
In sintesi, l’installazione di questo plugin - anche quando disabilitato - farà trapelare tutti i campi personalizzati dell’argomento presenti a chiunque possa accedere all’argomento, inclusi gli utenti anonimi. A seconda di altri plugin installati, i campi personalizzati dell’argomento possono contenere dati sensibili.
Durante la verifica di questo plugin per un cliente, abbiamo scoperto una serie di problemi di sicurezza. Abbiamo risolto questi problemi nel nostro fork (https://github.com/communiteq/discourse-topic-trade-buttons/tree/master) e abbiamo creato una pull request. Tuttavia, l’autore dell’argomento non ha risposto alla nostra pull request né al nostro messaggio privato, quindi ora stiamo divulgando questi problemi.
Correzione di sicurezza: fuga di informazioni
Tutti i campi personalizzati (inclusi quelli di altri plugin!) vengono serializzati, anche per gli utenti anonimi. I campi personalizzati possono contenere dati sensibili e non dovrebbero mai essere serializzati in quel modo.
Poiché i valori sold_at, ecc. vengono comunque impostati lato server e i pulsanti vengono “calcolati” su topic.archived, la logica dei campi personalizzati può essere rimossa dal codice front-end rivolto all’utente e i campi personalizzati devono essere serializzati solo per l’interfaccia di amministrazione affinché funzioni - quindi la serializzazione può essere limitata agli utenti amministratori. Sospettiamo che anche questo non sia necessario.
Correzioni di inizializzazione
Il controllo if SiteSetting.topic_trade_buttons_enabled che delimita la logica di serializzazione rende necessario riavviare Discourse dopo aver abilitato o disabilitato il plugin. Questo controllo è non necessario poiché Discourse se ne occupa già.
L’uso di respect_plugin_enabled: false è non necessario e aggrava il problema di sicurezza sopra descritto.