[摘]来自美国密西根大学的Green Dam 系统分析报告

摘要:据报道,中国政府将强制性要求所有境内出售的电脑都装上Green Dam软件。它可以监控用户网上冲浪以及其他电脑操作,过滤掉色情以及政治上敏感的内容。通过对该软件的测试,我们发现了Green Dam系统中存在种种漏洞,这些漏洞会让用户遭到远程攻击。而用户访问的任何网站都有可能成为攻击来源。

由于以上问题都是在12小时测试内发现的,我们有理由相信这些问题还只是冰山一角。Green Dam软件大量使用存在安全隐患的、过时的编程方式,这可能会造成更多的系统漏洞。要想解决这些问题,需要对软件进行大规模的改写,并进行周密的软件测试。眼下,我们建议用户立刻卸载Green Dam软件,保护自己的信息安全。

测试中发现该软件由于编程不合理,存在安全隐患。用户所访问的任何一个网站都可以利用这个安全隐患来控制用户电脑。恶意网站可以方便地窃取用户个人信息,发送垃圾邮件,甚至制造僵尸网络(何为僵尸网络?了解详情请点这里)。另外,在Green Dam升级黑名单时出现的系统安全漏洞,使得软件生产商或黑客可以在此过程中植入恶意代码。

引言:来自纽约时报和华尔街日报的消息称,中国政府要求今年7月1号以后在中国境内出售的所有电脑都装上Green Dam软件。据说该软件是用来监控网络使用情况以及在电脑里的文字输入。它可以屏蔽掉少儿不宜或政治性敏感内容,并有可能将屏蔽内容报告给政府。金惠公司开发了该软件,并在网上提供免费下载。我们所检测的是Green Dam3.17版。

Green Dam是如何工作的

Green Dam软件通过屏蔽网址和网上图片,并监控电脑上的文字输入来过滤内容。过滤的内容有成人的,也有政治方面的。过滤黑名单中的部分内容似乎是抄袭了美国的过滤软件。

图片过滤 据报道,Green Dam软件通过监测图片中人皮肤的暴露程度(脸部特写除外)来判断该图片是否少儿不宜。我们发现,Green Dam的程序使用了开源图像识别软件OpenCV的代码库和一个配置文件。

文字过滤 Green Dam可以监控各种软件中的文字输入,监控的对象包括低俗词汇和政治敏感词。我们发现这些过滤词汇都放在3个加密文件中。由于加密方法很简单,我们很快便破解了这三个文件的内容:xword1.dat, xwordm.dat, xwordh.dat(具体的加密方法为无钥加密操作--keyless scrambling operation,想过破解瘾的同学可以试一试)。当然Green Dam也是有高级的地方,就是当用户输入的是一句话而不是单独几个词时,Green Dam也有相应的算法来监测内容。我们发现了这个算法所要用到的词汇列表,它被放在了一个未加密的FalunWord.lib文件里。一旦Green Dam发现用户输入了敏感词,它就会强行关闭正在使用的软件,并弹出报错窗口,截图如下图所示。

clip_image001

网址过滤 Green Dam根据白名单和黑名单来确定过滤什么样的网址。白名单和黑名单的内容在这三个文件里:*fil.dat, adwapp.dat, and TrustUrl.dat。这三个文件同样采用了简单的加密方法,即之前所说的“无钥加密操作–keyless scrambling operation”。黑名单分为五个部分,分别对应下图所示的五个选项,即“成人/色情网站”,“成人/色情网站(严格)”,“暴力游戏”,“同性恋”,“非法活动/毒品”。

我们还发现,这些黑名单中很大一部分是来自美国的过滤软件CyberSitter。我们甚至还找到了配置文件wfileu.dat,这里面清楚的标明很多黑名单是从CyberSitter的网站上下载下来的。而根据程序设置文件xstring.s2g来看,这些黑名单还是2006年的。最有意思的是,我们还发现了csnews.dat这个文件,内容是CyberSitter2004年发布的一个新闻简讯。不知道Green Dam怎么这么不小心,也许是因为该文件和黑名单文件有着相同的文件后缀名吧。

clip_image002

安全问题

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

网址过滤中的隐患

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

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

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

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

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

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

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

Green Dam软件的卸载

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

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

总结

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

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

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

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

你可能感兴趣的:(系统)