关键信息 漏洞标题 Missing authorization in sync endpoints allows cross-user budget file access in multi-user mode 严重性 High CVE ID CVE-2026-27638 描述 在多用户模式(OpenID)下,sync API 端点(/sync/*)不验证经过身份验证的用户是否拥有或有权访问正在操作的文件。任何经过身份验证的用户都可以通过提供他们的文件ID来访问、修改和覆盖任何其他用户的预算文件。 影响 在多用户部署(OpenID模式)中,任何经过身份验证的用户都可以窃取其他用户的完整财务数据(交易、账户、余额、付款),修改或销毁他们的预算,并篡改加密密钥。这是一个个人财务应用程序,因此数据高度敏感。 影响版本 = 26.2.1 影响的端点 GET /sync/download-user-file - 下载任何预算文件 POST /sync/upload-user-file - 覆盖任何预算文件 POST /sync/sync - 读取/写入任何文件的sync消息 POST /sync/user-get-key - 读取加密密钥信息 POST /sync/user-create-key - 更改加密密钥 POST /sync/reset-user-file - 重置sync状态 POST /sync/update-user-filename - 重命名文件 GET /sync/get-user-file-info - 读取文件元数据 影响代码 文件:packages/sync-server/src/app-sync.ts 在第31行确认用户已通过身份验证,但单个端点仅检查文件是否存在(通过 ),从不检查请求用户是否拥有或有权访问该文件。 PoC 设置:两个用户(Alice, Bob)通过OpenID在同一Actual服务器上进行身份验证。Alice有一个文件ID为 的预算。 Bob下载Alice的预算: Bob读取Alice的文件元数据: Bob重命名Alice的预算: Bob重置Alice的sync状态(具有破坏性): 文件ID可以通过管理员用户通过 (管理员可以看到所有文件),通过 共享或通过猜测来发现。