weixin_39687621
2020-12-25 21:54 阅读 11

cmdb超级用户权限管理漏洞

描述您遇到的bug
超级用户的菜单权限可以修改,超级用户把自己的权限配置功能的权限给去掉了(无意或有意),然后超级用户就不能再在界面配置权限(因为配置权限功能已不存在)

如何重现 建议定制更严谨的规则限制这种无拘无束的修改,比如cmdb必须至少有一个超级用户;超级用户拥有全部的菜单权限;当只存在一个超级用户时,他不能再修改菜单权限

预期行为 不要存在在界面对用户进行权限管理配置后,最后只能从后台修改数据来恢复相应权限配置。

截图

附加

该提问来源于开源项目:WeBankPartners/we-cmdb

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • weixin_39995108 weixin_39995108 2020-12-25 21:54

    不错的发现,帮忙看看wecube portal是否存在同样的问题,如有一并修复

    点赞 评论 复制链接分享
  • weixin_39874795 weixin_39874795 2020-12-25 21:54

    不错的发现,帮忙看看wecube portal是否存在同样的问题,如有一并修复

    一样的问题。 前端看看如何把超级管理员对自己权限配置取消功能灰掉。 能否在后端也做个校验?当超级管理员试图去取消自己权限配置功能的权限时,报个错误?

    点赞 评论 复制链接分享
  • weixin_39995108 weixin_39995108 2020-12-25 21:54

    后端校验的初步方案如下:

    CMDB UI: 1. 在cmdb的4张表(adm_role, adm_user, adm_role_user, adm_role_menu)增加一个字段is_system, 数据初始化时, 超级管理员相关数据的is_system为true,其他后续增加的数据默认为false 2. 完后对这4张表的删除操作做校验,如要删除数据的is_system为true, 则返回异常提示。

    Wecube Portal 1. 在wecube-core里的表role_menu增加一个字段is_system, 数据初始化时, 超级管理员相关数据的is_system为true,其他后续增加的数据默认为false 2. 完后对这张表的删除操作做校验,如要删除数据的is_system为true, 则返回异常提示。

    帮忙看看是否可行或有更好的建议,欢迎提出,多谢。

    点赞 评论 复制链接分享
  • weixin_39995108 weixin_39995108 2020-12-25 21:54

    Fixed at: https://github.com/WeBankPartners/we-cmdb/pull/182

    点赞 评论 复制链接分享

相关推荐