Debian 维护者删除了 KeePassXC 的网络相关功能

时间:2024-05-21

像 Debian 这样历史悠久的发行版全靠自愿者用业余时间在维护,包的维护不仅要确保包能在系统中正常工作,还要处理 bug 反馈,以及和软件的上游开发者沟通等等工作。有时由于种种原因(安全问题、兼容性问题、特定平台上无法编译等),包的维护者在打包时需要给上游软件的源码打上额外的补丁才能符合 Debian 的做事方式。(虽然历史上出现了好几次因 Debian 维护者私自打补丁而引发出新的漏洞)

最近发生了一件好玩的事。

KeePassXC 是一个开源的密码管理器,这几天我更新了 Debian testing 后导致 KeePassXC 的“浏览器集成”功能不能正常工作了(浏览器中没法自动填充密码),才发现 Debian 源中新版本的 KeePassXC 已经没这项功能了。“自动填充密码”是现代密码管理器的一项基本功能,密码管理器和浏览器通信,在访问登陆页面时能根据网址自动填充事先存储的密码,没有这个功能就只能手动复制密码了。我在 KeePassXC 的官方仓库找到了相关的 Issue,已经吵翻天了1

事情原委是这样的:

KeePassXC 的开发者最近收到了几次类似的报告,并在 Issue 里 at 了 Julian Andres Klode,希望他尽快处理:

@julian-klode this needs to be reverted asap. This is now our fourth bug report because of the decision to neuter the base KeePassXC package in Debian. Put the base package back where it was and create a keepassxc-minimal.

@julian-klode 这个需要尽快恢复。这已经是我们的第四个错误报告了,因为 Debian 决定对 KeePassXC 的基本软件包进行中性处理。将基础包放回原处并创建一个 keepassxc-minimal。

Julian Andres Klode 是 KeePassXC 的 Debian 库维护者、Ubuntu 开发者,他认为 KeePassXC 的“浏览器集成”功能是“蹩脚的”,会有安全隐患,于是在没有和上游开发者意见达成一致的情况下把“keepassxc”包里这些功能给去掉了(在编译二进制时关闭了这些功能),而拥有完整功能的放到了名叫“keepassxc-full”的包里(apt install keepassxc-full),所以使用 Debian testing/sid 的用户在升级 KeePassXC 后会得到一个阉割的版本。

Julian 的答复:

I'm afraid that's not going to happen. It was a mistake to ship with all plugins built by default. This will be painful for a year as users annoyingly do not read the NEWS files they should be reading but there's little that can be done about that.

恐怕这不可能。默认内置所有插件就是个错。因为他们恼火地不阅读应该阅读的 NEWS 文件,但对此基本上无能为力。

It is our responsibility to our users to provide them the most secure option possible as the default. All of these features are superfluous and do not really belong in a local password database manager, these developments are all utterly misguided.

我们有责任为用户提供尽可能安全的默认选项。所有这些功能都是多余的,并不属于本地密码数据库管理器,这些开发都是完全错误的。

Users who need this crap can install the crappy version but obviously this increases the risk of drive-by contributor attacks.

需要这些垃圾功能的用户可以安装蹩脚的版本,但显然这会增加被其他贡献者攻击的风险。

我唯一感到不适的是他说“所有功能都是多余的”,功能是否多余,应该是软件开发者和用户说了算,而不是包维护者单方面决策的。

这件事在 HackerNews2 和上游的 Issue 中都引发了激烈的讨论:

1、不少人认为 Julian 对上游开发者沟通中用“crap”、“crappy”这样的词语违反了 Debian 的行为准则3

2、维护者的职责是保证上游的软件在 Debian 里正常工作,必要的情况下应该提供 keepassxc-tiny、keepassxc-minimal 包给有安全考虑的用户,而不是直接破坏 KeePassXC 现有的功能。

3、KeePassXC 上游可以通过 UI 提示告知用户没有安装浏览器集成的功能。

Footnotes: