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 使用权限

  • 限制数据源访问范围

  • 引入表级白名单

  • 将导入与代码生成绑定统一授权边界

 

posted @ 2026-05-06 16:24  Aibot  阅读(3)  评论(0)    收藏  举报