很容易说这种行为是不好的。但我认为值得更详细地了解一下。
对于许多公司来说,安全问题是一个相当困难的情况,他们决定开源(部分)他们的程序,同时保留商业版本。如果无法立即创建修复程序,情况会变得更糟。
首先通知付费客户的动机
该公司显然像任何公司一样依赖其付费客户来生存。所以他们需要为这些客户提供一些额外的价值。
大公司可能会向客户付费,而小公司和独立人士则倾向于使用免费版本。那些大公司更有可能成为攻击的目标。如果攻击成功,他们更有可能受到负面新闻报道。
此外,未经修复的公共安全警告更有可能引起有恶意的人的注意。只是因为人数要大几个数量级。
如果几乎所有认真的用户都是付费客户,则尤其如此。换句话说:开源版本基本上是商业版本的演示。
发出联合安全警告的动机
公司发出公开警告后,可主张不再对事后造成的任何损害负责。如果用户没有采取反措施,例如安装修复程序,那将是他们自己的错。
尽早向付费客户提供信息可能会使他们中的某些人利用这些知识作恶。根据立法,它可能对公司构成法律威胁,即它没有警告所有用户,尽管它显然意识到了这个问题。
从用户的角度
谈完了公司的动机,我们再来看看用户方面。我认为很明显,付费客户会喜欢这种服务。
开源版本的用户会面临额外的风险,因此在生产环境或敏感数据中使用此类软件时应非常小心。
非商业 Arianne 开源项目如何处理安全问题?
我想以一些个人经历作为结束。Arianne 是一个开源项目,它由一个在线游戏框架和一个名为 Stendhal 的 2D 在线角色扮演游戏组成。它是非商业的,根本不赚钱。
有很多人在运行 Stendhal 服务器,因为它是完全开源的(客户端、服务器、图形,一切)。我们自己运行一个司汤达实例。
当我们在 Stendhal 中发现一个安全问题时,我们结束了这个过程:
- 我们在可信赖的核心开发人员之间共享信息,我们对其进行讨论并共同寻找根本原因。
- 我们修复了该问题并将更改提交到公共 CVS。其他核心开发人员审查修复并自行测试。
- 我们在我们的服务器上实时修复。
- 我们准备了基于最新稳定版本的错误修复版本。与此同时,其他核心开发人员进行了更多测试。普通玩家只是继续玩游戏,因此会隐含地测试副作用。
- 我们将最后一个稳定版本的次要版本与源代码补丁一起发布,并发布描述该问题的公告。
整个过程大约需要1到2个小时。
我们不会为旧版本发布错误修复,因为我们非常注意使版本之间的更新非常易于安装。有人不能跳到最新版本的唯一原因是他自己修改了代码。对于这些人,我们提供源代码补丁。
我可以看到有人可能会争辩说,首先更新我们自己的服务器是邪恶的,就像在公告之前将修复提交到公共 CVS 一样。但这是在尽可能短的时间内获得高质量修复的最有效方法。我们确实需要在实时服务器上进行简短测试,因为人们真的希望他们可以盲目地安装安全更新,而不必担心副作用。