通过对受影响版本进行接口测试和 .NET 程序分析,并在多个版本上重复验证,本频道测试确认 Emby Server 的 Connect Exchange 接口存在授权校验缺陷。普通已认证用户可在特定条件下使接口选中错误的本地用户,并为该用户创建新的有效会话。当被选中用户为初始管理员时,攻击者可获得 Emby 管理员权限。
漏洞信息
漏洞编号:暂无公开 CVE
漏洞名称:Emby Connect Exchange 越权令牌签发漏洞
漏洞类型:授权绕过 / 权限提升
严重等级:严重
影响范围
已确认受影响:Emby Server 4.1.1.0 至 4.11.0.6
注: 本频道测试了以下版本 4.1.1.0、4.2.1.0、4.3.1.0、4.4.3.0、4.5.4.0、4.6.7.0、4.7.14.0、4.8.11.0、4.9.5.0、4.10.0.40、4.10.1.0 和 4.11.0.6,所测版本均可复现。
受影响组件
Emby Connect 服务
涉及接口:/Connect/Exchange
涉及程序组件:Emby.Server.Connect.dll
利用条件
1. 攻击者持有服务器上一个普通用户的有效本地 Emby AccessToken
2. 攻击者能够访问目标服务器的 Emby HTTP API
3. 在已验证的无参数请求场景中,接口选中的本地用户为安装向导创建的初始管理员。
漏洞原理
正常情况下,GET /Connect/Exchange 用于将 Emby Connect 提供的服务器 AccessKey 交换为对应用户的本地 AccessToken,请求同时携带 ConnectUserId。
频道通过对 4.10.0.40 相关程序的逆向分析发现,接口未先检查 ConnectUserId 是否缺失或为空,就将其传入本地用户查询,并通过 Limit=1 和 FirstOrDefault() 选取返回用户。在本次无参数请求测试中,该查询选中了初始管理员。
普通用户的有效本地 AccessToken 可以通过接口认证,但后续处理未有效校验该凭证是否有权为选中的目标用户交换令牌。在携带客户端信息的请求路径中,接口将目标用户的名称和内部 ID 传入 CreateNewSession(),并返回新生成的 AccessToken 和对应 LocalUserId。
根因是缺失身份参数未被拒绝,同时交换凭证与目标用户之间缺少有效的授权绑定,导致接口为调用者无权代表的用户签发会话。 当选中的用户具有管理员权限时,普通用户便可获得 Emby 管理员权限。
注: 测试中,未携带 Token 的请求返回 401;普通用户原 Token 执行管理员权限修改返回 403。通过该接口获得目标管理员 Token 后,可成功将测试账户的
Policy.IsAdministrator 从 false 修改为 true,确认形成应用层权限提升。处置建议
在官方修复版本发布前,建议:
1. 不要将 Emby API 直接暴露到不可信网络,优先通过可信内网或 VPN 访问
2. 若无需使用 Emby Connect,在入口统一阻断
/Connect/Exchange,并覆盖实际可用的路径前缀及直连入口;需要使用该功能时,限制访问来源作为临时缓解措施。3. 检查并撤销异常会话和未知设备 Token;如怀疑已被利用,轮换相关账户凭证
4. 限制普通账户的创建和分发,并监控用户 Policy、管理员状态及会话列表的异常变化
服务端修复应同时拒绝缺失或为空的 ConnectUserId,并严格核验 Connect AccessKey 与目标用户的绑定关系。