FreeBSD 13 几乎以 WireGuard 的黑客实现告终,其中存在许可证违规和漏洞

从形成 FreeBSD 13 版本的代码库来看,实现 WireGuard VPN 协议的代码是根据 Netgate 的命令在没有与原始 WireGuard 的开发人员协商的情况下开发的,并且已经包含在 pfSense 发行版的稳定版本中,这是可耻的已删除。 经过原 WireGuard 的作者 Jason A. Donenfeld 的代码审查后发现,FreeBSD 提出的 WireGuard 实现是一段劣质代码,充满了缓冲区溢出并且违反了 GPL。

该实现在加密代码中包含灾难性缺陷,省略了部分 WireGuard 协议,存在导致内核崩溃并绕过安全方法的错误,并且使用固定大小的缓冲区来存储输入数据。 存根的存在而不是总是返回“true”的检查,以及忘记调试 printfs 以及用于加密的参数的输出,以及使用 sleep 函数来防止竞争条件,这些都说明了代码的质量。

代码的某些部分(例如 crypto_xor 函数)是从为 Linux 开发的 WireGuard 实现移植的,违反了 GPL 许可证。 结果,Jason Donenfield 与 Kyle Evans 和 Matt Dunwoodie(OpenBSD WireGuard 移植的作者)一起承担了重新设计有问题的实现的任务,并在一周内完全替换了 Netgate 雇用的开发人员的所有代码。 修改后的版本作为一组单独的补丁发布,放置在 WireGuard 项目存储库中,尚未包含在 FreeBSD 中。

有趣的是,最初并没有出现任何问题的迹象;Netgate 希望能够在 pfSense 发行版中使用 WireGuard,因此聘请了 Matthew Macy,他精通 FreeBSD 内核和网络堆栈,参与错误修复并具有开发经验该操作系统的网络驱动程序。 梅西百货获得了灵活的时间表,没有截止日期或中期检查。 在 FreeBSD 工作期间认识 Macy 的开发人员将他描述为一位才华横溢且专业的程序员,他不比其他人犯更多的错误,并且对批评做出了充分的回应。 FreeBSD 的 WireGuard 实现代码质量如此之差令他们感到惊讶。

经过 9 个月的工作,Macy 在没有完成同行评审和测试的情况下,于去年 13 月将自己的实现添加到了 HEAD 分支,该分支用于制定 FreeBSD 2.5.0 版本。 OpenBSD 和 NetBSD 端口。 XNUMX 月份,Netgate 将 WireGuard 集成到 pfSense XNUMX 的稳定版本中,并开始发布基于它的防火墙。 发现问题后,WireGuard 代码已从 pfSense 中删除。

添加的代码揭示了 0day 攻击中使用的关键漏洞,但 Netgate 起初并不承认漏洞的存在,并试图指责原始 WireGuard 的开发者进行攻击和偏见,这对其声誉产生了负面影响。 端口开发者最初拒绝接受有关代码质量的说法,并认为这些说法有些夸大,但在演示了错误之后,他提请注意这样一个事实:真正重要的问题是 FreeBSD 中缺乏对代码质量的适当审查,因为这些问题在几个月内仍未被发现。 (Netgate 代表表示,该审查早在 2020 年 XNUMX 月就已公开启动,但个别 FreeBSD 开发者指出,在 Phabricator 中,梅西百货已关闭该审查,但未完成且评论被忽略)。 FreeBSD 核心团队对这一事件做出了回应,承诺将其代码审查流程现代化。

有问题的 FreeBSD 移植的开发者 Matthew Macy 评论了这一情况,称他在没有准备好实施该项目的情况下接受了这项工作,犯了一个很大的错误。 梅西解释了情绪倦怠造成的结果以及新冠后综合症引起的问题的结果。 与此同时,梅西并没有决心放弃他已经承担的义务,并试图完成该项目。

梅西的病情也可能受到他最近因非法试图从他购买的房屋中驱逐不愿自愿搬出的租户而被判入狱的影响。 相反,他和妻子锯断了地板横梁,在地板上打洞,使房子无法居住,还试图恐吓居民,闯入被占用的公寓并拿走他们的财物(该行为被归类为入室盗窃)。 为了逃避责任,梅西和妻子逃往意大利,但被引渡到美国,并在监狱里服刑四年多。

来源: opennet.ru

添加评论