◇◇新语丝(www.xys.org)(xys3.dxiong.com)(www.xysforum.org)(xys2.dropin.org)◇◇ (spluto译自:http://www.cse.umich.edu/~jhalderm/pub/gd/)   Analysis of the Green Dam Censorware System   绿坝审查系统分析   Scott Wolchok, Randy Yao, J. Alex Halderman   计算机科学及工程学院   密歇根大学   版本号:2.4 2009年6月11日   摘要:   我们已经在“绿坝”软件中发现远程缓冲区溢出漏洞,这是一款由中国政府 强制安装的审查软件。任何一个网站都可以取得“绿坝”用户的PC控制权。   根据媒体报道,中国很快将要求国内所有的PC厂商安装“绿坝”软件,该软 件将会监视Web站点访问和其他用户行为,并且阻止成人内容和政治敏感信息。   我们测试了“绿坝”软件,并发现了一系列由于编码错误而导致的安全缺陷, 一旦“绿坝”软件被安装之后,任何web站点可对用户的电脑进行溢出攻击,并 取得计算机控制权,这会导致恶意站点盗窃用户隐私信息,发送垃圾邮件,或将 该计算机加入僵尸网络。除此之外,我们同样发现在“绿坝”软件进行黑名单升 级的过程中,由于程序本身的缺陷,可导致软件提供商或其他人植入恶意代码。   在不到12小时的测试中,我们发现了上述问题,并且我们坚信这仅仅是冰山 一角。“绿坝”软件频繁使用不安全及过时的编码方法,这有可能会导致其他软 件缺陷,修正这些问题将引发大规模的软件修改及谨慎的重新测试。在此期间, 我们推荐用户立即删除“绿坝”软件来保护自己。   简介:   根据最近的新闻报道(NYT,WSJ),中国政府已下令,自7月1日起,强制所 有中国境内的PC销售商必须安装一个称为“绿坝”的审查软件。这个软件用来个 人电脑的监控互联网连接及文本输入,它将阻止不良内容及政治敏感信息,并有 可能汇报给官方。“绿坝”由一个称为“金惠”的公司开发,并提供免费下载。 我们测试的版本为3.17。   “绿坝”是如何工作的   “绿坝”软件通过监控其他程序中的文本、网站图片以及URL来实现内容过 滤,过滤黑名单包括了政治及成人内容。一些黑名单显然是从一个美国产的过滤 软件中拷贝而来。   -图像过滤器:   “绿坝”软件包含了计算机图像技术用于阻拦互联网图片(包括裸体图像), 据报道,该图片过滤器基于对人体皮肤色调的标记,而对于人脸大头像例外。我 们已经发现,该程序中的代码库和配置文件来源于一个称为OpenCV的开源图像识 别软件。   -文本过滤器   “绿坝”软件会在众多程序中扫描已被阻止的文本,包括猥亵词汇和政治敏 感短语。被列入黑名单的条目位于三个文件中,采用简单的密钥进行加密处理, 我们对这些文件进行了解密操作:xwordl.dat, xwordm.dat, xwordh.dat。我们 还发现,F_a_l_u_nWord.lib,看起来是一个词典文件,而实际上是一个精巧的 语句处理算法。当“绿坝”检测出(某个软件包含)这些关键词时,该软件将会 被强制关闭,并且屏幕上会显示出一个错误提示。   -URL过滤器   “绿坝”对网站URL使用黑/白名单中的配型(位于文件*fil.dat, adwapp.dat及TrustUrl.dat中)对比进行过滤,这些文件采用简单的密钥进行加 密处理,作为黑名单用于文本过滤。5个黑名单对应于“绿坝”选项中的5个内容 过滤类别。   我们已发现证据,有相当多的黑名单是来自于一个美国产的过滤软件 CyberSitter,更有甚者,我们发现了一个加密的配置文件 wfileu.dat,它引用 了CyberSitter网站的黑名单及下载链接,我们推断,这个文件是偶然被加入的, 因为它与过滤文件的后缀名相同。   安全问题:   在对“绿坝”软件进行短短的一天测试之后,我们发现了两个较大的安全隐 患。首先,是该软件在处理其监视的网站的过程中存在问题,其次是该软件安装 黑名单方法存在Bug。   -网页过滤缺陷:   “绿坝”软件会拦截互联网流量,并就其是否访问了黑名单中的网站进行检 查。为了实现监控,它将一个Surfgd.dll的文件注入到使用Socket API的软件中, 当用户访问一个web站点时,这段代码将会检查该URL是否存于黑名单中,并且记 录URL。   在处理Web站点请求的代码中,我们发现了编码错误。这段代码在处理URL时, 采用了一个定长的缓冲区,一个精心构造的URL可以超出该缓冲区,并破坏执行 堆栈,任何一个网站,使用这种恶意的URL,均可将用户浏览器重定向至一个网 页,以取得用户计算机的控制权。   我们构造了一个用于演示的URL,用于触发该问题,如果你已经安装了“绿 坝”软件,在我们的演示页面http://wolchok.org:8000/上按下按钮,将导致你 的浏览器(或标签页)崩溃。   这个概念性验证演示了我们有能力去控制执行堆栈,而一个实际的攻击者可 以利用该缺陷执行恶意代码。   “绿坝”软件的设计缺陷,导致了几乎任何一款浏览器都可被利用,现在, 毫无疑问地,用户保护自己的方法只有删除“绿坝”软件。   -黑名单升级缺陷:   “绿坝”软件在读取其过滤器文件时,我们发现了第二个问题,该问题将导 致用户下载安装了过滤器之后,“绿坝”软件开发商、第三方假冒者,可在用户 计算机上执行任意代码或安装恶意软件。   “绿坝”软件采用不安全的C字符库,在代码的有些地方,它使用了fscanf 函数来在过滤器文件中读取一行,并存入执行堆栈的一个定长缓冲区内。这将导 致典型的缓冲区溢出漏洞。例如,如果TrustUrl.dat中的某行超出了该缓冲区的 大小,缓冲区将溢出,破坏执行堆栈,并潜在性地给予攻击者控制权。   如果用户允许了过滤器更新,过滤器文件将会被软件提供商远程替换,这些 更新有可能会破坏这些有缺陷的文件,并利用我们发现的上述问题。对于那些安 装了该软件并开启了自动更新过滤器的计算机来说,“绿坝”软件提供商可以取 得它们的控制权。除此之外,更新过程采用未加密的HTTP协议,这可能会导致第 三方伪装更新服务器(例如:利用DNS缺陷),使用这种攻击方式来获得计算机 控制权。   删除“绿坝”软件   对于拥有管理员密码的用户,“绿坝”软件允许进行删除操作。我们测试了 删除程序,并发现它有效地在计算机上删除了“绿坝”软件。但是,在删除某些 日志文件时失败,所以有关用户行为的证据依然隐藏在系统中。   结论   我们对于“绿坝”软件的简短测试,证明了其存在非常严重的安全隐患,不 幸的是,这些问题反映了代码内部的系统性缺陷。这款软件广泛应用了公认的非 安全编码方法,例如有争议的C字符处理函数sprintf和fscanf,这款软件在设计 上综合了这些问题。并且,这些问题建立了一个巨大的攻击层面:内容过滤和互 联网流量处理,大部分的代码将处于攻击之下。   感谢   感谢我们密歇根大学的同事,是他告知我们对“绿坝”软件做出警示,并提 供翻译帮助。   联系作者:   请将问题或评论发送至 J.Alex Halderman 教授 (http://www.cse.umich.edu/~jhalderm/) (XYS20090613) ◇◇新语丝(www.xys.org)(xys3.dxiong.com)(www.xysforum.org)(xys2.dropin.org)◇◇