分类 观点 下的文章

4 月 20 日,全世界都知道了明尼苏达大学(UMN)进行的一项研究计划,该计划涉及提交有意的错误补丁以纳入 Linux 内核。从那时起,由这项工作产生的一篇论文被撤回了,各种信件来来回回,来自 UMN 的许多补丁被审计。显然,现在是时候对情况进行更新了。

LCTT 译注:明尼苏达大学“伪君子提交”这件事引发了开源和技术社区的很多争议,我们也一直关注此事,本文是 LWN 编辑对事件后继发展的总结和观点。

关于这项研究的论文的撰写并不是最近事件的直接原因;相反,它是由 UMN 的另一位开发者发布的一个源于实验性静态分析工具的错误补丁引起的。这导致内核社区的开发者怀疑,提交故意恶意补丁的工作仍在进行。情况显然不是这样的,但当整个故事变得清晰时,讨论已经全面进行了。

LCTT 译注:提交“实验性静态分析工具的错误补丁”的开发者也是 UMN “伪君子提交”研究团队的成员,只是按该团队的说法,“伪君子提交”研究已经结束,最近引发争议的补丁来自另外一个项目。

老话仍然适用:不应该把那些可以充分解释为无能的东西归结为恶意。

4 月 22 日,Linux 基金会技术顾问委员会(TAB,写作本文的 LWN 编辑是该委员会的成员)发表了一份简短的声明,指出,除其他事项外,最近的补丁似乎是真诚地提交的。同时,Linux 基金会和 TAB 给 UMN 的研究人员发了一封信,概述了应该如何处理这种情况;该信没有公开发布,但 ZDNet 显然从某个地方得到了一份副本。除其他事项外,信中要求完全公开作为 UMN 项目的一部分而发送的错误补丁,并要求撤回这项工作所产生的论文。

作为回应,UMN 的研究人员发布了一封公开信,向社区道歉,几天后又发布了他们作为“伪君子提交”项目的一部分所做工作的总结。总共有五个补丁是从两个 sock-puppet 账户提交的,但其中一个是普通的 bug 修复,被错误地从这个错误的账户发送。在剩下的四个补丁中,其中一个是试图插入一个 bug,但是它本身没插入成功,所以这个补丁实际上是有效的;另外三个(123)包含真正的 bug,这三个都没有被维护者接受,尽管拒绝的原因不一定是有关的 bug。

LCTT 译注:根据 UMN 团队发布的总结:

  • 第一个补丁是以“伪君子提交”而发出的,但是后来实际检查发现实际解决了问题,于是 UMN 团队就没有阻止该补丁被合入。
  • 第二个补丁没有合入,但是内核维护者说之前有个别人的类似实现的补丁合并过,后来发现有问题而被别人撤销了。
  • 第三个补丁没有合入,内核维护者发现了一个问题而没有接受,但是其实该补丁还有另外一个问题并没有被发现。
  • 第四个补丁没有合入,和上一个类似,内核维护者没有发现有意放入的缺陷,而是找到另外的编码问题,因此没有合入。
  • 第五个补丁是有效的补丁,但不是这个项目的,使用了错误的邮箱发出的。

论文本身已被撤回,不会按原计划在 5 月提交。希望大家可以认为 UMN 在短期内不会再进行类似的研究了。

LCTT 译注:在原文下面有不少评论认为这个研究方向应该继续下去,只是方式方法需要改善。

补丁的重新审查

UMN 活动引起的关注的一个直接结果是,人们对其开发者失去了信任,加上某些方面希望采取某种惩罚性行动。因此,当整个事件爆发时,首先发生的事情之一是 Greg Kroah-Hartman(GKH)发布了一个由 190 个部分组成的补丁系列,以撤销他能找到的尽可能多的 UMN 的补丁。事实上,这并不是所有的补丁;他提到了另外 68 个需要人工审查的补丁清单,因为它们不容易撤销。

碰巧的是,这些“容易撤销”的补丁也需要人工审查;一旦最初的愤怒过去,就没有什么愿望去恢复那些实际上没有错误的补丁。在过去的一周里,这种审查过程一直在进行,一些开发人员在为之努力。大多数可疑的补丁被证明是可以接受的(即使不是很好),已经从撤销列表中删除了;如果本文作者的计数是正确的,仍有 42 个补丁将被从内核中撤出。

对于这 42 个补丁,撤销背后的原因各不相同。在某些情况下,这些补丁适用于旧的、可能是未使用的驱动程序,而且没有人愿意去适当地审查它们。在其他情况下,其希望实现的变更做得很差,将以更好的方式重新实现。而有些补丁包含了严重的错误;这些肯定需要被恢复(而且一开始就不应该被接受)。

不过,看一下全套的 UMN 补丁,印证了一些我们的早期印象。首先,几乎所有的补丁都解决了某种真正的(即使是晦涩难懂的且难以解决)问题;为之写一个补丁是有理由的。虽然这些补丁中有许多显示出对代码的理解程度很低,因此包含了错误,但似乎其中任何一个修复程序的意图都不大可能是恶意的。

也就是说,“恶意”有多种定义。对一些相关的开发者来说,发布未经验证的实验性静态分析工具的补丁而不披露其性质是一种恶意行为。这是另一种涉及未经同意的人类的实验形式。至少,这是对内核开发社区有效工作所需的信任的一种侵犯。

LCTT 译注:如果研究涉及到人类,为了避免人类受到伤害,需要取得人类同意,这就是研究需要得到 IRB 许可的原因。UMN 认为 “伪君子提交” 不是针对人类的研究,给予了 IRB 免除许可。在这个事件中,有人对 UMN IRB 的意见也很大,而且怀疑 IRB 是否有能力对计算机相关研究给出有效判断。

这 190 个补丁中有 42 个坏补丁,坏补丁比率是 22%。很有可能,对几乎任何一个内核开发者的 190 个补丁进行详细审查,都会发现一些回想起来并不是一个好主意的补丁。但愿这个比率不会接近 22%。但必须说的是,所有这些补丁都被整个内核的子系统维护者所接受,这不是一个好的结果。也许这比最初的“伪君子提交”的研究人员所寻找的结果更有意思。他们故意插入 bug 的努力失败了,但却在无意中增加几十个 bug

同时,还有一份不能干净地撤销的补丁清单。这个名单还没有公布,但 GKH 是从其中的七个子集开始的。他还指出,TAB 将在所有这些补丁的审计工作完成后公布一份完整的报告。到目前为止,这些补丁中还没有任何一个在主线上被撤销;这似乎有可能在 5.13 合并窗口结束时发生。

吸取的教训

从这一系列事件中得到的关键教训之一显然是:不要把自由软件开发社区作为你的实验性工具的一种免费验证服务。内核开发者很高兴看到新工具的产生,并且 —— 如果这些工具能带来好的结果 —— 就使用它们。他们也会帮助测试这些工具,但他们不太乐意成为缺乏适当审查和解释的工具产生的补丁的接受者。

另一个教训是我们已经知道的:内核维护者(以及许多其他自由软件项目的维护者)工作压力过度,没有时间正确地审查经过他们手中的每一个补丁。因此,他们不得不依赖向他们提交补丁的开发者的可信度。可以说,当这种信任得到妥善建立时,内核开发过程是勉强可持续的;如果通常无法信任进入的补丁时,那么它将无法维持下去。

推论 —— 也是我们已经知道的 —— 是进入内核的代码往往不像我们所想的那样得到很好的审查。我们希望相信每一行被合并的代码都经过了高质量的内核开发人员的仔细审查。有些代码确实得到了这种审查,但不是所有的代码。例如,考虑一下 5.12 开发周期(一个相对较小的周期),它在十周的时间里向内核添加了超过 50 万行的代码。仔细审查 50 万行代码所需的资源将是巨大的,因此,不幸的是,其中许多行在被合并之前只得到了粗略的审查而已。

最后一个教训是,人们可能倾向于认为内核正面临着被具有比 UMN 研究人员所展示的更多技能和资源的行为者插入恶意补丁的可怕风险。这可能是事实,但事情的简单真相是,正规的内核开发者继续以这样的速度插入错误,恶意行为者应该没有什么必要增加更多。2 月份发布的 5.11 内核,到 5.11.17 为止,在稳定更新中已经积累了 2281 个修复。如果我们做一个(过于简单的)假设,即每个修复都会修正一个原始的 5.11 补丁,那么进入 5.11 的补丁中有 16%(到目前为止)被证明是有错误的。这并不比 UMN 补丁的比率好多少。

所以,这也许是我们从整个经历中得到的真正教训:内核处理流程的速度是它最好的属性之一,我们都依赖它来尽可能快地获得功能。但是这种速度可能与严肃的补丁审查和低数量的错误不相容。在一段时间内,我们可能会看到处理变得有点慢,因为维护者觉得有必要更仔细地审查变化,特别是那些来自新的开发人员。但是,如果我们不能将更谨慎的处理流程制度化,我们将继续看到大量的 bug,而这些 bug 是否是故意插入的,其实并不重要。


via: https://lwn.net/SubscriberLink/854645/334317047842b6c3/

作者:Jonathan Corbet 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

软件有 bug。任何复杂系统都无法保证每个部分都能按计划工作。Fedora Linux 是一个 非常 复杂的系统,包含几千个包,这些包由全球无数个独立的上游项目创建。每周还有数百个更新。因此,问题是不可避免的。本文介绍了 bug 修复过程以及如何确定 bug 优先级。

发布开发过程

作为一个 Linux 发行项目,我们希望为用户提供完善的、一切正常的体验。我们的发布起始于 “Rawhide”。我们在 Rawhide 中集成了所有更新的自由及开源软件的新版本。我们一直在不断改进正在进行的测试和 持续集成 Continuous Integration 过程,为了让即使是 Rawhide 也能被冒险者安全使用。可是,从本质来讲,Rawhide 始终有点粗糙。

每年两次,我们把这个粗糙的操作系统先后分支到测试版本、最终版本。当我们这么做时,我们齐心协力地寻找问题。我们在 测试日 Test Days 检查特定的区域和功能。制作“ 候选版本 Candidate builds ”,并根据我们的 发布验证测试计划 进行检测。然后我们进入 冻结状态 freeze state ,只有批准的更改可以并入候选版本。这就把候选版本从持续的开发隔离开来,持续的开发不断并入 Rawhide 中。所以,不会引入新的问题。

在发布过程中许多 bug 被粉碎去除,这些 bug 有大有小。当一切按计划进行时,我们为所有用户提供了按计划发布的崭新的 Fedora Linux 版本。(在过去几年里,我们已经可靠地重复这一动作——感谢每一个为之努力工作的人!)如果确实有问题,我们可以将其标记为 发布阻碍 release blocker 。这就意味着我们要等到修复后才能发布。发布阻碍通常代表重大问题,该表达一定会引发对 bug 的关注。

有时,我们遇到的一些问题是持续存在的。可能一些问题已经持续了一两个版本,或者我们还没有达成共识的解决方案。有些问题确实困扰着许多用户,但个别问题并没有达到阻碍发布的程度。我们可以将这些东西标记为 阻碍 blocker 。但这会像锤子一样砸下来。阻碍可能导致最终粉碎该 bug,但也可能导致破坏了周围。如果进度落后,所有其它的 bug 修复、改进以及人们一直在努力的功能,都不能到达用户手中。

按优先顺序排列 bug 流程

所以,我们有另一种方法来解决烦人的 bug。按优先顺序排列 bug 流程,与其他方式不同,可以标出导致大量用户不满意的问题。这里没有锤子,更像是聚光灯。与发布阻碍不同,按优先顺序排列 bug 流程没有一套严格定义的标准。每个 bug 都是根据影响范围和严重性来评估的。

一个由感兴趣的贡献者组成的团队帮助策划一个简短列表,上面罗列着需要注意的问题。然后,我们的工作是将问题匹配到能够解决它们的人。这有助于减轻发布过程中的压力,因为它没有给问题指定任何特定的截止时间。理想情况下,我们能在进入测试阶段之前就发现并解决问题。我们尽量保持列表简短,不会超过几个,这样才会真正有重点。这种做法有助于团队和个人解决问题,因为他们知道我们尊重他们捉襟见肘的时间与精力。

通过这个过程,Fedora 解决了几十个严重而恼人的问题,包括从键盘输入故障到 SELinux 错误,再到数千兆字节大小的旧包更新会逐渐填满你的磁盘。但是我们可以做得更多——我们实际上收到的提案没有达到我们的处理能力上限。因此,如果你知道有什么事情导致了长期挫折或影响了很多人,至今没有达成解决方案,请遵循 按优先顺序排列 bug 流程,提交给我们。

你可以帮助我们

邀请所有 Fedora 贡献者参与按优化顺序排列 bug 的流程。评估会议每两周在 IRC 上举办一次。欢迎任何人加入并帮助我们评估提名的 bug。会议时间和地点参见 日历。Fedora 项目经理在会议开始的前一天将议程发送到 triagedevel 邮件列表。

欢迎报告 bug

当你发现 bug 时,无论大小,我们很感激你能报告 bug。在很多情况下,解决 bug 最好的方式是交给创建该软件的项目。例如,假设渲染数据相机照片的 Darktable 摄影软件出了问题,最好把它带给 Darktable 摄影软件的开发人员。再举个例子,假设 GNOME 或 KDE 桌面环境或组成部分软件出了问题,将这些问题交给这些项目中通常会得到最好的结果。

然而, 如果这是一个特定的 Fedora 问题,比如我们的软件构建或配置或者它的集成方式的问题,请毫不犹豫地 向我们提交 bug。当你知道有一个问题是我们还没有解决的,也要提交给我们。

我知道这很复杂……最好有一个一站式的地方来处理所有 bug。但是请记住,Fedora 打包者大部分是志愿者,他们负责获取上游软件并将其配置到我们系统中。他们并不总是对他们正在使用的软件的代码有深入研究的专家。有疑问的时候,你可以随时提交一个 Fedora bug。Fedora 中负责相应软件包的人可以通过他们与上游软件项目的联系提供帮助。

请记住,当你发现一个已通过诊断但尚未得到良好修复的 bug 时,当你看到影响很多人的问题时,或者当有一个长期存在的问题没有得到关注时,请将其提名为高优先级 bug。我们会看以看能做些什么。

附言:标题中的著名图片当然是来自哈佛大学马克 2 号计算机的日志,这里曾是格蕾丝·赫柏少将工作的地方。但是与这个故事的普遍看法相背,这并不是 “bug” 一词第一次用于表示系统问题——它在工程中已经很常见了,这就是为什么发现一个字面上的 “bug” 作为问题的原因是很有趣的。 #nowyouknow #jokeexplainer


via: https://fedoramagazine.org/something-bugging-you-in-fedora-linux-lets-get-it-fixed/

作者:Matthew Miller 选题:lujun9972 译者:DCOLIVERSUN 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

就如我们之前报道的,因为对 Linux 内核提交了一些作用不明的补丁,并疑似以 Linux 内核作为其研究论文的试验场,Linux 内核社区决定撤销该大学所有近 200 个补丁贡献,并将明尼苏达大学“拉黑”。

此事件曝光并发酵之后,引来了全球技术社区的大量关注、抨击和一些反思。之后,明尼苏达大学计算机科学系表示暂停该研究项目,而陷入此事件的三位研究人员更是一时之间处于风口浪尖,招致了大量批评甚至谩骂。

此事件中的主要负责人 Kangjie Lu 助理教授昨日发表了一篇英文公开信进行澄清,我们将其翻译并点评如下,如有表达不到位或误解之处,敬请参照原文

这封信是由此事件中三位研究人员联合署名发表的:

Kangjie Lu, Qiushi Wu, and Aditya Pakki
University of Minnesota

其中 Kangjie Lu 是负责该项目的助理教授,而 Qiushi Wu 和 Aditya Pakki 都是 Lu 助理教授带的博士生,其中 Qiushi Wu 是那篇论文《论通过伪装提交在开源软件中隐蔽地引入漏洞的可行性》的一作,而 Aditya Pakki 不是该论文的作者,但是是引发这场争议的补丁提交者。

信件开头首先对 Linux 内核社区致歉:

亲爱的社区成员:

我们为我们的研究小组对 Linux 内核社区造成的任何伤害真诚地道歉。我们的目标是找出修补过程中的问题以及解决这些问题的方法,我们非常抱歉,在“伪君子提交”论文中使用的方法是不恰当的。正如许多观察家向我们指出的那样,我们犯了一个错误,在进行这项研究之前没有找到咨询社区并获得许可的方法;我们这样做是因为我们知道我们不能向 Linux 的维护者征求许可,否则他们会对伪装者的补丁进行监视。虽然我们的目标是提高 Linux 的安全性,但我们现在明白,让社区成为我们研究的对象,并在社区不知情或未经其许可的情况下浪费其精力审查这些补丁,是对社区的伤害。

我们只想让你知道,我们绝不会故意伤害 Linux 内核社区,也绝不会引入安全漏洞。我们的工作是抱着最好的目的进行的,都是为了寻找和修复安全漏洞。

然后介绍了该研究项目的情况,并进行了澄清:

“伪君子提交”的工作是在 2020 年 8 月进行的;它的目的是提高 Linux 中修补程序的安全性。作为项目的一部分,我们研究了 Linux 打补丁过程中的潜在问题,包括问题的原因和解决这些问题的建议。

按 Lu 助理教授的解释,这个“伪君子提交”的研究已经于 2020 年 12 月结束,并且用于研究而提交的三个补丁也只是在邮件列表讨论中进行的,从未获得进入 Linux 内核的机会。而且,Linux 内核社区是知道这件事的。

  • 这项工作并没有在 Linux 代码中引入漏洞。三个不正确的补丁是在 Linux 留言板的交流中讨论和停止的,从未提交到代码中。在提交论文之前,我们向 Linux 社区报告了这项工作的发现和结论(不包括不正确的补丁),收集了他们的反馈,并将其纳入论文中。

Lu 助理教授还提到,这次事件发酵而招致 Linux 内核负责人 GKH 全部撤销的 190 个历史补丁,是和该项目无关的,是出于善意和服务提交的。但是这个事情发展到现在,按照 GKH 的说法,要对这 190 个补丁进行重新审核,不过这个工作是在 GKH 自己的仓库内进行,无论审核结果如何,目前这 190 个补丁并没有在 Linux 主线内核中发生变更。

  • 所有其他 190 个被撤销和重新评估的补丁都是作为其它项目的一部分和对社区的服务而提交的;它们与 “伪君子提交”论文无关。
  • 这 190 个补丁是对代码中真正的错误的回应,并且在我们提交时都是正确的 —— 就我们所能辨别的而言。

对于“伪君子提交”所涉及的三个研究性的补丁,正在努力进行披露:

  • 我们理解社区希望获得并检查这三个错误的补丁的愿望。这样做会暴露在留言板上对这些补丁做出反应的社区成员的身份。因此,我们正在努力在披露这些补丁之前获得他们的同意。

