“绿坝”审查软件系统的分析(译言网友jiyee翻译的密歇根大学团队绿坝研究报告)

原文作者:Scott Wolchok, Randy Yao, and J. Alex Halderman
翻译:jiyee
来源:译言

绿坝审查软件系统分析

Scott Wolchok, Randy Yao, and J. Alex Halderman

计算机科学与工程系
美国密西根大学

密西根大学计算机科学和工程部

摘要

我们已经发现在绿坝软件中存在远程利用的漏洞,据说是中国政府授权的审查软件。任何绿坝的用户访问网站都可以控制电脑。

据新闻报道,中国将很快要求所有在国内销售的PC预装绿坝软件。软件可以监控访问的网站及相关其他活动,并且阻止成人的内容以及政治上敏感的内容。

我们检查了绿坝软件,发现它包含由于编程错误导致的严重的安全漏洞。一旦安装绿坝后,用户访问的网站,可以充分利用这些漏洞来控制电脑。这可能允许恶意网站窃取个人资料,发送垃圾邮件,甚至被控制为一个僵尸网络的计算机("肉鸡")。此外,我们发现绿坝黑名单的更新的方式存在漏洞,可以让软件制造商或其他人在更新过程中安装恶意代码。

这些暴露的问题,仅仅是不到12小时的测试结果,我们认为它们可能只是冰山一角。绿坝软件中频繁应用不安全和过时的编程方法,可能引起许多其他漏洞。纠正这些问题需要大量的修改,并且仔细地重新测试。同时,我们建议用户为了保护自己立即卸载绿坝软件

发现被过滤的词组时绿坝将显示此消息。

简介

根据最新的新闻报道(纽约时报华尔街日报),中国政府批准,从7月1日开始,每一台在国内销售的PC都要求预装一款称作绿坝的审查程序。该款软件的作用是监测在电脑上的互联网连接和文字输入。它会阻止不良或政治上敏感的内容,并且将其选择性地报告给当局。绿坝是由金惠公司开发,并提供免费下载我们检查的版本号是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年新闻简报。我们猜想,这个文件是一个意外,因为它和过滤器有相同的文件扩展名。

安全问题

经过一天的软件测试,我们发现了两个主要的安全漏洞。首先,在软件监测网站的方式存在一个错误。其次,软件黑名单更新方式中存在一个漏洞。两者都允许远程执行任意代码和控制电脑。

网页过滤漏洞

绿坝拦截网络流量,软件进程检查用户访问网站是否有黑名单包含的网址。为了实现网络监测,它使用socket接口向软件注入了一个名为SurfGd.dll的库。当用户访问一个网站,这段代码会检查网址是否在黑名单中并记录访问的网址。

我们发现,处理Web站点的请求的代码中存在编程错误。处理网址的代码,使用了固定大小的缓冲区,一个特制的URL地址可以溢出这个缓冲区和破坏执行堆栈。用户访问的任何网站可以重定向浏览器到一个包含恶意网址的页面,并控制电脑。

我们已经设计了一个触发此错误的示例网址如果您安装了绿坝,按一下我们示例攻击网页上的按钮,将导致您的浏览器(或标签)崩溃。

这一技术性验证测试表明,我们已经能够控制执行堆栈。一个实际的攻击者可以利用这个漏洞来执行恶意代码。

绿坝的设计使得几乎所有的浏览器都可以利用这个漏洞现在,用户保护自己最可靠的方就是卸载绿坝

黑名单更新漏洞

我们发现的第二个问题是绿坝读取过滤文件的方式。这个问题将使绿坝的制造商或者第三方冒充他们执行任意的代码,并在用户的电脑上安装完一个过滤器的更新后安装恶意软件用户可以从绿坝配置程序中启用自动过滤器更新。

绿坝读取过滤文件使用了不安全C语言字符串库。在这些地方,它使用fscanf函按行数读取过滤文件到程序执行堆栈中一个固定长度的缓冲区。这是典型的缓冲区溢出漏洞例如,如果文件TrustUrl.dat中的一行超过某一固定长度,缓冲区将会溢出,破坏执行堆栈,甚至可能让攻击者控制进程。

如果用户已启用过滤器的更新功能,过滤文件可以由软件制造商远程替换。利用我们发现的漏洞,更新可以破坏这些有易受攻击的文件。这可能会允许绿坝的设计者控制任何一台安装了绿坝和启用自动过滤器的电脑。此外,更新是通过未加密的HTTP连接,这可能会允许第三方冒充更新服务器(例如,利用DNS漏洞)和通过这种攻击来控制用户的电脑。

清除绿坝

绿坝只允许知道管理员密码的用户才能卸载该软件我们测试了卸载程序,发现它似乎能从计算机中有效移除绿坝但是,它不能删除一些日志文件,有证据表明使用者的活动记录仍然隐藏在系统中。

鉴于如上所述的严重的漏洞,用户能够保护自己的最可靠的方法是立即利用其卸载功能删除该软件

结论

我们简短的测试证明,绿坝有非常严重的安全漏洞不幸的是,这些问题似乎反映代码中系统性的缺陷。软件广泛使用的编程技术,已知是不安全的,如不推荐使用C语言的字符串处理函数,包括sprintf和fscanf。这些问题因为设计程序变得复杂,建立一个大型攻击面:因为绿坝过滤器,处理所有的网络流量,大部分的代码将受到攻击。

如果以当前的形式部署绿坝软件,这将大大削弱中国的计算机安全。虽然我们发现的漏洞可以迅速地修复,但是想修复所有问题可能会需要大量的修改和全面的测试。这意味着从7月1日开始全国范围内部署绿坝将难以实现。


附加截图

用户可以设定哪些类别的网站被绿坝过滤。
其他过滤器是用来阻止成人内容和文本输入中政治敏感的词汇。



致谢

我们要感谢在密歇根大学的同事,他们提醒我们关注绿坝并协助我们翻译。

联系作者

请发送疑问或意见给J.Alex Halderman教授。

没有评论: