Skip to content

fix(security): VPLUS-2026-34718 - fix DBus permission configuration#658

Merged
deepin-bot[bot] merged 1 commit intolinuxdeepin:masterfrom
add-uos:master
May 9, 2026
Merged

fix(security): VPLUS-2026-34718 - fix DBus permission configuration#658
deepin-bot[bot] merged 1 commit intolinuxdeepin:masterfrom
add-uos:master

Conversation

@add-uos
Copy link
Copy Markdown
Contributor

@add-uos add-uos commented May 9, 2026

Implement method-level permission separation for DBus service Default deny policy for all methods
Whitelist read-only methods (getAuthorizedInfo, getRemoveInfo, etc.)

Dangerous methods (aptUpdate, installDriver, disableInDevice) require authentication Add comprehensive security policy documentation

Security impact:
Fixes privilege escalation vulnerability (CVSS 8.1) Prevents unauthorized access to root-level operations Clear maintenance guidelines for future DBus method additions

CVSS: 8.1 (High)
Affected: All systems with deepin-devicemanager installed
PMS: TASK-389221

Implement method-level permission separation for DBus service
Default deny policy for all methods
Whitelist read-only methods (getAuthorizedInfo, getRemoveInfo, etc.)

Dangerous methods (aptUpdate, installDriver, disableInDevice) require authentication
Add comprehensive security policy documentation

Security impact:
Fixes privilege escalation vulnerability (CVSS 8.1)
Prevents unauthorized access to root-level operations
Clear maintenance guidelines for future DBus method additions

CVSS: 8.1 (High)
Affected: All systems with deepin-devicemanager installed
PMS: TASK-389221
Copy link
Copy Markdown

@sourcery-ai sourcery-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @add-uos, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@deepin-ci-robot
Copy link
Copy Markdown

deepin pr auto review

这份 git diff 展示了对 org.deepin.devicecontrol.conf 配置文件的修改,该文件是 DBus 系统总线服务的安全策略配置。以下是针对语法逻辑、代码质量、代码性能和代码安全的详细审查意见:

1. 代码逻辑与安全性审查

整体评价:
这次修改显著增强了安全性。策略从“默认拒绝,仅白名单只读方法允许”转变为“默认拒绝,仅白名单前端使用的方法允许(且需认证)”。这遵循了最小权限原则,减少了攻击面。

具体分析:

  • 策略变更(核心安全改进):

    • 修改前: 白名单包含 monitorWorkingDBFlag, checkModuleInUsed, isBlackListed 等查询类方法。注释暗示这些是“只读方法”,可能不需要认证(或隐含在 default policy 中)。这存在风险,因为即使是只读信息(如 isBlackListed)也可能泄露系统状态。
    • 修改后: 移除了上述查询方法,并添加了 enable, installDriver, aptUpdate 等高风险操作方法。注释明确指出“所有白名单方法都需要 Polkit 认证”。
    • 结论: 这是一个非常积极的安全改进。将所有暴露给前端的接口统一纳入受控范围,避免了区分“安全只读”和“危险写入”可能带来的疏漏。
  • 白名单内容变更:

    • 移除的方法: monitorWorkingDBFlag, checkModuleInUsed, isBlackListed
      • 意见: 很好。移除未使用的接口减少了攻击面。如果前端确实不需要这些信息,就不应该暴露它们。
    • 新增的方法: isDriverPackage, isArchMatched, isDebValid, enable, enableKeyboard, enablePrinter, setWakeupMachine, setNetworkWake, unInstallDriver, installDriver, undoInstallDriver, backupDeb, delDeb, aptUpdate, unInstallPrinter
      • 意见: 这些方法涵盖了设备管理、驱动安装、系统唤醒等核心功能。将它们加入白名单意味着前端需要调用它们。由于注释声明需要 Polkit 认证,只要后端实现正确检查了权限,这就是安全的。
  • 注释更新:

    • 注释从“只读方法”更新为“前端使用的方法”,并强调了“最小暴露”原则。这有助于未来的维护者理解安全策略,避免随意添加接口。

2. 代码质量审查

  • 格式规范:
    • XML 结构完整,标签闭合正确。
    • 缩进和空格使用一致,可读性良好。
  • 可维护性:
    • 顶部的详细注释(<!-- ... -->)非常出色,清晰地解释了当前的安全策略和添加新方法的步骤,这对长期维护非常重要。
    • 日期和漏洞编号(VPLUS-2026-34718)的更新有助于追踪变更历史。

3. 代码性能审查

  • DBus 策略文件的解析通常在服务启动或配置重载时进行一次,对运行时性能影响极小。因此,白名单条目的数量(在合理范围内)对性能没有显著影响。

4. 潜在风险与改进建议

尽管这次修改在安全性上有了很大提升,但仍有几点需要特别注意:

  1. Polkit 认证的一致性(关键):

    • 配置文件注释声明:“所有白名单方法都需要 Polkit 认证”。
    • 风险: 这个配置文件本身只定义了谁可以连接/发送消息(DBus 层面的 ACL),它不负责执行 Polkit 认证。Polkit 认证必须在后端服务(C++/Python/Go 代码等)的实现中显式调用(例如使用 polkit_authority_check_authorization)。
    • 建议: 必须审查后端代码(deepin-devicecontrol 的实现),确保每一个在白名单中列出的方法(包括新增的 installDriver, enable 等)在其实现内部都正确地检查了 Polkit 权限。如果后端没有检查,那么仅靠这个配置文件,任何本地用户都可以调用这些危险方法。
  2. 方法分类:

    • 新增的白名单中混合了不同危险等级的操作,例如:
      • 查询类:isDriverPackage, isArchMatched
      • 系统设置类:setWakeupMachine, enable
      • 包管理类(高危):installDriver, aptUpdate, unInstallDriver
    • 建议: 虽然都要求认证,但在后端实现 Polkit 策略时(.policy 文件),应确保为不同危险等级的操作定义不同的 action_id 和认证等级(例如:yes(无需密码)、auth_admin(需要管理员密码)、auth_admin_keep)。不能对所有方法使用相同的宽松认证策略。
  3. 未使用方法的彻底移除:

    • 配置中移除了 isBlackListed 等方法。
    • 建议: 确认后端代码中是否也相应地移除或废弃了这些方法的 DBus 接口注册。如果接口还在注册但没在 conf 中放行,调用会报错,这没问题;但最好的做法是如果确实不需要,就从代码中彻底删除,以减少代码库的复杂性和潜在的后门。

总结

这份 diff 代表了一次高质量的安全加固工作。它通过收紧白名单策略,从“允许部分只读”转变为“仅允许前端必需且受控的操作”,显著提升了系统的安全性。

最终建议:
批准合并,但必须附带一个验证步骤:检查后端服务代码,确保所有新增到白名单的方法在实现时都严格执行了 Polkit 权限验证。配置文件控制了“门是否开”,而后端代码控制了“进门后是否查身份证”,两者缺一不可。

@deepin-ci-robot
Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: add-uos, lzwind

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@add-uos
Copy link
Copy Markdown
Contributor Author

add-uos commented May 9, 2026

/merge

@deepin-bot deepin-bot Bot merged commit 775e8c9 into linuxdeepin:master May 9, 2026
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants