开源代码并非 гарантия

尚无读者喜欢这篇文章。
annoying bugs

Opensource.com

汽车软件问题,例如 Jeep 黑客事件大众汽车排放作弊事件,今年已成为头条新闻,这意味着公众对汽车软件的思考程度前所未有。一些专家 认为,强制要求此类软件开源是解决问题的方法。尽管公众审查软件肯定有好处,但仅凭代码可见性并不能保证安全。正如 Sam Liles 最近在一封电子邮件中向我解释的那样,开源代码并没有阻止 ShellShock 漏洞。

Liles 博士曾是普渡大学网络取证学教授,他和他的学生研究了汽车和其他物联网设备的安全。他说,纵深防御已死,这意味着我们不能再依赖多层安全保护。例如,我们的手机和其他个人设备了解我们的一切:我们去哪里,与谁交流,甚至 我们何时发生性行为。这些设备及其包含的所有信息都存在于我们的个人和工作网络中。受感染的手机可以访问大量信息或将威胁传播到其他连接的设备。

这些设备的大量涌现本身就代表着一项挑战。“谁来负责这个级别的事件响应?” Liles 问道。就此而言,谁来审计所有这些代码?埃里克·S·雷蒙德在《大教堂与集市》中写道:“只要有足够的眼球,所有错误都是肤浅的”,他称之为林纳斯定律,但我们不能仅仅依靠足够的眼球。如果像 OpenSSL 这样重要且成熟的项目都缺乏资源来预防像 Heartbleed 这样的漏洞,那么谁来检查数百万行每天驱动我们认为理所当然的设备的软件呢?

尽管 2011 年 NASA 和 NHTSA 对涉及丰田汽车的一系列意外加速事件的调查发现“没有证据表明电子设备故障导致了大型意外加速”,但其他研究人员已经找到了通过软件在汽车中产生加速的方法。“如果电源管理 ECU 受到攻击,”IOActive 报告写道,“可以快速更改加速度,使汽车运行极其不安全。” 显然,软件是现代汽车安全的关键组成部分。

尽管如此,像 Liles 小组所做的研究仍然相对罕见。仅仅分析软件通常就很困难。“取证几乎从未内置到系统中,并且通常出于法律效力的目的需要进行逆向工程,”Liles 说。此外,物联网带来的威胁变化需要研究方式发生根本性转变。“许多‘旧的’信息保障和安全规则、原则,有时被称为科学,都是基于神话、半真半假和过时的技术概念。”

那么,开源在其中扮演什么角色呢?无论源代码是否开源,意外的错误(有时很严重)都将继续存在。Heartbleed、ShellShock 和许多其他开源软件中的高调漏洞告诉我们就是这种情况。故意的恶意行为在开放环境中会变得风险更大,但开放性只有在我们有某种方法验证所提供的源代码是否是实际运行的代码时才有用。随着汽车成为开放系统,连接到我们的手机和移动互联网服务,这一点变得越来越重要。

标签
User profile image.
Ben Cotton 是一名受过训练的气象学家,但天气只是他的一大爱好。Ben 在红帽公司担任 Fedora 项目经理。他是《开源项目项目管理》一书的作者。在 Twitter (@FunnelFiasco) 或 FunnelFiasco.com 上找到他。

11 条评论

这太棒了!我已经和我的许多朋友分享了。

您好。

开源本身并不能使软件安全。是人使其安全。开源是一种工具,可以保证人们有权访问源代码以使其安全。

此致

回复 作者:Don Watkins

Martin,感谢您的阅读!您完全正确。访问源代码是安全性的重要前提条件,但除此之外还需要更多。

回复 作者:Martin Iturbide (未验证)

我非常怀疑关于一般错误的“众人之眼”假设,并且在尝试将其应用于特定安全问题时还存在一个额外的问题:在这种情况下,许多眼球将带有恶意意图。安全始终是善与恶之间的竞赛。

在任何人说我提倡已被否定“隐蔽式安全”之前,让我们看看说它不起作用是什么意思。这并不意味着任何使用隐蔽都是毫无意义的——当然,私钥的全部意义在于它们是隐蔽的。它的意思是,如果您仅信任您实现的隐蔽性,那么您就没有安全保障。这种观察并不是邀请让您的对手更容易得手。除非你能确保开源代码能够比黑帽黑客带来更多更好的白帽黑客的审查,否则开源代码对安全没有帮助,即使那样也没有保证。

我同意你的观点。我对本网站的贡献清楚地表明我通常是开源软件的倡导者,但我没有幻想它是万能药。我认为“众人之眼”假设绝对有其优点,但它往往在发布前最有益。换句话说,众多的眼睛使设计错误变得浅显,但在代码发布时,就没有那么多的眼睛了。坚持 ESR 主题,我通常更赞成集市方法,但我确实认为大教堂在这种情况下有一些额外的优势。

回复 作者:ARaybold

为了跟进我对安全是一场竞赛的评论,我意识到安全公司 Coverity(以及可能还有其他供应商)运行一项服务,开源项目可以通过该服务扫描其代码中的漏洞。我想知道他们是否有机制来识别攻击者尝试提交他们希望攻击的开源项目的代码(可能是混淆的并与不相关的代码混合在一起),就好像它是他们自己的项目一样?

回复 作者:bcotton

这是一个非常好的问题。他们的常见问题解答没有回答这个问题。与 Palamida 的某种集成似乎是个好主意。

回复 作者:ARaybold

前 LinuxBIOS(现在的 coreboot)项目对其工作进行可审计的构建,因此您可以查看并查看您是否正在运行已发布的代码。我不知道去年我询问时还有其他人这样做。其他人可能从那时起就掌握了这些技术。

我似乎记得看到一些关于 Fedora 和 Debian 正在研究该问题的消息,但我不记得任何具体细节。如果您愿意撰写,这将是本网站的一篇很棒的文章。

回复 作者:David Collier-Brown (未验证)

Ben,写得好!

在调查丰田问题时,NASA 没有检查在目标(汽车中)上运行的代码。他们没有使用 JTAG 或 ICE 调试器,而是在模拟器上运行代码!任何修复过一两个固件错误的人都知道,硬件与软件的交互不能简单地模拟。他们的无能是他们没有发现错误根本原因的原因。

Creative Commons 许可协议本作品根据 Creative Commons 署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.