打印本文 打印本文  关闭窗口 关闭窗口  
密歇根大学对于绿坝的技术分析
作者:计算机科学及…  文章来源:http://www.cse.umich.edu/~jhalderm/pub/gd/  点击数  更新时间:2009/6/12 18:55:34  文章录入:admin  责任编辑:admin

本文转自http://www.cse.umich.edu/~jhalderm/pub/gd/
  
  绿坝审查系统分析
  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,用于触发该问题,如果你已经安装了“绿坝”软件,在我们的演示页面上按下按钮,将导致你的浏览器(或标签页)崩溃。
  这个概念性验证演示了我们有能力去控制执行堆栈,而一个实际的攻击者可以利用该缺陷执行恶意代码。
  “绿坝”软件的设计缺陷,导致了几乎任何一款浏览器都可被利用,现在,毫无疑问地,用户保护自己的方法只有删除“绿坝”软件。
  -黑名单升级缺陷:
  “绿坝”软件在读取其过滤器文件时,我们发现了第二个问题,该问题将导致用户下载安装了过滤器之后,“绿坝”软件开发商、第三方假冒者,可在用户计算机上执行任意代码或安装恶意软件。
  “绿坝”软件采用不安全的C字符库,在代码的有些地方,它使用了fscanf函数来在过滤器文件中读取一行,并存入执行堆栈的一个定长缓冲区内。这将导致典型的缓冲区溢出漏洞。例如,如果TrustUrl.dat中的某行超出了该缓冲区的大小,缓冲区将溢出,破坏执行堆栈,并潜在性地给予攻击者控制权。
  如果用户允许了过滤器更新,过滤器文件将会被软件提供商远程替换,这些更新有可能会破坏这些有缺陷的文件,并利用我们发现的上述问题。对于那些安装了该软件并开启了自动更新过滤器的计算机来说,“绿坝”软件提供商可以取得它们的控制权。除此之外,更新过程采用未加密的HTTP协议,这可能会导致第三方伪装更新服务器(例如:利用DNS缺陷),使用这种攻击方式来获得计算机控制权。
  
  删除“绿坝”软件
  对于拥有管理员密码的用户,“绿坝”软件允许进行删除操作。我们测试了删除程序,并发现它有效地在计算机上删除了“绿坝”软件。但是,在删除某些日志文件时失败,所以有关用户行为的证据依然隐藏在系统中。
  
  结论
  我们对于“绿坝”软件的简短测试,证明了其存在非常严重的安全隐患,不幸的是,这些问题反映了代码内部的系统性缺陷。这款软件广泛应用了公认的非安全编码方法,例如有争议的C字符处理函数sprintf和fscanf,这款软件在设计上综合了这些问题。并且,这些问题建立了一个巨大的攻击层面:内容过滤和互联网流量处理,大部分的代码将处于攻击之下。
  
  感谢
  感谢我们密歇根大学的同事,是他告知我们对“绿坝”软件做出警示,并提供翻译帮助。
  
  联系作者:
  请将问题或评论发送至 J.Alex Halderman 教授(http://www.cse.umich.edu/~jhalderm/)

上一页  [1] [2] 

打印本文 打印本文  关闭窗口 关闭窗口