[转帖]密歇根大学对于绿霸的安全性分析: 绿坝审查系统分析 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/) ××××××××××××××××××××××××××××××××××××××××××××××××××××××× 已经被普及到爆的“定长缓冲戒律”……做这软件的程序员便是名卧底cracke的说啊 [此贴子已经被作者于2009-6-13 12:43:04编辑过] |