|
楼主 |
发表于 2003-6-6 09:57:27
|
显示全部楼层
他修改了/bin/login应用程序以内嵌一小段代码,通过输入预先编译好的硬编码的密码(不须考虑/etc/passwd)可提供对系统的直接访问。这样,Thompson能够使用这个login版本访问每个系统。
不过,该应用程序的源码只存于当时(像是为了今天的自由软件)。之后,login.c的源码在Unix系统上公布,这样每个人都能读取俘获的代码。因此,Thompson提供了干净的不带访问后门的login.c。
问题在于每个管理员都能够重新编译login.c来删除俘获了的版本。于是,Thompson修改了标准C编译器以使之能够在注意到某人试图编译login.c时添加后门。
但是接着编译器源代码cc.c又出现了,这样每个人都能读取或者重新编译编译器。为此,Thompson提供了干净的编译器源代码,但是已经处理过的二进制文件能够识别自己的源文件,那么还是包含了用来感染login.c的代码...
怎样解决这个问题?咳,毫无办法!唯一的方法就是使用一个全新的系统重新启动。除非你在安装机器时从头创建所有的微代码,操作系统,编译器,实用工具,否则你无法确定每个应用程序都是干净的,即使是那些有源码的程序。 |
|