From 00735e47597c877f16bdbcd57a7746568e881c99 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Thu, 22 Jul 2021 17:18:39 +0200 Subject: MUC: Fix logic for access to affiliation lists Fixes https://prosody.im/security/advisory_20210722/ Backs out 4d7b925652d9 --- plugins/muc/muc.lib.lua | 2 +- spec/scansion/muc_whois_anyone_member.scs | 140 ++++++++++++++++++------------ 2 files changed, 84 insertions(+), 58 deletions(-) diff --git a/plugins/muc/muc.lib.lua b/plugins/muc/muc.lib.lua index 037baa37..f037c4f6 100644 --- a/plugins/muc/muc.lib.lua +++ b/plugins/muc/muc.lib.lua @@ -976,7 +976,7 @@ function room_mt:handle_admin_query_get_command(origin, stanza) -- e.g. an admin can't ask for a list of owners local affiliation_rank = valid_affiliations[affiliation or "none"]; if (affiliation_rank >= valid_affiliations.admin and affiliation_rank >= _aff_rank) - or (self:get_whois() == "anyone") then + or (self:get_members_only() and self:get_whois() == "anyone" and affiliation_rank >= valid_affiliations.member) then local reply = st.reply(stanza):query("http://jabber.org/protocol/muc#admin"); for jid in self:each_affiliation(_aff or "none") do local nick = self:get_registered_nick(jid); diff --git a/spec/scansion/muc_whois_anyone_member.scs b/spec/scansion/muc_whois_anyone_member.scs index 9a6f7e15..bbe067fd 100644 --- a/spec/scansion/muc_whois_anyone_member.scs +++ b/spec/scansion/muc_whois_anyone_member.scs @@ -1,101 +1,127 @@ # MUC: Allow members to fetch the affiliation lists in open non-anonymous rooms [Client] Romeo - jid: romeo@localhost/MsliYo9C + jid: 4e2pm7er@localhost password: password [Client] Juliet - jid: juliet@localhost/vJrUtY4Z + jid: qnjm5253@localhost + password: password + +[Client] Random + jid: iqizbcus@localhost password: password ----- Romeo connects +Juliet connects + +Random connects + +# Romeo joins and creates the MUC Romeo sends: - - + + Romeo receives: - - - - - - + + + + + + Romeo receives: - - + + +# and configures it for private chat Romeo sends: - - - - - http://jabber.org/protocol/muc#roomconfig - - - anyone - - - + + + + + http://jabber.org/protocol/muc#roomconfig + + + 1 + + + anyone + + + Romeo receives: - + Romeo receives: - - - - + + + + + -Juliet connects +# Juliet is made a member +Romeo sends: + + + + + +# Juliet can read affiliations Juliet sends: - - - - -Juliet receives: - - - - - - -Juliet receives: - - - - - - - + + + + + Juliet receives: - - - + + + + + Juliet sends: - - - - + + + + Juliet receives: - - + + + + +# Others can't read affiliations +Random sends: + + + + + + +Random receives: + + + Juliet disconnects Romeo disconnects +Random disconnects + +# recording ended on 2021-07-23T12:09:48Z -- cgit v1.2.3