Security
Headlines
HeadlinesLatestCVEs

Headline

CVE-2022-41944: SECURITY: Hide notifications for inaccessible topics (#19208) · discourse/discourse@c6ee28e

Discourse is an open-source discussion platform. In stable versions prior to 2.8.12 and beta or tests-passed versions prior to 2.9.0.beta.13, under certain conditions, a user can see notifications for topics they no longer have access to. If there is sensitive information in the topic title, it will therefore have been exposed. This issue is patched in stable version 2.8.12, beta version 2.9.0.beta13, and tests-passed version 2.9.0.beta13. There are no workarounds available.

CVE
#js

@@ -339,6 +339,50 @@ def delete_notification(resp_code, matcher)

expect(response.status).to eq(404)

end

end

context “with notifications for inaccessible topics” do

fab!(:sender) { Fabricate.build(:topic_allowed_user, user: Fabricate(:coding_horror)) }

fab!(:allowed_user) { Fabricate.build(:topic_allowed_user, user: user) }

fab!(:another_allowed_user) { Fabricate.build(:topic_allowed_user, user: Fabricate(:user)) }

fab!(:allowed_pm) { Fabricate(:private_message_topic, topic_allowed_users: [sender, allowed_user, another_allowed_user]) }

fab!(:forbidden_pm) { Fabricate(:private_message_topic, topic_allowed_users: [sender, another_allowed_user]) }

fab!(:allowed_pm_notification) { Fabricate(:private_message_notification, user: user, topic: allowed_pm) }

fab!(:forbidden_pm_notification) { Fabricate(:private_message_notification, user: user, topic: forbidden_pm) }

def expect_correct_notifications(response)

notification_ids = response.parsed_body[“notifications”].map { |n| n[“id”] }

expect(notification_ids).to include(allowed_pm_notification.id)

expect(notification_ids).to_not include(forbidden_pm_notification.id)

end

context “with ‘recent’ filter” do

it “doesn’t include notifications from topics the user isn’t allowed to see” do

SiteSetting.enable_experimental_sidebar_hamburger = true

get "/notifications.json", params: { recent: true }

expect(response.status).to eq(200)

expect_correct_notifications(response)

SiteSetting.enable_experimental_sidebar_hamburger = false

get "/notifications.json", params: { recent: true }

expect(response.status).to eq(200)

expect_correct_notifications(response)

end

end

context “without ‘recent’ filter” do

it “doesn’t include notifications from topics the user isn’t allowed to see” do

SiteSetting.enable_experimental_sidebar_hamburger = true

get “/notifications.json”

expect(response.status).to eq(200)

expect_correct_notifications(response)

SiteSetting.enable_experimental_sidebar_hamburger = false

get “/notifications.json”

expect(response.status).to eq(200)

expect_correct_notifications(response)

end

end

end

end

it ‘should succeed’ do

CVE: Latest News

CVE-2023-50976: Transactions API Authorization by oleiman · Pull Request #14969 · redpanda-data/redpanda