CVE-2025-11750CVE-2025-11750是langgenius/dify-web 1.6.0版本中存在的一个用户枚举漏洞(User Enumeration Vulnerability),属于身份认证机制设计缺陷类安全问题。该漏洞源于系统在用户登录和注册过程中,针对不存在的用户账号与存在但密码错误的账号返回了不同的错误响应信息。具体而言,当攻击者尝试使用一个不存在的用户名或邮箱进行登录或注册时,系统会返回类似"account not found"(账号未找到)的提示信息;而当用户名或邮箱确实存在但密码输入错误时,系统则会返回另一个不同的错误消息。这种差异化的错误处理方式使得攻击者能够通过分析服务器返回的错误响应来枚举系统中已注册的有效用户账号,从而为后续的定向社会工程学攻击、暴力破解攻击或凭证填充攻击(Credential Stuffing)提供基础。该漏洞由[email protected]的安全研究人员发现并报告,CVSS 3.1评分为5.3分,属于中危级别漏洞。虽然该漏洞本身不会直接导致系统被入侵或数据被窃取,但它显著降低了攻击者发动后续攻击的难度和成本,对系统用户的安全构成间接威胁。
该漏洞的技术原理在于身份认证接口在处理用户登录和注册请求时,未对错误信息进行统一处理,导致信息泄露成为可能。从技术层面分析,当客户端向认证接口(如/login或/register端点)提交包含用户名/邮箱和密码的请求时,服务端的处理流程如下:1)服务端首先根据用户名或邮箱在数据库中查询对应记录;2)如果未找到匹配记录,直接返回"account not found"类型的错误;3)如果找到记录,则进行密码哈希比对;4)密码比对失败后返回"incorrect password"类型的错误。这两种不同的返回路径产生了可被攻击者利用的差异性响应。攻击者利用方式相对简单:攻击者可以通过编写自动化脚本,批量向认证接口发送探测请求,通过观察响应内容的差异即可区分目标账号是否存在。典型的PoC代码可以使用Python的requests库实现,通过遍历常见用户名列表或使用泄露的邮箱列表进行批量探测,并根据HTTP响应体中的关键字(如"account not found" vs "incorrect password")来判断账号的有效性。一旦获得有效账号列表,攻击者可以结合社会工程学手段(如钓鱼攻击)或自动化工具进行凭证填充攻击,使用已泄露的密码数据库尝试登录,从而获取未授权访问权限。