一年前 SUSE/openSUSE 因持续安全隐患率先移除 Deepin 桌面软件包,如今 Fedora 跟进了同样的决定。原因高度相似——安全审查暴露的问题迟迟得不到修复,而上游维护者几乎失联。对于依赖 Deepin 桌面环境的 Fedora 用户来说,这意味着一次不得不做的环境切换;对于发行版维护者而言,这是一次关于"何时该割舍不可维护软件"的实操案例。
安全审查的结论:问题不是偶发,是系统性
SUSE 披露 Deepin 安全问题后,Fedora 工程指导委员会(FESCo)随即开启工单,要求对 Deepin 软件包做正式安全审查。审查结果并不乐观:安全隐患并非个别组件的偶发缺陷,而是涉及多个核心模块的系统性问题。更关键的是,这些问题在审查期间几乎没有得到上游的响应和修复。
这类安全隐患通常集中在几个方向:
- 权限提升漏洞:桌面组件以过高权限运行,本地用户可利用缺陷获取 root 权限。
- 不安全的网络通信:部分服务使用未加密或弱加密的通道与后端交互。
- 硬编码路径与信任边界模糊:Deepin 部分工具对系统路径和外部输入的校验不严格,容易成为攻击链入口。
这些问题在桌面环境中尤其危险——桌面是用户交互的第一层,漏洞被利用的门槛远低于服务端组件。
维护失联:上游沉默让发行版独自扛风险
Fedora 开发人员在审查期间反复尝试联系 Deepin 上游维护者,结果是大面积失联。部分软件包的 bug 报告和安全补丁长期无人回应,Fedora 维护者不得不自行判断哪些问题可以就地修补、哪些只能标记为已知缺陷。
发行版对第三方软件包的责任边界是:打包、适配、安全响应协调。当上游沉默时,发行版实际上被迫承担了本应由上游完成的安全修复工作——而 Deepin 的代码量和架构复杂度远超 Fedora 维护者能独立兜底的范围。
这也是 SUSE 一年前做出同样决定的核心理由:不是"不想支持",而是"无法安全地支持"。
检查你的系统:如何确认影响并安全移除
如果你的 Fedora 系统上安装了 Deepin 相关软件包,现在需要确认范围并完成移除。以下命令可以直接复制运行:
# 1. 列出当前已安装的所有 deepin 相关软件包
rpm -qa | grep -i deepin
# 2. 查看这些包的依赖关系(确认移除不会连带破坏其他桌面)
rpm -qa | grep -i deepin | xargs -I{} rpm -qR {}
# 3. 批量移除所有 deepin 软件包(--nodeps 仅在确认无关键依赖后使用)
sudo dnf remove $(rpm -qa | grep -i deepin) --exclude=deepin-terminal # 举例:保留你仍需要的单个组件
# 4. 清理残留配置
find ~/.config -maxdepth 1 -iname '*deepin*' -type d
# 确认后手动删除:
rm -rf ~/.config/deepin*
如果你只是想快速检查某个 Deepin 组件是否仍在仓库中可用:
# 检查仓库中是否还残留 deepin 包的元数据
dnf list available | grep -i deepin
移除后建议重启或重新登录会话,确保桌面环境不再尝试加载已删除的 Deepin 服务。
写一个简易安全审计脚本:给本地软件包做风险标记
Deepin 事件提醒我们:发行版仓库中的软件包安全状态并非静态。你可以用以下脚本对本地安装的第三方桌面软件包做一次简易审计——标记那些上游活跃度低、安全更新少的包:
#!/usr/bash
# pkg-security-audit.sh
# 对本地已安装软件包做简易安全活跃度检查
# 依赖: rpm, dnf, curl
echo "=== 本地软件包安全活跃度审计 ==="
# 获取最近 90 天内有安全更新的包列表
SECURITY_UPDATES=$(dnf updateinfo list security | tail -n +2 | awk '{print $2}' | sort -u)
# 获取所有已安装包名
ALL_PKGS=$(rpm -qa | sort)
echo ""
echo "近 90 天收到安全更新的包数量: $(echo "$SECURITY_UPDATES" | wc -l)"
echo ""
# 标记 90 天内无安全更新的包(高风险候选)
echo "--- 90 天内未收到安全更新的已安装包(前 20 条)---"
comm -23 <(echo "$ALL_PKGS") <(echo "$SECURITY_UPDATES") | head -20
echo ""
echo "--- 建议:对上述包逐一检查上游维护状态 ---"
echo " 可用命令: rpm -qi <包名> | grep -E 'URL|Vendor|Packager'"
运行方式:
chmod +x pkg-security-audit.sh
sudo ./pkg-security-audit.sh # dnf updateinfo 需要 root 权限
这个脚本不会给出确定性结论,但能帮你快速定位那些"长期没有安全更新"的包——它们正是最需要人工审查上游活跃度的对象。
给发行版维护者和用户的几条实操建议
对发行版维护者:
- 新软件包入库前,务必确认上游有可联系的维护者和可追踪的安全响应流程。没有这两项,入库就是埋雷。
- 设定明确的"维护失联阈值"——比如连续两个重大安全缺陷 60 天内无上游响应,即启动移除评估。
- 对已有软件包做定期上游活跃度复查,不要等问题爆发才被动审查。
对桌面用户:
- 不要因为"好看"就忽视桌面环境的安全基线。桌面组件权限高、交互面广,是攻击者的优先目标。
- 定期用
dnf updateinfo list security检查自己安装的包是否有未处理的安全通告。 - 当发行版移除某个桌面环境时,优先切换到维护活跃的替代方案(如 GNOME、KDE),而非自行从第三方源继续安装已标记为不安全的包。
Fedora 移除 Deepin 不是对某个国产桌面环境的偏见,而是对"无法安全维护的软件必须移除"这一原则的执行。这个原则对任何发行版、任何软件包都适用。