对于引发这次事件的几个由 Aditya Pakki 提交的补丁,是和这 190 个补丁无关,也和“伪君子提交”研究无关,是另外一个项目所产生的。

  • 我们最近在 2021 年 4 月的补丁也不属于“伪君子提交”文件的范围。我们一直在进行一个新的项目,旨在自动识别由其他补丁(不是来自我们)引入的 bug。我们的补丁是为了修复被识别的 bug 而准备和提交的,以遵循责任披露的规则,我们很高兴与 Linux 社区分享这个较新项目的细节。

只是这些补丁看起来质量不佳,按 Aditya Pakki 的说法,“它的灵敏度显然不是很高”。正是由于这些糟糕的补丁,引发了 Linux 内核社区的愤怒,并将其和之前的“伪君子提交”研究联系到一起。

在公开信中,Lu 助理教授等继续认错:

我们是一个研究小组,其成员致力于改善 Linux 内核的工作。在过去的五年里,我们一直致力于寻找和修补 Linux 的漏洞。过去对修补过程的观察促使我们也研究和解决修补过程本身的问题。目前这一事件在 Linux 社区引起了对我们、研究小组和明尼苏达大学的极大愤怒。我们为我们现在认识到的违反开源社区共同信任的行为无条件地道歉,并为我们的错误行为寻求宽恕。

并请求社区原谅:

我们寻求从谦逊的角度重建与 Linux 基金会和 Linux 社区的关系,以创建一个基础,我们希望从这个基础上,我们可以再次为我们的共同目标作出贡献,即提高 Linux 软件的质量和安全性。我们将与我们的院系合作,因为他们为寻求在开源项目、同行生产网站和其他在线社区进行研究的师生开发新的培训和支持。我们致力于遵循合作研究的最佳实践,就我们研究项目的性质与社区领导人和成员进行协商,并确保我们的工作不仅符合 IRB(学术伦理委员会) 的要求,而且符合社区在此事件后向我们阐述的期望。

虽然这个问题对我们来说也很痛苦,我们对 Linux 内核社区所承担的额外工作感到由衷的抱歉,但我们从这次事件中吸取了一些关于与开源社区研究的重要教训。我们可以而且会做得更好,我们相信我们在未来还有很多贡献,并将努力工作以重新获得你们的信任。

我的看法

这件事到此算是告一段落了,如果这封公开信披露的信息属实,而 Linux 内核社区也愿意接受的话,那不失一个还算美好的结局。

就我个人的感受,Lu 助理教授的这封道歉的公开信,算得上谦卑,或许心中有所委屈,但还是就能道歉的地方都低头道歉了。在这个事件发酵后,我们其实看到了很多对这个研究团队的、对这些研究人员个人的谩骂和指责,鲜少能看到理智而独立的看法——这还仅仅只是中文社区的一个小角落。所以,可以想象身处美国的 Lu 助理教授和他的学生们会招致什么样的压力和语言暴力。

事实上,初看到这个新闻时,我也非常愤怒,也为其中两位研究人员是华人而感觉蒙羞。但是,在我仔细梳理了内核社区的邮件列表对话、综合了各处信源之后,得出的结论和看法,是和这份公开信相似的。也许 Lu 助理教授他们在此事件中有些不当,但内核社区的负责人的处置也或许有点过激。那么,社区是否真正能做到公平公正和公开决策?作为知名领袖和多年的社区元老,个人所做的处置和反应带来的影响可能要比预想的更高,在决策前是否应该三思?

另外,从这个事件中,还反映出的一个情况是,Linux 内核社区的管理和审核,似乎还是人治为主,对于来自外部的恶意或无意的破坏,应该具有更有效的反应机制。

好了,对于这件事,你如何看呢?

更新

周六深夜,内核团队的 GKH 回复说:

谢谢你的回应。

如你所知,Linux 基金会和 Linux 基金会的技术顾问委员会在周五向贵校提交了一封信,概述了需要采取的具体行动,以便贵组和贵校能够努力重新获得 Linux 内核社区的信任。

在采取这些行动之前,我们不会就这个问题进一步讨论。

谢谢

在 Arch ISO 中加入一个可选的引导式安装程序,对新手和高级用户都有好处。

20 年来,Arch Linux 为用户提供了一个完全定制、独特的系统。这些年来,它以牺牲用户友好性为代价,赢得了在定制方面独有的声誉。

作为滚动发行版本,Arch Linux 不提供任何固定发行版本,而是每月更新一次。但是,如果你在最近几周下载了 Arch Linux,那么你很可能已经注意到了一个新的附加功能:archinstall。它使 Arch Linux 更加易于安装。

今天,我将探讨 archinstall 的发布对未来的 Arch Linux 项目和发行版意味着什么。

Arch Linux 新的发展方向?

