CVE-2026-33203SiYuan是一款个人知识管理系统,在3.6.2版本之前,其内核WebSocket服务器存在重大安全缺陷。由于身份验证逻辑存在疏漏,当请求URL中携带特定的“auth keepalive”查询参数时,服务器会错误地接受未经身份验证的连接。更为严重的是,系统在处理这些连接传入的JSON消息时,缺乏对数据类型的校验,直接使用了未检查的类型断言。远程攻击者可利用此漏洞,通过发送特制的畸形JSON数据包触发运行时恐慌,导致内核进程崩溃,从而造成严重的拒绝服务。
该漏洞的技术根源在于SiYuan内核WebSocket服务器中存在的身份验证绕过缺陷以及不安全的类型断言处理机制。首先,攻击者利用了服务器对“auth keepalive”查询参数的特殊处理逻辑,成功绕过了正常的身份验证流程,直接与内核服务建立未授权的WebSocket连接。其次,在底层Go代码实现中,服务端在解析攻击者控制的JSON消息时,直接使用了类型断言来提取字段,而未预先验证字段的存在性或类型兼容性。攻击者可以精心构造一个类型错误的数据包(例如将本应是字符串的字段替换为嵌套对象或整数),当服务器尝试将数据断言为不匹配的类型时,Go运行时会立即触发panic异常。由于此异常未被捕获,导致整个内核进程意外终止,从而实现拒绝服务攻击,严重影响系统可用性。