我很好奇,从理论上讲,人们如何知道,例如,在Ubuntu下分发的内核是否真的是https://github.com/torvalds/linux上的内核,而不是包含跟踪代码等修改过的内核?
作为一个例子,我提到了Kernel。真正的问题是,您能确定分布式开源软件确实是您所期望的吗?
发布于 2013-10-22 19:38:47
我很好奇,从理论上讲,人们如何知道,例如,在Ubuntu下分发的内核是否真的是https://github.com/torvalds/linux上的内核,而不是包含跟踪代码等修改过的内核?
实际上,分发的内容通常不是通过torvald的git树分发的。您的Linux发行版可能不是普通内核。
这样做的原因是,分发供应商通常支持可能会影响其客户的不同来源的端口修复。例如,在Fedora (这些示例的选择纯粹是因为我最近有定制构建这些包的经验):
3.11.4-201.fc19.x86_64 )包含了许多用于v4l、iommu补丁、drm nex、iwl (英特尔无线)驱动程序的补丁,等等。在Fedora (和其他基于yum的系统)上,yumdownloader --source kernel会拉下源代码内核RPM -打开它,您会发现所有用于构建内核包的东西。
因此,不,您的Linux (甚至您的包)可能不是普通的供应商包。现在,接下来:
真正的问题是,您能确定分布式开源软件确实是您所期望的吗?
那么,上面的要点是,您的包数据库内容可能不是您预期的那样,但我想问题是,其中是否含有恶意内容?
答案是,除非您检查源并根据源重新构建包,否则作为最终用户,您几乎没有什么方法可以判断。
然而,大多数包提交过程涉及一点严格性。通常,你不能只是出现并成为一个流行的软件包的维护者。你需要知道你的贡献,得到一名工作人员/委员会成员的批准/任何赋予你推包权的东西。
我可以看到这是一个可能的攻击矢量在晦涩的软件,但主要的软件包,我认为这是足够的可能性,攻击将被检测到最终。大多数包都是从源代码构建的,并且由于错误、用户问题等原因而受到审查。发展仍在继续,一揽子计划正在重建。补丁可能会失败。某个地方的人可能会注意到一个奇怪的地方,基本上。
在此基础上,我认为你必须做出一个基于风险的决定。您想要保护的东西是否如此有价值,以至于您认为高能力和持久的对手会试图在Linux发行版中后门一个包来帮助您呢?如果是这样的话,继续构建您自己的发行版(顺便说一句,您没有理由不能窃取现有分发服务器的包,只需仔细地审核/编译您自己的包--这就是开源的美妙之处)。
如果没有,我会(亲自)接受外部风险。
发布于 2013-10-22 18:53:04
根据我的经验,确保某个特定模块没有内置到内核中或在运行时没有加载根模块的唯一方法是自己构建内核。向Gentoo抛出,在Gentoo中,您负责下载自己的源代码并构建系统上的每个包。如果您下载Ubuntu、Kali、Backtrack或其他预先构建的系统,而不是下载内核源代码的系统,那么您可以做make、make等.决定将哪些项目作为模块构建并加载到内核中,然后基本上我不认为您可以信任系统。
发布于 2013-10-22 18:55:31
不,你实际上不能。您相信存储库是安全的,并且提交的人员正在正确地执行此操作。但是,从存储库下载的任何内容都可以在某种程度上进行验证。存储库的几乎所有部分都有同行评审过程。
如果您想确定,唯一能做的就是从头编译所有东西,就像在Linux从零开始中那样。但即便如此,为了确保没有后门,您也需要自己检查所有代码。
最后,这是(和往常一样)在可用性、易用性和保证实际上人们不捆绑后门之间的一种权衡。
https://security.stackexchange.com/questions/44285
复制相似问题