『编译』来自美国密西根大学的绿坝系统分析报告(下)

接上文:『编译』来自美国密西根大学的绿坝系统分析报告(上)

安全问题

对绿坝软件仅测试一天,我们就发现了两大安全漏洞。一处是绿坝软件对其所监控的网络链接的处理,另一处是该软件更新过滤文件的方式。这两大漏洞都可能被黑客利用而对用户电脑进行远程操作,比如运行任意代码甚至完全控制用户电脑。

网址过滤中的隐患

绿坝首先拦截用户电脑与服务器之间的通信信息,再将网站与黑名单对比,看所浏览网页是否在黑名单内,并记录下网址。具体说来,这是通过socket API这个程序接口将SurfGd.dll文件包括到软件中而实现的。

我们发现了该软件在处理网址时存在着程序上的错误。由于该程序总是用固定字节长度的缓冲区来处理网址,所以如果有人制造一个特定的网址,就可以使得绿坝软件的缓冲区溢出,进而造成浏览器崩溃。为了说明这一问题,我们特地制作了一个网址。如果你电脑上已经装了绿坝,并且你敢于尝试,你可以点这里来搞垮你的浏览器。

我们的这个网址只是为了说明绿坝存在的安全漏洞,所以点到为止,仅仅是搞垮用户的浏览器。而真正的黑客则可以利用这个漏洞,在用户电脑里植入木马。绿坝设计上存在的问题使得任何浏览器都会面临这样的安全问题。所以为了保险起见,最安全的办法就是立刻卸载绿坝。

更新黑名单过程中的安全漏洞

绿坝的第二个安全问题来源于它读取过滤文件的方式(译者注:过滤文件包括白名单和黑名单)。这个问题使得绿坝的生产商—金惠公司,或者把自己装扮成生产商的第三方,能够在黑名单升级后在用户的电脑上运行任意代码,并安装恶意软件。

绿坝通过使用存在安全隐患的C语言字符串库来读取过滤文件。它调用了fscanf函数将文件中的字符读取到固定字节长度的缓冲区中。这其实就是常见的缓冲区溢出漏洞。举例说来,如果TrustUrl.dat文件中有一行的字节超过了固定长度,缓冲区就会溢出,造成程序崩溃,这就给想控制进程的人带来了可趁之机。

用户更新过滤文件的过程中,上述安全漏洞就能被绿坝的生产商—金惠公司,或者把自己装扮成生产商的第三方利用,从而控制用户电脑。另外值得一提的是,更新是通过不加密的HTTP协议来完成的,这又是一处明显的安全漏洞。因为黑客可以通过利用DNS(域名服务器)的漏洞,先把自己装扮成金惠公司的服务器,然后就很容易控制用户电脑。

绿坝软件的卸载

如果用户知道管理员密码,就可以卸载绿坝软件。通过测试,我们发现绿坝自带的卸载软件就可以比较彻底的卸载绿坝。但卸载之后,系统还是保留一些记录文件,里面记录了用户对软件的使用情况。

基于上述列举的问题,我们建议用户尽快将绿坝软件卸载,用绿坝自带的卸载软件即可。

总结

短短12小时的测试说明了绿坝软件存在非常严重的安全漏洞。不幸的是,这些漏洞来源于编程时所犯的错误。软件大量使用了有安全隐患的编程方式,就比如前面提到的,已经过时的C语言字符串处理函数sprintf和fscanf。而程序设计上的问题使得安全漏洞更加严重:由于绿坝软件对所有的网络流量进行审查,从而软件中的漏洞可能被很多人利用,用户电脑受攻击的面也广。

如果绿坝就以现在的样子装到中国的千万台电脑上,那中国的计算机安全就很成问题了。我们发现的这些问题倒很快就能解决,但如果要彻底解决绿坝的所有问题,就需要将绿坝软件大部分的代码重写,并进行详尽的安全测试。可眼看着政府要求全面安装绿坝的起始日期—7月1号就要来到,估计这种大规模修复也是不可能的了。

附:这里是Halderman教授的个人页面,里面有它的邮箱等信息,感兴趣的同学可以发邮件去跟他讨论。

http://www.cse.umich.edu/~jhalderm

(全文完)

声明:本站文章除标注“转载”外均为原创,转载请联系我们

作者的话