セキュリティ脆弱性 ![]()
要約:このプラグインをインストールすると、無効になっている場合でも、トピックにアクセスできるすべての人(匿名ユーザーを含む)に すべての トピックカスタムフィールドが漏洩します。インストールされている他のプラグインによっては、トピックカスタムフィールドに機密データが含まれる可能性があります。
~~クライアントのためにこのプラグインを審査した際、いくつかのセキュリティ上の問題を発見しました。これらの問題は、私たちのフォーク(https://github.com/communiteq/discourse-topic-trade-buttons/tree/master)で修正し、プルリクエストを作成しました。しかし、トピックの作成者は私たちのプルリクエストやプライベートメッセージに返信していないため、これらの問題を公開することにしました。~~
セキュリティ修正:情報漏洩
すべてのカスタムフィールド(他のプラグインからのものを含む!)がシリアライズされており、匿名ユーザーにも漏洩しています。カスタムフィールドには機密データが含まれる可能性があり、決してそのようにシリアライズされるべきではありません。
sold_atなどの値は anyway サーバーサイドで設定され、ボタンは topic.archived で「計算」されるため、カスタムフィールドロジックはフロントエンドのユーザー向けコードから削除でき、カスタムフィールドは管理インターフェースが機能するためにのみシリアライズすればよいため、シリアライズは管理者ユーザーに限定できます。これすらも必要ないのではないかと疑っています。
初期化修正
シリアライズロジックを囲む if SiteSetting.topic_trade_buttons_enabled チェックにより、プラグインを有効または無効にした後にDiscourseを再起動する必要があります。このチェックは、Discourseがすでに処理しているため不要です。
respect_plugin_enabled: false を使用することは不要であり、上記のセキュリティ問題を悪化させます。