km_community BOPLA VULNs Reports

 

✅ Issue 1:DELETE 文档链路(高危破坏型)

最大危害(优化版)

  • 任意已登录用户可删除他人文档及其物理文件,导致数据不可恢复丢失 + ES 索引同步删除,形成系统级内容破坏

修复关键点(更工程化)

  • 删除前统一走:

    checkDocPermission(docId, currentUser, DELETE)
    
  • 并确保以下操作在校验之后执行:

    • 删除 ES

    • 删除物理文件

    • 更新状态

👉 关键点:不要在多个 service 分散做删除动作


✅ Issue 2:下载 / 预览 / 替换预览(高危数据泄露 + 篡改)

最大危害(优化版)

  • 攻击者可绕过列表权限过滤,按 docId 直接访问文件流或篡改预览文件,导致敏感文档泄露与内容完整性破坏

修复关键点(关键是“统一读路径”)

  • 所有文件读取必须统一走:

getDocWithPermission(docId, READ)

并强制校验:

字段含义
public_flag 是否公开
create_by 是否本人
org_code 是否在组织范围
download_flag 是否允许下载

👉 当前问题本质是:

List path: 有 permissionSql
Detail path: 直接 getById ❌

✅ Issue 3:kmSysConfig(业务规则控制面劫持)

最大危害(优化版)

  • 任意用户可篡改系统配置,影响上传白名单、搜索权重与展示逻辑,导致规则绕过 + 内容投毒 + 搜索操控

修复关键点

两层必须同时做:

1️⃣ 入口权限

@RequiresRoles("admin")

2️⃣ service 白名单

if (!ALLOWED_CONFIG_KEYS.contains(itemCode)) reject;

3️⃣ 缓存一致性(你这个点很好)

  • 所有:

    • add

    • edit

    • delete
      必须统一触发 cache evict

 Issue 4:角色/权限提权链(核心漏洞,优先级最高)

这是你这批里最有价值的一个点,可以单独当 report 标题。


最大危害(我帮你强化一版,可以直接用)

  • 任意已登录用户可直接修改角色、权限及用户绑定关系,为自身或任意账号授予管理员权限,重新登录后即可接管后台并控制全站数据与功能执行。

本质问题(帮你抽象出来)

 
Auth: 只有 JWT(是否登录)
Sink: 写 RBAC 核心表
Missing: 授权边界校验(who can grant what to whom)
 

修复关键点(建议你用这一版)

必须补三层:

1️⃣ 控制器层(恢复注解)

 
@RequiresPermissions("sys:role:edit")
 

2️⃣ Service 层(核心)

引入统一校验:

 
checkRoleManageable(currentUser, roleId)
checkPermissionGrantable(currentUser, permissionId)
checkUserAssignable(currentUser, targetUserId)
 

3️⃣ 授权缓存失效

否则会出现:

 
越权写入成功 + 权限立即生效 ❌
 
posted @ 2026-05-06 15:15  Aibot  阅读(10)  评论(0)    收藏  举报