【问题标题】:How can I ensure that open source code I'm using is not malicious? [closed]如何确保我使用的开源代码没有恶意? [关闭]
【发布时间】:2012-05-02 08:45:02
【问题描述】:

我想知道如何确保开源项目中代码的安全性,尤其是那些包含数千行代码的项目,包括调用popen()system()。 我怎么知道那里没有有害和恶意代码? 无论如何我可以安全地检查代码吗?

【问题讨论】:

  • 这就是开源的意思:你可以检查代码
  • 如何确保任何代码的安全性?这几乎不限于开源。简而言之,你不能,不是 100% 确定的。至少使用开源您可以自己检查代码。

标签: security open-source


【解决方案1】:

我想知道如何确保开源项目中代码的安全性

简短的回答是你不能。

是的,理论上,您可以检查整个代码库并对其进行审核,而使用专有代码则无法做到这一点,但是谁有时间这样做呢?另一方面,许多较大的项目往往有大量的志愿者贡献者一直在注视着代码,而运行它们的组织(例如 Apache 和 GNU)表面上具有良性动机,所以我认为恶意代码可能会很快就能找到并标记出来。

话虽如此,我可以想到one totally disastrous security flaw,它影响了开源软件并且两年没有被发现。它的出现正是因为第三方有可能修改一个极其复杂(并且写得不好)的开源产品。进行修改的人不明白他们在做什么。当他们可以阅读代码时,谁会想到这是可能的......

【讨论】:

    【解决方案2】:

    您永远无法 100% 确定任何项目的任何代码的安全性,无论是否开源。在使用不是您自己编写的任何代码或软件时,您不可避免地会假设第三方作者有一定程度的信任。如果项目是开源的,您可以根据自己的意愿审核他们的代码,但正如其他响应者已经指出的那样,您不太可能有时间/资源来执行完整的逐行检查。

    您可能会发现 Ken Thompson 的“对信任的反思”文章是一本有趣的读物,可以进一步思考此类问题:

    http://cm.bell-labs.com/who/ken/trust.html

    【讨论】:

      【解决方案3】:

      因为它是开源的,所以您可以检查代码。与其他人一样,因此安全性可能比封闭源代码的安全性要好得多,在封闭源代码中,(非常)有限数量的人可以看到代码。您的版本控制系统 (git) 计算校验和以检测更改的代码。

      经常在源代码上寻找十分钟就足以决定不信任软件。在有许多替代品的地方,这就足够了。

      【讨论】:

      • 现在开源软件必须用git吗?我没有收到那份备忘录。
      • 不,这不是强制性的。如果您想确保代码没有被更改,校验和可以提供帮助。 Git 以一种可以提供帮助的方式计算它们。我还没有查看其他哪些 vcs 做
      【解决方案4】:

      我还应该补充一点,开源项目中明显(理论上是可验证的)缺乏恶意代码并不能保证它们的安全性。

      原因是安全漏洞可被恶意输入利用。

      例如,您最喜欢的开源图片/文档/任何查看器(或网络浏览器)都可能存在一个或多个这些错误。如果你用它打开一个恶意制作的文件,你可能会被 pwned。

      虽然我不能肯定地说开源软件比商业软件有更多的安全漏洞,但我会警告你,如果它不是一个非常受欢迎的项目,并且如果没有人为它导致你的安全缺陷负责得到pwned,很可能存在这样的错误,并且很少有人对它们感兴趣并修复它们。我的意思是,程序员喜欢构建。很有趣。安全性很难,而且通常是次要的。

      【讨论】:

      • -1 FUD。负责花钱的人大多看不到代码。
      • @StephanEggermont:这种区别不会使声明无效。您应该将实体/组织视为一个整体。
      • 不,这是一个基本的安全错误。最弱的链条。大多数商业组织,尤其是银行和保险公司,都是这样组织的,以便他们可以推卸责任,而不是创建安全软件
      • @StephanEggermont:大多数=全部?另外,微软没有“安全推送”,这可能不是普通程序员发起的吗?
      • @StephanEggermont,我怀疑你不太了解保险或银行业务。保险公司将制定许多条件并与客户合作以降低风险。与竞争保险公司相比,这有助于他们收取更低的保费,从而留住客户。银行也有减少损失的相同动机——如果他们的损失低于其他银行,他们可以提供更好的利息,同时也可以获得更高的利润。银行和保险公司一直负责推动大型企业提高安全标准。听说过 PCI 吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 2014-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多