尽管很多人对此感到惊讶,但默认情况下包含官方安装程序实际上是非常明智的举动。这意味着 Arch Linux 的发展方向发生变化,即在保留使其知名的定制性同时更加侧重用户的易用性。

在该安装程序的 GitHub 页面上有这样的描述:

“引导性安装程序会给用户提供一个友好的逐步安装方式,但是关键在于这个安装程序是个选项,它是可选的,绝不会强迫用户使用其进行安装。”

这意味着新的安装程序不会影响高级用户,同时也使得其可以向更广泛的受众开放,在这一改动所带来的许多优点之中,一个显著的优点即是:更广泛的用户。

更多的用户意味着对项目的更多支持,不管其是通过网络捐赠或参与 Arch Linux 的开发,随着这些项目贡献的增加,不管是新用户还是有经验的用户的使用体验都会得到提升。

这必然要发生

回顾过去,我们可以看到安装介质增加了许多对新用户有所帮助的功能。这些示例包括 pacstrap(一个安装基本系统的工具)和 reflector(查找最佳 pacman 镜像的工具)。

另外,多年来,用户一直在追求使用脚本安装的方法,新安装程序允许了用户使用安装脚本。它能够使用 Python 编写脚本,这使得管理员的部署更加容易,成为一个非常有吸引力的选择。

更多可定制性(以某种方式?)

尽管这看上去可能有些反直觉,但是这个安装程序实际上能够增进 Arch Linux 的可定制性。当前,Arch Linux 定制性的最大瓶颈是用户的技术水平,而这一问题能够通过 archinstall 解决。

有了新的安装程序,用户不需要掌握创建完美开发环境的技巧,安装程序可以帮助用户完成这些工作,这提供了广泛的自定义选项,是普通用户难以实现的。

总结

有了这一新功能,Arch Linux 似乎正在向着“用户友好”这一软件设计哲学靠近,新安装程序为新手和高级用户提供了广泛的好处。其中包括更广泛的定制性和更大的用户社区。

总而言之,这个新变动对整个 Arch Linux 社区都会产生积极的影响。

你对这个 Arch Linux 安装程序怎么看?是否已经尝试过它了呢?


via: https://news.itsfoss.com/arch-new-guided-installer/

作者:Jacob Crume 选题:lujun9972 译者:Kevin3599 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

共同作者:Curtis Franklin, Jr

开源软件通常被认为比专有软件更安全、更有保障,因为如果用户愿意,他们可以从源代码编译软件。他们知道在他们环境中运行的代码的来源。在他们的环境中运行的代码每个部分都可以被审查,也可以追溯每段代码的开发者。

然而,用户和提供者们正在逐渐远离完全控制软件所带来的复杂性,而在转而追求软件的便捷和易用。

VMware 副总裁兼首席开源官 Dirk Hohndel 说:“当我看到在一个有关网络安全和隐私的讲座中,演讲者运行 docker run 命令来安装和运行一些从互联网上下载的随机二进制文件时,我经常会大吃一惊。这两件事似乎有点相左。”

软件供应链,即将应用程序从编码、打包、分发到最终用户的过程是相当复杂的。如果其中有一环出现错误,可能会导致软件存在潜在的风险,特别是对于开源软件。一个恶意行为者可以访问后端,并在用户不知情或不受控的情况下向其插入任何可能的恶意代码。

这样的问题不单单存在于云原生领域,在现代应用开发中很常见,这包括 JavaScript、NPM、PyPI、RubyGems 等等。甚至连 Mac 上的 Homebrew 过去也是通过源代码提供,由用户自己编译。

“如今,你只需要下载二进制文件并安装它,并期望其源代码并没有被恶意修改过。”Hohndel 说,“作为一个行业,我们需要更加关注我们的开源代码供应。这对我来说是非常重要的事,我正努力让更多的人意识到其重要性。”

然而,这不仅仅是一个二进制与源代码的关系。只运行一个二进制文件,而不必从源代码构建所有东西有着巨大的优势。当软件开发需求发生转变时候,这种运行方式允许开发人员在过程中更加灵活和响应更快。通过重用一些二进制文件,他们可以在新的开发和部署中快速地循环。

Hohndel 说:“如果有办法向这些软件添加签名,并建立一个‘即时’验证机制,让用户知道他们可以信任此软件,那就更好了。”

Linux 发行版解决了这个问题,因为发行版充当了看门人的角色,负责检查进入受支持的软件存储库的软件包的完整性。

“像通过 Debian 等发行版提供的软件包都使用了密钥签名。要确保它确实是发行版中应包含的软件,需要进行大量工作。开发者们通过这种方式解决了开源供应链问题。”Hohndel 说。

但是,即使在 Linux 发行版上,人们也希望简化事情,并以正确性和安全性换取速度。现在,诸如 AppImage、Snap 和 Flatpack 之类的项目已经采用了二进制方式,从而将开源供应链信任问题带入了 Linux 发行版。这和 Docker 容器的问题如出一辙。

