CVE-2026-40594pyLoad是一款基于Python的开源下载管理器。在0.5.0b3.dev98版本之前,其`set_session_cookie_secure`处理函数存在设计缺陷。该函数在未验证请求来源的情况下,直接读取并信任`X-Forwarded-Proto`头部,进而修改全局Flask配置。由于使用了多线程Cheroot WSGI服务器,这种处理方式引发了竞态条件,允许攻击者干扰其他用户的会话Cookie安全标志,造成安全降级或拒绝服务风险。
该漏洞的核心在于pyLoad对`X-Forwarded-Proto`请求头处理不当以及多线程环境下的竞态条件。在受影响版本中,`src/pyload/webui/app/__init__.py`文件的`set_session_cookie_secure`钩子函数会在每次请求前执行,它直接读取用户可控的`X-Forwarded-Proto`头部值,并据此修改全局的Flask配置对象`SESSION_COOKIE_SECURE`。由于pyLoad默认采用多线程的Cheroot WSGI服务器,且请求队列大小为512,高并发请求会导致全局配置被频繁且非原子性地修改。攻击者无需认证,即可通过发送大量包含恶意`X-Forwarded-Proto`头部的请求,利用竞态条件干扰正常用户的请求处理流程。这可能导致在TLS代理环境下的会话Cookie被错误地设置为非Secure(安全降级),或在纯HTTP环境下导致合法用户无法建立会话(拒绝服务)。