Botones de trading

:warning: vulnerabilidad de seguridad :warning:

Resumen: instalar este plugin filtrará, incluso cuando esté deshabilitado, todos los campos personalizados del tema que estén presentes a cualquiera que pueda acceder al tema, incluidos los usuarios anónimos. Dependiendo de otros plugins que tengas instalados, los campos personalizados del tema pueden contener datos confidenciales.

Al evaluar este plugin para un cliente, descubrimos una serie de problemas de seguridad. Hemos corregido estos problemas en nuestra bifurcación (https://github.com/communiteq/discourse-topic-trade-buttons/tree/master) y hemos realizado una solicitud de extracción (pull request). Sin embargo, el autor del tema no ha respondido a nuestra solicitud de extracción ni a nuestro mensaje privado, por lo que ahora estamos divulgando estos problemas.

Corrección de seguridad: fuga de información

Todos los campos personalizados (¡incluidos los de otros plugins!) se están serializando, incluso a usuarios anónimos. Los campos personalizados pueden contener datos confidenciales y nunca deben serializarse de esa manera.

Dado que los valores sold_at, etc., se establecen en el lado del servidor de todos modos y los botones se “calculan” en topic.archived, la lógica de los campos personalizados se puede eliminar del código del lado del cliente que ve el usuario y los campos personalizados solo necesitan serializarse para que funcione la interfaz de administración; por lo tanto, la serialización se puede limitar a los usuarios administradores. Sospechamos que esto ni siquiera es necesario.

Correcciones de inicialización

La comprobación if SiteSetting.topic_trade_buttons_enabled que delimita la lógica de serialización hace que sea necesario reiniciar Discourse después de habilitar o deshabilitar el plugin. Esta comprobación es innecesaria ya que Discourse ya se encarga de ello.
Usar respect_plugin_enabled: false es innecesario y agrava el problema de seguridad descrito anteriormente.

7 Me gusta