“理想的解决方案是为开源社区找到一种设计信任系统的方法,该系统可以确保如果二进制文件是用受信任网络中的密钥签名的,那么它就可以被信任,并允许我们可靠地返回源头并进行审核,” Hohndel 建议。

但是,所有这些额外的步骤都会产生成本,大多数项目开发者要么不愿意,或无力承担。一些项目正在尝试寻找解决该问题的方法。例如,NPM 已开始鼓励提交软件包的用户正确认证和保护其账户安全,以提高平台的可信度。

开源社区善于解决问题

Hohndel 致力于解决开源供应链问题,并正试图让更多开发者意识到其重要性。去年,VMware 收购了 Bitnami,这为管理由 VMware 所签名的开源软件提供了一个良机。

“我们正在与各种上游开源社区进行交流,以提高对此的认识。我们还在讨论技术解决方案,这些方案将使这些社区更容易解决潜在的开源供应链问题。” Hohndel 说。

开源社区历来致力于确保软件质量,这其中也包括安全性和隐私性。不过,Hohndel 说:“我最担心的是,在对下一个新事物感到兴奋时,我们经常忽略了需要的基础工程原则。”

最终,Hohndel 认为答案将来自开源社区本身。 “开源是一种工程方法论,是一种社会实验。开源就是人们之间相互信任、相互合作、跨国界和公司之间以及竞争对手之间的合作,以我们以前从未有过的方式。”他解释说。


via: https://www.linux.com/articles/open-source-supply-chain-a-matter-of-trust/

作者:Swapnil Bhartiya 选题:lujun9972 译者:Kevin3599 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

正如我们昨天报道的,明尼苏达大学的研究人员被踢出了 Linux 贡献群体,Linux 内核社区撤销了之前他们提交的所有 Linux 内核代码,并且,以后默认拒绝所有来自该大学的内核贡献!

发生了什么?是什么让 Linux 内核社区勃然大怒?

这一切始于 2021 年 4 月 6 日对 Linux 内核的一个看似无辜的补丁。明尼苏达大学的一名博士生(Aditya Pakki)提交了一个一共只修改/增加了两行的小补丁

Signed-off-by: Aditya Pakki <[email protected]>
---
 net/rds/message.c | 1 +
 net/rds/send.c    | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/rds/message.c b/net/rds/message.c
index 071a261fdaab..90ebcfe5fe3b 100644
--- a/net/rds/message.c
+++ b/net/rds/message.c
@@ -180,6 +180,7 @@ void rds_message_put(struct rds_message *rm)
         rds_message_purge(rm);
 
         kfree(rm);
+        rm = NULL;
     }
 }
 EXPORT_SYMBOL_GPL(rds_message_put);
diff --git a/net/rds/send.c b/net/rds/send.c
index 985d0b7713ac..fe5264b9d4b3 100644
--- a/net/rds/send.c
+++ b/net/rds/send.c
@@ -665,7 +665,7 @@ static void rds_send_remove_from_sock(struct list_head *messages, int status)
 unlock_and_drop:
         spin_unlock_irqrestore(&rm->m_rs_lock, flags);
         rds_message_put(rm);
-        if (was_on_sock)
+        if (was_on_sock && rm)
             rds_message_put(rm);
     }
 

由于这个补丁很简单,而且似乎改善了代码的质量,它最初得到了一些成员的支持,但后来在 4 月 9 日受到了 Eric Dumazet 的质疑

而在 4 月 19 日,资深的内核贡献者 Al Viro 斥责该贡献者提交了一个“没有修复任何东西的补丁”。他指出了提交垃圾代码补丁的两种可能性:

简单地说,这个补丁要么显示出完全缺乏理解,要么显示出有人不真诚地行事。如果是后者[1],我可以建议尊敬的社会学家们滚蛋,不要再用故意喷出的排泄物来测试审核者了?

如果你觉得他用词太激烈了,这背后是有原因和历史的。

前不久,明尼苏达大学的博士生 Qiushi Wu 和助理教授 Kangjie Lu(看起来是中国人或华裔?)提交了一篇研究论文《论通过伪装提交在开源软件中隐蔽地引入漏洞的可行性》。据之前发布在明尼苏达大学的一篇新闻稿(已被删除),该论文被 2021 年 IEEE 安全与隐私研讨会接受:

CS&E 很荣幸地与大家分享博士生 Qiushi Wu 和助理教授 Kangjie Lu 为即将举行的第 42 届 IEEE 安全与隐私研讨会所撰写的论文。IEEE S&P 是展示计算机安全和电子隐私发展的首要论坛,并将该领域的研究人员和从业人员聚集在一起。

他们的论文《论通过伪装提交在开源软件中隐蔽地引入漏洞的可行性》集中讨论了开源软件的供应链安全。

