一路 BBS

 找回密码
 注册
搜索
查看: 508|回复: 0
打印 上一主题 下一主题

对"绿坝"过滤系统的分析

[复制链接]
跳转到指定楼层
楼主
发表于 6-12-2009 20:23:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文通过一路BBS站telnet客户端发布

发信人: wujixing (Marx is back), 信区: ITExpress
标  题: 对"绿坝"过滤系统的分析(本人翻译)
发信站: 水木社区 (Sat Jun 13 09:11:17 2009), 站内

原文见 http://www.cse.umich.edu/~jhalderm/pub/gd/

希望更多的人能了解推广绿坝潜在的危险,特别是作者在结尾处提出的警告。
错漏之处肯定不少,见谅见谅。

对"绿坝"过滤系统的分析(中文翻译)
修订版2.4,2009年6月11日

作者:Scott Wolchok、Randy Yao、J. Alex Halderman
美国密歇根大学计算机科学与工程系

摘要
    我们对据传中国政府强制推广使用的绿坝软件做了技术分析,并发现其中存在有远程漏
洞。这些漏洞可能会使用户在访问某些网站时,其计算机被控制。
    根据目前的报道,中国将在近期内要求所有境内销售的个人计算机都必须预装绿坝。该
软件能够监控用户的网站访问以及其他操作,并屏蔽涉及成人和带有政治敏感性的内容。
    我们通过对绿坝软件的检测,发现由于程序设计上的疏漏,软件中存在严重的安全漏洞
。用户访问的任何网站都可以利用这些问题取得对用户计算机的控制权。这将使得一些恶意
网站有机可趁,诸如窃取个人隐私、发送垃圾邮件、将用户计算机变成僵尸计算机等。另外
我们还发现了绿坝在黑名单更新中存在的漏洞,软件制造商或其他人可以通过它在软件更新
的同时装载恶意代码。
    所有这些问题仅仅是在不到12小时的测试中发现的,我们相信这只是冰山一角而已。因
为绿坝在编写过程中使用了大量不安全和过时的方式,这很可能导致许多其他的漏洞。要纠
正这些问题,必须对软件做全方位的修改和细致的重复测试。同时,从计算机安全的角度出
发,我们建议目前的绿坝用户尽快删除该软件。

一、引言
    根据一些媒体(如纽约时报、华尔街日报)最近的报道,中国政府宣布,从7月1日起所
有在中国境内销售的个人计算机都必须预装一款称为"绿坝"的个人软件。该软件主要用于监
测用户的互联网连接和文本输入情况,屏蔽不良内容和政治敏感内容,并有选择地将相关情
况报告给当局。绿坝由金惠公司开发,并提供免费下载。这里我们测试的是该软件的3.17版


二、绿坝的工作原理
    绿坝的过滤功能主要是通过屏蔽网址和网络图片实现的,而用户在运行其他应用程序时
,绿坝也会对文本内容进行监测。它的过滤黑名单包括成人和政治黑名单,而且其中一部分
似乎拷贝了美国产的过滤软件。

    图像过滤:绿坝利用了计算机视觉技术来屏蔽网上的裸体图片。据传其主要原理是对包
含大面积类人体肤色的图像部分进行标记,同时忽略接近人脸的部分。我们发现软件的这一
部分程序中,包含有开源图像识别软件OpenCV的代码库和配置文件。

    文本过滤:绿坝通过搜索不同应用程序的文本输入栏以寻找各种屏蔽词汇,包括猥亵和
政治敏感性词汇。黑名单包含在如下三个文件中:xwordl.dat、xwordm.dat和xwordh.dat,
并采用简单的无密钥混序操作进行加密,我们破解了这些文件。此外还发现了一个未加密的
词表文件FalunWord.lib,它似乎是应用于一个更精细的句处理算法。绿坝一旦检测到名单
中的词汇,将强制关闭问题程序并弹出一个报错画面。

    网址过滤:绿坝根据白名单和黑名单文件(*fil.dat,adwapp.dat和TrustUrl.dat),
采用模式匹配的方式实现对网址的过滤。这些文件采用和文本过滤器相同的无密钥混序法做
加密。其中五个黑名单文件分别对应于对话框选项中的五种过滤类别。

    我们有确切的证据表明,这些黑名单中很大一部分来自美国产的过滤软件CyberSitter
。其中一个加密的配置文件wfileu.dat,明确提到这些黑名单下载自CyberSitter的网站。
我们还找到了一个安装文件xstring.s2g,似乎说明这些黑名单是2006年版的。另外,还有
一个加密文件csnews.dat的内容是CyberSitter在2004年的新闻公报。我们猜这是因为该文
件和其他过滤器具有相同的文件扩展名,软件开发者一时疏忽未将它删去。

三、安全问题
    我们只花了一天时间,就在绿坝软件里找到了两个重大的安全漏洞。第一个漏洞是软件
在网站监测处理上的错误,第二个则是软件进行黑名单更新时的程序错误。这两个错漏都能
让远程攻击者执行任意代码并控制计算机。

1、网络过滤漏洞
    绿坝能够实现网络通讯截查,并检测所访问的网站是否在黑名单中。其核心部分是软件
中的链接库SurfGd.dll,它采用了Socket API技术。当用户访问某个网站时,该部分代码能
依据黑名单检查该网站的地址并记录。

    我们发现该部分程序代码的错误发生在处理站点请求的时候。该部分代码用一个固定长
度的缓冲区来处理网址,一个精心设计的网址能够使缓冲区溢出并破坏程序的执行栈。任何
网站都能利用这一点将用户浏览器重定向至一个恶意网址并进一步控制计算机。

    对此我们设计了一个简单的例子来证实。如果你安装了绿坝,只要点击网页
"demonstration attack page"中的按钮,浏览器(或者标签页)就会崩溃。

    该测试还进一步表明,我们可以控制程序的执行栈。在实际当中,攻击者能够充分利用
这一点在用户的计算机上执行恶意代码。

    绿坝这一设计上的问题对几乎所有的网络浏览器都有效。仅就此而言,用户要免受攻击
,最稳妥的办法就是卸载绿坝。

2、黑名单更新漏洞
    我们发现的第二个问题存在于绿坝的过滤文件读取操作中。通过这一漏洞,软件制造商
(或者伪装成制造商的第三方),可以借用户计算机更新过滤器的机会,执行任意代码并安
装恶意软件。(注意,在绿坝的配置程序中,有过滤器自动更新选项。)

    绿坝采用了危险的C语言字符串程序库来实现过滤文件的读取操作--程序有几处地方使
用了fscanf函数,把过滤文件中的若干行读入到执行栈的定长缓冲区中。这种陈旧的操作方
式会导致缓冲区溢出漏洞。譬如,读取文件TrustUrl.dat中的某一行时,一旦该行超出了缓
冲区预先设定的长度,就会出现缓冲区溢出和执行栈被破坏的情况,甚至可能使程序进程被
攻击者所控制。

    需要注意的是,如果用户启用了软件中的过滤器更新功能,软件制造商能实现对过滤文
件的远程更换。在这种情况下,利用如前所述的漏洞,绿坝的制造商就可以控制用户的计算
机。此外,由于软件更新是通过明文的HTTP协议进行,第三方也能通过伪装成更新服务器
(如利用DNS漏洞)来控制用户计算机。

四、绿坝的卸载
    绿坝允许知道管理员口令的用户卸载软件。从测试结果来看,该软件的卸载功能似乎还
是有效的。但是它并不能删除一些记录文件,因此用户的活动记录在软件删除后仍然会保留
在系统中。

    考虑到前面所述的种种漏洞,我们建议用户最好立即使用该软件的卸载功能将其删除,
以保护自己的计算机免受攻击。

五、结论
    我们粗略的测试已经表明绿坝包含有若干非常危险的安全漏洞。值得警惕的是,这些问
题反映出该软件在代码方面有系统性的缺陷。该软件大量使用了业界早已熟知的危险程序代
码,譬如饱受非议的C字符串处理函数sprintf和fscanf。加之绿坝会过滤并处理所有的网络
通信内容,这些混杂在程序设计和代码中的问题会成倍放大,使得该款软件的方方面面都存
在被攻击的危险。

    以绿坝目前的软件质量来看,如果推广使用的话,将严重危害中国的计算机安全。我们
已发现的问题或许能在短期内得到解决,但要纠正绿坝中所有的问题就必须重写软件中的大
量代码并测试。然而,要在7月1日中国政府全面推广绿坝之前完成这些工作,非常困难。

致谢
感谢提醒我们关注绿坝软件并提供翻译帮助的密歇根大学同仁。

联系作者
有任何问题和建议,请联系J. Alex Halderman教授。





--
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表