绿坝的技术错误及其可能导致的后果

作者:virushuo  来源:http://blog.devep.net/virushuo/2009/06/15/post_66.html

简单谈几点绿坝的技术上的错误。如果不改进,我相信未来会造成巨大的损失。

1 不应该用木马的方式来保护自己。

站在绿坝的观点上,认为不能被孩子随便卸载和杀掉,所以就要强力的保护自己。于是用了一系列只有病毒和木马才会用的办法。这是典型的方法错误。正确的方法应该是给孩子一个单独的账号,降低此账号权限。然后绿坝以管理员身份运行。这样就不用靠流氓手段保护自己。家长和成年人也可不受其干扰。眼前使用的办法,其实也保护不了自己的安全和不被卸载。

2 缓冲区溢出的问题必须要重视。

到目前为止,密歇根大学提出的缓冲区溢出漏洞没有被修正。而根据电脑报文章,用户在正常使用中时而会导致浏览器崩溃。这大概也是溢出的迹象。在我的周末的简单研究中,觉得确实如密歇根大学报告所说"使用了较陈旧的编程方法",系统中存在缓冲区溢出的机会大大增加。

简单的反编译就可以发现,程序中大量数组和内存操作是不安全的。导致缓冲区溢出的机会很大。还有相当数量的硬编码,把一些密码之类的东西直接写了进去。这些不良的编程习惯都会带来安全问题

缓冲区溢出并非让程序崩溃退出那么简单,事实上利用这种漏洞是可以完全控制一台计算机的。历史上几次大的病毒传播,比如nimda,比如红色代码,都是缓冲区溢出引起的。缓冲区溢出不仅困扰小公司,对微软这种大公司也是巨大的安全威胁。但是像绿坝这样,把漏洞百出的代码做最广泛的安全,实在是匪夷所思。如果真的这么推广下去,真的都安装了,未来还不知道出什么事。

如果被用来攻击电子政务系统或是骨干网的路由设备,造成的损失很非常大。不知道到时候政府会不会后悔现在的行为。

3 不加密的升级方式很危险
绿坝的升级都是通过http的,并且频繁调用gethostname来做dns解析。一方面,简单的dns欺骗就可以让系统安装恶意代码。另一方面,如果升级服务器被攻击掉,也很有可能导致前几天的"暴风断网"事故重演。规模恐怕还要大的多。

4 杀毒软件怎么办
绿坝的很多行为,和木马很相似,这些行为必然会被杀毒软件和木马清除软件识别。如果工信部强令杀毒软件把绿坝加入白名单,最终就等于在系统里面为病毒制造一个保护伞。病毒和木马可以通过附着在绿坝上面,躲避杀毒软件的扫描。这也是严重的安全问题。

总结:一般来说,大规模安装的软件要特别注意安全问题。最有效的办法是降低自己的权限,那么就算出现问题也不至于影响太大。但是绿坝反而用不正当的方式获得了很高权限。而高权限的软件则要至少能保证自己的安全,绿坝显然也做不到这点,绿坝调用各种dll并没有做校验,这都是非常容易被利用的。

一个具有高权限,又被普遍安装的软件,一定会吸引大量的攻击,这个诱惑太大了。这在windows一贯历史上都得到了验证。而一个不严谨,具有高权限,又广泛安装的软件,一旦被攻击,结果会怎么样呢?历史上没有过先例。但我想一定不是个好结果。

另外,在我研究的这部分(xnet2.exe,gn.exe,xdaemon.exe)中,我没有发现往服务器发送用户隐私的行为。但这不代表其他部分没有。大正的引擎是和绿坝是完全独立的,只是通过exe进行了简单调用,这部分也存在前面提到的问题,很容易被冒充或注入。在卸载方面,我看到了绿坝的卸载代码,就软件开发者来说,他们确实是想完全卸载,不留痕迹的。但是因为技术原因未必能做到。而且在某些其他程序干扰下,可能卸载也不能顺利完成。这也造成了"不能卸载"的假象。

如果工信部真的想解决未成年人保护问题,请将此软件开源,以便保证其中立和完善。苹果操作系统甚至自带了未成年人保护功能,这确实是应该的。但不应该是用目前这种危险的方式进行。

说到担心计算机被政府控制用来限制言论自由的观点,我觉得也不用太在意。事实上,所有政府都希望做到这事,但在操作上是如此的不具备操作性。如韩寒所说,计算机上有个东西叫做键盘。这就决定了不可能有超越用户存在的软件,哪怕是最厉害的病毒。一个试图当上帝的程序,最后的命运往往是去见上帝。

计算机是完全开发的,互联网也是。他们的体系和架构就决定了这一特点,任何与这个特点相反的努力都是徒劳的,好像螳臂挡车,阻挡历史的车轮。必然是不可实现的。

没有评论: