Discourseの脆弱性 CVE-2021-41163

みなさん、こんにちは。

最近、Discourse におけるこのセキュリティ脆弱性 NVD - CVE-2021-41163 (nist.gov) の存在を知りました。

この脆弱性が /webhooks/aws の URL に関連しているため、Azure 上で動作している Discourse も影響を受けるのか気になりました。

パッチを適用していない場合、ホスト場所に関係なく、すべてのインスタンスが影響を受けます。

@Falco さん、迅速な返信をありがとうございます!

私は Ruby の専門家ではありませんが、このコード行 は Azure 上の脆弱な部分の実行を防ぐために評価が false になるはずだと考えていました。Ruby に詳しくないため、もし間違っていたらご指摘ください。

また、完全な応急処置的な解決策として、アップグレードが 100% 最善の解決策であることは間違いありませんが、アップグレードができるまでの間、一時的に対処するために nginx ファイルを編集することは可能でしょうか?

手順は以下の通りです:

  1. サーバーに SSH で接続
  2. cd /var/discourse
  3. ./launcher enter app
  4. cd /etc/nginx/conf.d/
  5. discourse.conf を編集
  6. 以下を追加:
location ~* /webhooks/aws {
    deny all;
}
  1. sv restart nginx

アップグレードするつもりはありますし、それも近い将来に行う予定です。しかし、ライブ環境の準備を整えるのに約 1 週間ほどかかる見込みのため、その間はセキュリティを確保しておきたいと考えています。

そのパラメータはユーザー入力であるため、その行は必ず実行されます。

それは機能するかもしれませんが、ご指摘の通り応急処置に過ぎません。再構築するとこの修正は失われます。また、nginx の設定は正しい値に設定するのが非常に難しいため、テストには十分ご注意ください。

セキュリティチームの見解に基づきますと、これは Discourse のバグではありません。このバグは、SNS メッセージ配信システム(MDS)に存在しており(ここでは詳細には言及できません)、SNS サービスを利用するすべてのパッケージに影響を及ぼします。

はい、この問題は確かに aws-sdk-sns gem の上位依存における問題が原因です。ただし、Discourse がこの gem を使用しており、そのバグを外部に露出させている以上、AWS SNS サービスを実際に 利用していない Discourse インスタンスであっても、すべてが脆弱であるという点に注意することが重要です。

したがって、これは「Discourse のバグ」というわけではありませんが、「Discourse におけるセキュリティ脆弱性」であると言えます。

この脆弱性は修正されましたか?ありがとうございます。

はい、ただしパッチを適用していることを確認してください。トピックをお読みください。:slight_smile:

この脆弱性を修正するために、単純な

ランチャー再構築アプリ
では不十分でしょうか?

./launcher rebuild app を実行すると、Discourse インスタンスに最新アップデートが適用され、この問題に対するパッチも含まれます :+1:

公式情報は RCE via malicious SNS subscription payload · Advisory · discourse/discourse · GitHub で確認できます。

より良い表現ですね :slight_smile: