CVE-2026-35586pyLoad是一款基于Python的免费开源下载管理器。在0.5.0b3.dev97版本之前的代码中,`set_config_value()`函数的权限校验机制存在严重逻辑缺陷。该函数用于限制仅管理员能修改的核心配置项(如SSL证书路径),但由于代码中使用的配置项名称(`ssl_cert`、`ssl_key`)与实际系统定义的名称(`ssl_certfile`、`ssl_keyfile`)不一致,导致校验逻辑失效。此外,`ssl_certchain`选项完全未被纳入保护范围。这赋予了任何仅拥有SETTINGS权限的普通用户修改关键SSL设置的权力,可能导致安全配置被篡改。
该漏洞的核心在于`set_config_value()`方法中的访问控制列表(ACL)实现存在名称不匹配错误。开发者在定义`ADMIN_ONLY_CORE_OPTIONS`集合时,错误地使用了`ssl_cert`和`ssl_key`作为需要管理员权限保护的键名。然而,当用户通过API或前端接口提交配置更改时,实际传递并生效的配置键名是`ssl_certfile`和`ssl_keyfile`。由于字符串不匹配,权限校验逻辑(如`if key in ADMIN_ONLY_CORE_OPTIONS`)在处理这些关键参数时始终返回False,系统误判其不需要管理员权限。因此,仅拥有`SETTINGS`权限的低权限用户即可绕过`ADMIN`权限限制,直接调用接口覆盖SSL证书和私钥路径。攻击者利用此漏洞可指向恶意证书文件,从而破坏服务的加密通信完整性。