fix: 调整 lastore 调用方鉴权逻辑以适配 deepin-security-loader#427
Conversation
Description: 将安装、卸载和全屏升级等接口的二进制路径白名单鉴权改为允许调用者列表、lightdm 特殊 uid 与 polkit 回退校验,导出 SetAllowCaller 接口并将允许调用者保存到运行时目录,同时同步更新 D-Bus 访问规则、systemd RuntimeDirectory 和相关测试。 Log: 调整 lastore 的调用方鉴权逻辑以适配 deepin-security-loader Task: https://pms.uniontech.com/task-view-389535.html Influence: 控制中心、锁屏等经 deepin-security-loader 启动的服务可通过允许调用者列表访问安装、卸载和升级相关接口,lightdm greeter 可按特殊 uid 直接调用,未放行调用方仍需通过 polkit 鉴权。
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: zhaohuiw42 The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
CLA Assistant Lite bot: |
deepin pr auto review你好!我是CodeGeeX。我已仔细审查了你提供的Git Diff。本次代码变更的核心是将lastore-daemon的鉴权机制从**“基于可执行文件路径白名单”重构为“基于DBus唯一名白名单+ 特殊UID信任 + Polkit认证”**的组合鉴权模型。这是一个非常合理的安全架构演进,因为基于路径的白名单容易被替换或符号链接攻击,而基于连接的唯一名和UID更加可靠。 不过,在代码实现细节上,我发现了一些严重的安全漏洞、并发隐患以及代码质量问题。以下是详细的审查意见和改进建议: 一、 代码安全1. 严重:
2. 严重:
3. 高危:
二、 代码逻辑与性能1. 并发锁粒度问题导致死锁或性能低下
2.
3.
三、 代码质量1. 大量重复的鉴权样板代码
2.
3. 遗留的清理不彻底
总结与核心修改建议
整体而言,这次重构的方向非常正确,摒弃了不可靠的可执行路径检测,改用连接状态和UID结合的方式,只要堵住上述的鉴权漏洞和并发隐患,代码的安全性和可维护性将大幅提升。 |
Description: 将安装、卸载和全屏升级等接口的二进制路径白名单鉴权改为允许调用者列表、lightdm 特殊 uid 与 polkit 回退校验,导出 SetAllowCaller 接口并将允许调用者保存到运行时目录,同时同步更新 D-Bus 访问规则、systemd RuntimeDirectory 和相关测试。
Log: 调整 lastore 的调用方鉴权逻辑以适配 deepin-security-loader
Task: https://pms.uniontech.com/task-view-389535.html
Influence: 控制中心、锁屏等经 deepin-security-loader 启动的服务可通过允许调用者列表访问安装、卸载和升级相关接口,lightdm greeter 可按特殊 uid 直接调用,未放行调用方仍需通过 polkit 鉴权。