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

knowledge BOPLA VULNs Report

 


Issue 1: protect.Knowledge/save

1. Risk Analysis

An attacker can inject themselves into the editors ACL during an update request, thereby bypassing authorization checks and gaining edit control over arbitrary knowledge entries. This enables unauthorized content modification and persistent privilege takeover.


2. Vulnerability Details

Endpoint: protect.Knowledge/save
Type: (update, knowledge.editors)


3. Verification Details

  • Entry Point:
    KnowledgeControl.java:266 constructs KnowledgeData from request parameters.
    KnowledgeControl.java:276 performs authorization using data.getEditors().

  • Issue:
    The editors field is directly sourced from the request (KnowledgeData.java:53) and used in authorization checks.

  • Sink:
    KnowledgeLogic.java:254 removes existing ACL entries.
    KnowledgeLogic.java:385 rewrites KNOWLEDGE_EDIT_USERS and KNOWLEDGE_EDIT_GROUPS based on request data.

  • Effective Point:
    Subsequent authorization logic continues to trust this modified ACL (KnowledgeLogic.java:1364).

  • Control Comparison:
    The GET edit path retrieves editors from the database before authorization (KnowledgeControl.java:164), while the POST update path does not.

  • Conclusion:
    Authorization is based on untrusted request data rather than a server-side trusted source, resulting in a broken authorization model.


4. Security Recommendation

Enforce authorization using trusted ACL data loaded from the database before processing updates. Only allow modification of the editors field after authorization succeeds, and never use request parameters as the basis for permission checks.


Issue 2: protect.Group/addUsers

1. Risk Analysis

An attacker with access to a group can add arbitrary users to that group, causing those users to inherit group-based permissions. This leads to privilege escalation, unauthorized data access, and potential content tampering.


2. Vulnerability Details

Endpoint: protect.Group/addUsers
Type: (addUsers, user_group.userId), (addUsers, user_group.groupRole)


3. Verification Details

  • Entry Point:
    GroupControl.java:505 directly invokes GroupLogic.addUsers(...).

  • Sink:
    GroupLogic.java:308 checks only selectAccessAbleGroup.
    GroupLogic.java:327 inserts into USER_GROUPS with role member.

  • Issue:
    The “accessible group” check is weaker than the “manageable group” check (selectEditAbleGroup).

  • Effective Point:
    Knowledge access and editing rely on group membership (KnowledgeLogic.java:955, KnowledgeLogic.java:1398).

  • Control Comparison:
    Other methods (accept, addUsersOnEmail) enforce getEditAbleGroup() (GroupControl.java:366, GroupControl.java:539).

  • Conclusion:
    The system incorrectly treats “view access” as “management permission,” allowing unauthorized group membership changes.


4. Security Recommendation

Restrict addUsers to users with group management privileges. Enforce server-side validation using getEditAbleGroup() or equivalent logic before inserting into USER_GROUPS.


Issue 3: protect.Survey/delete

1. Risk Analysis

An attacker can delete surveys and all associated data without authorization, resulting in irreversible data loss and disruption of business workflows.


2. Vulnerability Details

Endpoint: protect.Survey/delete
Type: (delete, survey.knowledgeId)


3. Verification Details

  • Entry Point:
    SurveyControl.java:139 directly calls SurveyLogic.deleteSurvey(id).

  • Sink:
    SurveyLogic.java:157 deletes records from:

    • SURVEYS

    • SURVEY_ITEMS

    • SURVEY_CHOICES

    • SURVEY_ANSWERS

    • SURVEY_ITEM_ANSWERS
      without any authorization checks.

  • Effective Point:
    loadSurvey() (SurveyLogic.java:96) fails once data is deleted.

  • Control Comparison:
    Other operations (save, report, edit, answers) enforce KnowledgeLogic.isEditor(...).

  • Conclusion:
    The delete path lacks the authorization checks consistently applied in other survey operations.


4. Security Recommendation

Apply the same authorization checks used in other survey operations. Validate permissions using KnowledgeLogic.isEditor(...) based on the associated knowledge object before performing deletion.


Issue 4: File Binding in Knowledge Operations

1. Risk Analysis

An attacker can bind files uploaded by other users to a knowledge entry, causing those files to become accessible under knowledge-level permissions. This enables unauthorized file access and data exfiltration.


2. Vulnerability Details

Endpoints:

  • protect.Knowledge/save

  • protect.Knowledge/comment

  • protect.Knowledge/update_comment

Type: (bind, knowledge_file.fileNo), (bind, knowledge_file.insertUser)


3. Verification Details

  • Entry Point:
    These endpoints accept files parameters (KnowledgeControl.java:210, 266, 454, 571).

  • Sink:
    UploadedFileLogic.java:151, 199 binds files when knowledgeId is null.
    KnowledgeFilesDao.java:87 performs binding without validating ownership.

  • Issue:
    No validation of insertUser or draftId ownership.

  • Effective Point:
    After binding, access control shifts from uploader-based to knowledge-based (UploadedFileLogic.java:320).
    Public download endpoint (FileControl.java:27) reuses this logic.

  • Additional Risk:
    FILE_NO is sequential (ddl.sql:856), making enumeration feasible.

  • Control Comparison:
    Unbound files enforce uploader-based access (UploadedFileLogic.java:331), but binding bypasses this restriction.

  • Conclusion:
    Missing ownership validation during binding leads to unauthorized access after permission model transition.


4. Security Recommendation

Before binding, validate file ownership by checking insertUser or draftId against the current user/session. Only allow binding of files explicitly uploaded within the current editing context. Reject any file that fails ownership validation.

http://www.jsqmd.com/news/764620/

相关文章:

  • 体验Taotoken全球节点带来的低延迟与高稳定性模型调用
  • 导热仪市场主流品牌盘点:国内外厂家概览与选型参考 - 品牌推荐大师1
  • Ultra-Fast-Lane-Detection核心架构解析:从ResNet到结构感知网络
  • Visual-TableQA:多模态表格图像问答数据集与模型解析
  • 微信商城搭建有哪些平台?2026 权威推荐,适配全行业 - FaiscoJeff
  • 构建统一开发规则库:从ESLint、Husky到团队工程化实践
  • Java+Vue前后端分离在线考试系统架构解析与实战指南
  • NW.js触控屏支持终极指南:为触摸设备优化桌面应用体验
  • 用PCA分析中国各省消费结构:一份R语言实战报告(含数据清洗、降维与可视化全流程)
  • 通过 Python 快速接入 Taotoken 并调用聊天补全接口
  • 新房装修、养宠除味、母婴抗敏:霍尼韦尔三款空气净化器全场景推荐
  • 边缘AI推理卡顿?MCP 2026部署性能优化必须做的6件事,第4项被83%工程师忽略
  • 国内土工格栅头部供应商盘点:5家企业实力解析 - 奔跑123
  • React-Redux选择器模式:reselect库的高效集成终极指南
  • 2026 物流飞行安全评估无人机低空平台推荐,试试冰柏科技评估平台 - 品牌2026
  • OPC UA服务端开发避坑指南:基于open62541在Ubuntu上创建并管理你的第一个数据节点
  • 如何使用Modern JavaScript Cheatsheet掌握Node-RED和Blockly可视化编程:终极指南
  • 5分钟掌握NVIDIA Profile Inspector:如何用隐藏设置彻底优化游戏性能
  • SteamAutoCrack终极指南:如何轻松实现Steam游戏自动破解
  • Techlabz Keybox:旧笔记本键盘改造为USB/蓝牙外设指南
  • TALON框架:测试时自适应的实时新类别发现技术
  • 2026年贵阳毛坯房装修完全指南:透明报价、工艺对标与官方直达通道 - 年度推荐企业名录
  • 对比直接使用官方API通过Taotoken调用在计费透明度上的差异
  • 2026年贵阳毛坯房装修全链条解决方案:原创家装透明化全案与行业深度横评 - 年度推荐企业名录
  • 5分钟快速部署开源大麦网自动抢票脚本:告别手动抢票烦恼
  • Realtek 8852AE无线网卡驱动:Wi-Fi 6/7网络性能提升完整指南
  • FLORIS风电场仿真工具:从经典尾流模型到AI驱动的完整技术演进指南
  • 生物科研必备:3分钟掌握Bioicons免费矢量图标库
  • 2026年冷却塔选购指南:从玻璃钢、不锈钢到异形、闭式冷却塔的实力解读 - 深度智识库
  • Windows 11安卓子系统终极指南:免费在电脑上运行手机应用的完整方案