“这项工作影响深远,”Lu 教授说,“供应链安全已经成为当今的一个重要话题。我们的论文已经引起了安全界和开源社区的极大兴趣。”

Wu 和 Lu 将在 5 月的虚拟会议期间展示他们的研究。

研究人员正在测试通过伪装提交在开源软件中隐蔽引入漏洞的可行性,也就是说,以看似有益的提交实际上引入了其他关键问题。结合最近发生的一些软件供应链攻击事件,看起来这是一篇很有意义的论文,也难怪会被 IEEE 会议接受。

然而,似乎他们选择了 Linux 内核项目来进行他们的实验来完成论文。Al Viro 发现,Aditya Pakki 的“无用补丁”很可能是这项研究的一部分。

对 Aditya Pakki 提交的另外一个补丁

     }
-    gss_release_msg(gss_msg);
+    if (gss_msg)
+        gss_release_msg(gss_msg);
 }

GKH 警告称,不要浪费内核维护者的时间提交这种补丁,Greg Kroah-Hartman(GKH)是仅次于 Linus Torvalds 的内核项目负责人:

请停止提交已知无效的补丁。你的教授正在玩弄审查程序,以便用一些奇怪的、怪异的方式实现一篇论文。
这是不对的,这是在浪费我们的时间,我们将不得不再次向你的大学报告此事……

显然,这不是唯一引起争议的补丁请求。而 Leon Romanovsky 指出,还有 3 个这样的补丁来自同一个研究人员,并认为这些补丁增加了安全漏洞:

他们故意引入内核错误。昨天,我看了一下从 Aditya 那里接受的 4 个补丁,其中 3 个增加了各种严重的安全 “漏洞”。

面对这些公开抨击,该大学的研究人员 Aditya Pakki 认为自己是受害者,指责内核维护者的态度

敬请停止胡乱指责,这近乎诽谤。

这些补丁是作为我写的一个新的静态分析器的一部分发送的,它的灵敏度显然不是很高。我发送补丁的目的是希望得到反馈。我们不是 Linux 内核方面的专家,反复发表这些言论让人听了很反感。

显然,这一步错了,但你的先入为主的偏见是如此强烈,你提出的指控毫无根据,这种怀疑也不会带来任何好处。

这种态度不仅让人讨厌,而且对新手和非专家也是一种恐吓,我再也不会发送任何补丁了。

这激怒了 GKH,他说:

你和你的团队,已经公开承认发送了有缺陷的补丁,以了解内核社区对它们的反应,并且发表了一篇基于这项工作的论文。现在你又提交了一系列新的有明显错误的补丁,那么我应该对这样的事情怎么看?

它们显然不是由一个有智慧的静态分析工具创建的,因为它们都是完全不同的模式的结果,而且所有这些显然根本没有修复任何东西。 那么,除了你和你的团队在继续通过发送这种无稽之谈的补丁对内核社区的开发者进行试验之外,我还能想到什么?

……

任何有 C 语言知识的人,只要花几分钟就能看出你提交的文件根本没有任何作用,所以认为一个工具创造了它们,然后你认为它们是一个有效的“修复”,这完全是你的疏忽,而不是我们的疏忽。你才是有错的人,我们的工作不是成为你创造的工具的测试对象。

……

我们的社区不喜欢被实验,也不喜欢通过提交已知的补丁来“测试”,这些补丁要么是故意什么都不做,要么是故意引入错误的。 如果你想做这样的工作,我建议你找一个不同的社区来进行你的实验,这里不欢迎你。

正因为如此,我现在不得不禁止你的大学今后的所有贡献,并撕掉你以前的贡献,因为它们显然是以恶意的方式提交的,目的就是为了造成问题。

随后,GKH 撤销了明尼苏达大学提交的大量补丁,GKH 表示:

我一直想这么做,但最近的事件终于迫使我这么做了。

……

这个小组提交的所有文件都必须从内核树上撤销,并需要再次进行审查,以确定它们是否真的是一个有效的修复。 在这项工作完成之前,请删除这些变更,以确保没有问题被引入代码库。

这个补丁集包含了“简单”的修正,还有 68 个需要人工审查的修正。 其中一些不能被恢复,因为它们已经被恢复了,或者被确定其为无效的后续补丁所修复。这证明这些提交的文件几乎都是错误的。

我将和其他一些内核开发者一起工作,以确定这些还原是否真的是有效的变更,如果是的话,以后会重新正确提交。就目前而言,还是安全为上。

我将通过我的开发树进行,所以维护者们不需要担心这个问题,但他们应该意识到,未来任何从 umn.edu 地址来的人提交的文件应该被默认拒绝,除非确定它实际上是一个有效的修复(即他们提供证据,你可以验证它,但是说真的,为什么要浪费你的时间做那些额外的工作?)

对此,你怎么看?

本文参考信息: lore.kernel.org、news.itsfoss.com。