APP下载

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

2009-08-27

软件工程 2009年8期
关键词:木马缓冲区调用

霍 炬

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

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

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

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

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

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

缓冲区溢出并非让程序崩溃退出那么简单,事实上,利用这种漏洞是可以完全控制一台计算机的。历史上几次大的病毒传播,比如nimda,比如红色代码,都是缓冲区溢出引起的。缓冲区溢出不仅困扰小公司,对微软这种大公司也是巨大的安全威胁。

3.不加密的升级方式很危险。

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

4.杀毒软件怎么办?

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

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

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

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

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

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

猜你喜欢

木马缓冲区调用
小木马
骑木马
核电项目物项调用管理的应用研究
小木马
LabWindows/CVI下基于ActiveX技术的Excel调用
旋转木马
嫩江重要省界缓冲区水质单因子评价法研究
基于系统调用的恶意软件检测技术研究
关键链技术缓冲区的确定方法研究
利用RFC技术实现SAP系统接口通信