lamp-cloud BOPLA VULNs Report
Issue 1: POST /baseEmployee/employeeRole
1. 风险分析(危害分析)
该接口允许直接按 employeeId 绑定 roleIdList,但未限制操作者的可授权上界。攻击者一旦具备接口调用权限,即可为自己或任意员工分配高权限角色(包括参与租户管理员判定的角色),从而实现垂直提权与横向扩散,最终可能接管目标账号甚至整租户的管理与数据权限。
2. 漏洞信息
-
类型:对象级授权缺失 / 属性级越权写入
-
影响对象:base_employee_role_rel.role_id
-
核心问题:未校验操作者是否有资格为目标 employeeId 分配指定 roleIdList
3. 核验细节
-
入口授权:
由网关统一执行 URI 级权限校验 -
Sink 写入:
controller 将请求体直接传入 service,service 按 employeeId + roleIdList 删除并重建 base_employee_role_rel -
缺失检查:
未校验:-
操作者是否可管理该 employeeId
-
是否具备分配 roleIdList 中角色的权限
-
-
后续生效点:
-
角色被 BaseRoleManagerImpl 读取并参与权限计算
-
Sa-Token 接口加载角色并参与鉴权与租户管理员判定
-
4. 安全建议
在 service 层增加强制授权校验:
-
校验操作者是否有权修改该 employeeId
-
校验每个 roleId 是否在其可授权范围内
-
禁止越级授权与敏感角色分配
-
默认拒绝跨租户角色绑定
Issue 2: POST /baseRole/roleEmployee
1. 风险分析(危害分析)
该接口允许按 roleId 批量绑定 employeeIdList,未限制角色与用户的管理边界。攻击者可将高权限角色批量赋予任意用户,实现规模化提权,导致后台权限体系失控。
2. 漏洞信息
-
类型:对象级授权缺失
-
影响对象:base_employee_role_rel.employee_id / role_id
-
核心问题:未限制 roleId 与 employeeIdList 的授权范围
3. 核验细节
-
入口授权:
网关执行 URI 级权限控制 -
Sink 写入:
service 按 roleId + employeeIdList 直接写入关系表 -
缺失检查:
未校验:-
roleId 是否在操作者可授权范围
-
employeeIdList 是否在操作者可管理范围
-
-
后续生效点:
同 Issue 1,角色进入权限计算链路
4. 安全建议
-
校验 roleId 是否属于操作者可授权集合
-
校验 employeeIdList 是否在管理范围内
-
禁止跨租户、越级授权及敏感角色分配
-
拒绝任一不满足条件的整体请求
Issue 3: POST /baseOrg/orgRole
1. 风险分析(危害分析)
该接口允许为组织绑定角色,且员工可通过组织继承角色。攻击者可将高权限角色绑定到任意组织,使组织内所有员工批量获得权限,造成大范围权限扩散。
2. 漏洞信息
-
类型:对象级授权缺失
-
影响对象:base_org_role_rel.role_id
-
核心问题:未校验 orgId 与 roleIdList 的绑定权限
3. 核验细节
-
入口授权:
网关统一 URI 权限校验 -
Sink 写入:
service 按 orgId + roleIdList 写入 base_org_role_rel -
缺失检查:
未校验:-
是否有权管理该 orgId
-
是否可授予 roleIdList 中的角色
-
-
后续生效点:
员工通过组织继承角色,进入权限计算链路
4. 安全建议
-
校验 orgId 是否在操作者管理范围
-
校验 roleIdList 是否在可授权范围
-
禁止跨租户与越级角色绑定
-
对敏感角色默认拒绝
Issue 4: POST /baseRole/roleResource
1. 风险分析(危害分析)
该接口允许为角色绑定资源权限,未限制资源授权范围。攻击者可将高敏资源绑定到目标角色,从而放大该角色持有者的实际权限,导致关键功能失守。
2. 漏洞信息
-
类型:属性级越权写入
-
影响对象:base_role_resource_rel.resource_id
-
核心问题:未校验 resource_id 与 role_id 的授权边界
3. 核验细节
-
入口授权:
仅执行 URI 级权限校验 -
Sink 写入:
service 清空原资源后,按请求重写 resource_id 与 application_id -
缺失检查:
未校验:-
操作者是否可管理该 role_id
-
resource_id 是否可被授予
-
application_id 与 resource_id 是否匹配
-
-
后续生效点:
资源权限被加载并参与 Sa-Token 鉴权
4. 安全建议
-
校验 role_id 管理权限
-
校验 resource_id 可授予范围
-
校验 resource 与 application 的归属关系
-
拒绝越级授权及跨应用绑定
Issue 5: PUT /defUser/resetPassword
1. 风险分析(危害分析)
该接口允许直接按用户 ID 重置密码,未限制操作者权限。攻击者可重置任意用户密码并接管账号,进一步扩展攻击范围。
2. 漏洞信息
-
类型:对象级授权缺失
-
影响对象:def_user.password
-
核心问题:未校验是否有权操作目标用户
3. 核验细节
-
入口授权:
仅通过 URI 权限校验 -
Sink 写入:
service 仅校验用户存在与密码格式,随后直接更新密码 -
缺失检查:
未校验:-
是否有权重置该用户密码
-
是否为高敏感账号
-
-
后续生效点:
新密码立即参与登录认证
4. 安全建议
-
限制仅本人或授权管理员可重置密码
-
禁止越级操作高权限账号
-
引入二次验证机制
-
增加审计与告警
Issue 6: POST /defGenTable/importTable
1. 风险分析(危害分析)
该接口允许按 dsId 导入数据源表结构,未校验数据源使用权限。攻击者可访问未授权数据源,进行跨库信息探测并导出元数据。
2. 漏洞信息
-
类型:对象级授权缺失
-
影响对象:ds_id
-
核心问题:未校验数据源访问权限
3. 核验细节
-
入口授权:
仅执行 URI 级权限校验 -
Sink 写入:
service 根据 dsId 查询数据源并导入表结构 -
缺失检查:
未校验:-
是否有权访问该 dsId
-
表级访问控制
-
-
后续生效点:
导入结果被用于代码生成、预览与下载
4. 安全建议
-
校验 dsId 使用权限
-
限制数据源访问范围
-
引入表级白名单
-
将导入与代码生成绑定统一授权边界

浙公网安备 33010602011771号