Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 7a3a55a

Browse files
authored
Merge pull request from GHSA-mp92-3jfm-3575
1 parent de981ae commit 7a3a55a

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

synapse/federation/federation_server.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
from synapse.storage.databases.main.lock import Lock
8585
from synapse.storage.databases.main.roommember import extract_heroes_from_room_summary
8686
from synapse.storage.roommember import MemberSummary
87-
from synapse.types import JsonDict, StateMap, get_domain_from_id
87+
from synapse.types import JsonDict, StateMap, get_domain_from_id, UserID
8888
from synapse.util import unwrapFirstError
8989
from synapse.util.async_helpers import Linearizer, concurrently_execute, gather_results
9090
from synapse.util.caches.response_cache import ResponseCache
@@ -999,6 +999,12 @@ async def on_query_user_devices(
999999
async def on_claim_client_keys(
10001000
self, query: List[Tuple[str, str, str, int]], always_include_fallback_keys: bool
10011001
) -> Dict[str, Any]:
1002+
if any(
1003+
not self.hs.is_mine(UserID.from_string(user_id))
1004+
for user_id, _, _, _ in query
1005+
):
1006+
raise SynapseError(400, "User is not hosted on this homeserver")
1007+
10021008
log_kv({"message": "Claiming one time keys.", "user, device pairs": query})
10031009
results = await self._e2e_keys_handler.claim_local_one_time_keys(
10041010
query, always_include_fallback_keys=always_include_fallback_keys

synapse/handlers/device.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,9 @@ async def get_user_ids_changed(
328328
return result
329329

330330
async def on_federation_query_user_devices(self, user_id: str) -> JsonDict:
331+
if not self.hs.is_mine(UserID.from_string(user_id)):
332+
raise SynapseError(400, "User is not hosted on this homeserver")
333+
331334
stream_id, devices = await self.store.get_e2e_device_keys_for_federation_query(
332335
user_id
333336
)

synapse/handlers/e2e_keys.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,12 @@ async def on_federation_query_client_keys(
542542
device_keys_query: Dict[str, Optional[List[str]]] = query_body.get(
543543
"device_keys", {}
544544
)
545+
if any(
546+
not self.is_mine(UserID.from_string(user_id))
547+
for user_id in device_keys_query
548+
):
549+
raise SynapseError(400, "User is not hosted on this homeserver")
550+
545551
res = await self.query_local_devices(
546552
device_keys_query,
547553
include_displaynames=(

0 commit comments

Comments
 (0)