Debian 项目旨在防止 CIA 入侵我们的计算机
于 2015 年 9 月 15 日
Lunar,Debian ReproducibleBuilds 项目的主要开发者之一,最近概述了一个可能影响所有开源软件(包括大多数 Linux 发行版)的严重安全漏洞。它可能会让用户暴露在来自第三方(包括安全机构)的不必要审查之下。他的项目旨在弥补这个漏洞。
1:必须更改源代码,以便始终将变量初始化为静态值(而不是来自内存的动态值,这可能是随机的)。
2:消除时间戳、源代码文件路径和构建编号的使用。
3:指定确切的构建环境,以便可以在不同的计算机上重现它。
https://wiki.debian.org/ReproducibleBuilds
和
https://reproducible.alioth.debian.org/presentations/2015-08-13-CCCamp15-outline.pdf
开源软件的一大优势是第三方可以检查代码,以确保它 выполняет 所期望的功能。如果存在任何恶意代码,则可以检测并消除它。但是,当软件以二进制可执行文件的形式分发时,存在添加了恶意代码(原始源代码中不存在)的风险。
这不一定意味着开发者有意分发损坏的代码。如果开发者使用的是被攻破的编译器,则可能会在源代码转换为可执行文件时引入恶意软件。
这听起来可能有些牵强,但实际上这是一个真实的安全问题。“斯诺登”泄密事件表明,CIA 正在研究利用这些弱点的方法,以便在全球范围内的消费者设备上安装监听软件。
在最近由 CIA 组织的一次会议上,一个开发者团队展示了一个概念验证。他们设法绕过了 Apple 的数字证书,制作了一个损坏版本的 XCode,即 Apple 的专有编译器。独立开发者使用此编译器来制作 OS X 和 IOS 应用程序。损坏的版本会将间谍软件嵌入到开发者编译的任何应用程序中,而开发者对此一无所知。
这些应用程序可能会进入应用商店,并有可能进入数百万台消费者设备。这将使安全机构能够监听全球数百万无辜用户的对话和私人消息。
如果 Apple 是一个热门目标,那么 Linux 甚至更具诱惑力。了解商业平台风险的安全意识用户通常使用 Linux 以获得更严格的安全功能。这包括安全机构非常感兴趣监视的人。
防病毒软件可以检测已知恶意软件的片段,但这只有在发现和分析恶意软件实例后才有可能。它不能防御新的或以前未检测到的恶意软件感染。简而言之,防病毒软件不足以防御此类攻击。
确保二进制可执行文件不包含任何意外代码的唯一方法是编译源代码并比较这两个文件。如果新编译的文件与正在测试的二进制可执行文件不匹配,则可能添加了代码,可能是恶意软件。
虽然这基本上是一个好主意,但其中存在一个主要问题。大多数 Linux 软件包的源代码编写方式使其并不总是编译生成相同的二进制文件。
编译后的文件可能不同的原因有几个,包括
- 嵌入在代码中的时间戳。
- 增量构建编号。
- 不同文件系统之间的差异,因此在我计算机上编译的二进制文件与在您的计算机上编译的二进制文件不同。
- 来自构建机器的文件路径嵌入到二进制文件中 - 不同的计算机可能在不同的位置存储资源和代码。
- 来自内存或 CPU 的随机数据嵌入到编译文件中。 等等。
要解决生成可重现构建的问题,需要进行多项更改
1:必须更改源代码,以便始终将变量初始化为静态值(而不是来自内存的动态值,这可能是随机的)。
2:消除时间戳、源代码文件路径和构建编号的使用。
3:指定确切的构建环境,以便可以在不同的计算机上重现它。
您可以想象,这在一个单独的项目上可能是艰苦的工作。但是 Debian 项目有超过 20,000 个软件包,并且其中大多数需要进行彻底检查。至少可以说,这是一项重大的任务。
但这必须完成。单个损坏的软件包可能会导致数千台计算机受到感染。
您可以在以下位置阅读有关该项目的更多信息
https://wiki.debian.org/ReproducibleBuilds
和
https://reproducible.alioth.debian.org/presentations/2015-08-13-CCCamp15-outline.pdf