当前位置: 首页 > news >正文

JEEWMS issue3: `updateDataRule` 可改写角色数据规则

Vulnerability call chain

1.1 Summary

JEEWMS has a missing authorization vulnerability: updateDataRule 可改写角色数据规则. 可扩大、清空或替换角色在某功能下的数据权限规则,影响后续数据过滤范围。

  • Attack precondition: 攻击者能访问 roleController.do?updateDataRule。源码层面未证明该入口仅系统管理员可访问。
  • Security impact: 可扩大、清空或替换角色在某功能下的数据权限规则,影响后续数据过滤范围。

1.2 Exploit path

提交任意 roleIdfunctionIddataRulecodes,修改对应 TSRoleFunction.dataRule

1.3 Key code evidence

  1. src/main/java/org/jeecgframework/web/system/controller/core/RoleController.java

Evidence location: https://gitee.com/erzhongxmu/JEEWMS/blob/master/src/main/java/org/jeecgframework/web/system/controller/core/RoleController.java#L875

  872  	 * @param request873  	 * @return874  	 */875  	@RequestMapping(params = "updateDataRule")876  	@ResponseBody877  	public AjaxJson updateDataRule(HttpServletRequest request) {878  		AjaxJson j = new AjaxJson();
  1. security-reports/pure_fix_code/src/main/java/org/jeecgframework/web/system/controller/core/RoleController.java

Evidence location: https://gitee.com/erzhongxmu/JEEWMS/blob/master/security-reports/pure_fix_code/src/main/java/org/jeecgframework/web/system/controller/core/RoleController.java#L879

  876  	 * @param roleId877  	 * @return878  	 */879  	@RequestMapping(params = "dataRuleListForFunction")880  	public ModelAndView dataRuleListForFunction(HttpServletRequest request,881  			String functionId, String roleId) {882  		CriteriaQuery cq = new CriteriaQuery(TSDataRule.class);883  		cq.eq("TSFunction.id", functionId);884  		cq.add();885  		List<TSDataRule> dataRuleList = this.systemService886  				.getListByCriteriaQuery(cq, false);887  		Set<String> dataRulecodes = systemService888  				.getOperationCodesByRoleIdAndruleDataId(roleId, functionId);
  1. security-reports/pure_fix_code/src/main/java/org/jeecgframework/web/system/controller/core/RoleController.java

Evidence location: https://gitee.com/erzhongxmu/JEEWMS/blob/master/security-reports/pure_fix_code/src/main/java/org/jeecgframework/web/system/controller/core/RoleController.java#L890

  887  		Set<String> dataRulecodes = systemService888  				.getOperationCodesByRoleIdAndruleDataId(roleId, functionId);889  		request.setAttribute("dataRuleList", dataRuleList);890  		request.setAttribute("dataRulecodes", dataRulecodes);891  		request.setAttribute("functionId", functionId);892  		return new ModelAndView("system/role/dataRuleListForFunction");893  	}894  	895  	896  	/**897  	 * 更新按钮权限898  	 * 
  1. security-reports/pure_fix_code/src/main/java/org/jeecgframework/web/system/controller/core/RoleController.java

Evidence location: https://gitee.com/erzhongxmu/JEEWMS/blob/master/security-reports/pure_fix_code/src/main/java/org/jeecgframework/web/system/controller/core/RoleController.java#L897

  894  	895  	896  	/**897  	 * 更新按钮权限898  	 * 899  	 * @param request900  	 * @return901  	 */902  	@RequestMapping(params = "updateDataRule")

3. Root Cause Analysis

Root Cause 1: Missing server-side authorization on the vulnerable operation.

The endpoint accepts user-controlled authorization-sensitive identifiers or fields, but the write/read path does not prove that the current caller may operate on the target object.

Root Cause 2: Missing object-scope or grant-bound validation.

The implementation relies on endpoint access, UI filtering, or object existence checks instead of enforcing target ownership, tenant boundary, role ceiling, or grantable-resource constraints at the service layer.

仅允许系统管理员或被授权的数据权限管理员修改;校验目标角色、目标功能和规则表达式均在当前用户可管理范围内;禁止非管理员清空或扩大规则。

5. Verification after fix

  • Unauthorized callers receive HTTP 403 or equivalent rejection.
  • Out-of-scope target identifiers are rejected before database writes or sensitive reads.
  • Role, permission, tenant, organization, ownership, or grant-bound ceilings are enforced server-side.
  • Direct HTTP requests are rejected even when front-end controls are hidden.
http://www.jsqmd.com/news/1035839/

相关文章:

  • OneNote转Markdown终极指南:如何用onenote-md-exporter实现无损格式转换
  • 2026石家庄焊缝探伤检测权威机构排行 TOP 本地高频选择,无损检测 + UT+RT+PT 检测 附电话地址 - 中安检测集团
  • 2026锡林郭勒盟焊缝探伤检测权威机构排行 TOP 本地高频选择,无损检测 + UT+RT+PT 检测 附电话地址 - 中安检测集团
  • 东北景区文旅对讲运维科普 淡旺季对讲机通讯设备适配与故障标准化解决方案----黑龙江单工科技有限公司 - 无线电评测大师
  • 2026石嘴山焊缝探伤检测权威机构排行 TOP 本地高频选择,无损检测 + UT+RT+PT 检测 附电话地址 - 中安检测集团
  • SSRF 302跳转
  • 2026新乡焊缝探伤检测权威机构排行 TOP 本地高频选择,无损检测 + UT+RT+PT 检测 附电话地址 - 中安检测集团
  • LLM上下文压缩:在有限窗口中保留关键信息的工程策略
  • 计算机毕业设计之办公耗材管理系统
  • 5年,一个程序员是如何把私有化在线客服系统做到第一名的
  • 2026延安焊缝探伤检测权威机构排行 TOP 本地高频选择,无损检测 + UT+RT+PT 检测 附电话地址 - 中安检测集团
  • 2026乌鲁木齐焊缝探伤检测权威机构排行 TOP 本地高频选择,无损检测 + UT+RT+PT 检测 附电话地址 - 中安检测集团
  • SSRF DNS重绑定绕过法
  • 2026南阳焊缝探伤检测权威机构排行 TOP 本地高频选择,无损检测 + UT+RT+PT 检测 附电话地址 - 中安检测集团
  • RuoYi issue4: Unauthorized Role Assignment Deletion
  • 2026陕西焊缝探伤检测权威机构排行 TOP 本地高频选择,无损检测 + UT+RT+PT 检测 附电话地址 - 中安检测集团
  • MonkeyCode开源版API调试工具:在云IDE里直接测试接口(免费,替代Postman)
  • 全栈应用的状态同步:从前后端割裂到实时一致,分布式数据的协调方案
  • 2026 年人来灯亮智能开关推荐:优智者感应灵敏 - 思溯深度专栏
  • 2026 亨得利辟谣维权完整版:全网仿冒售后电话曝光 + 原厂维保收费标准对照(建议保存) - 亨得利官方维修中心
  • 2026年 道路沥青路面/彩色沥青道路/沥青混凝土厂家推荐榜单:覆盖小区、园区、停车场与厂房地坪混凝土的优质品牌解析 - 品牌发掘
  • Loop:Agent发展的第四个Engineering已经来了
  • 2026内江焊缝探伤检测权威机构排行 TOP 本地高频选择,无损检测 + UT+RT+PT 检测 附电话地址 - 中安检测集团
  • 2026杭州黄金回收实测:拱墅上城萧山余杭钱塘全覆盖,免费上门验金,让闲置金饰安稳变现 - 百福黄金回收
  • 喜马拉雅VIP音频本地化深度解析:Go+Qt5跨平台下载器实战指南
  • LangGraph重试机制:3步解决AI工作流中的失败问题
  • 用过才敢说!2026年最值得用的专业AI论文平台
  • WinBtrfs驱动深度解析:让Windows原生支持Btrfs文件系统的完整方案
  • 2026汕头焊缝探伤检测权威机构排行 TOP 本地高频选择,无损检测 + UT+RT+PT 检测 附电话地址 - 中安检测集团
  • RuoYi issue5: Department Hierarchy Rebinding