一款在6月9日前少为人知的软件近日在网络上引起了一场沸沸扬扬的争论。
6月9日,工业和信息化部以“工信部软[2009]226号文件”的名义发布了落款日期为5月19日的《关于计算机预装绿色上网过滤软件的通知》,通知明确要求,计算机生产及销售企业应于2009年6月底完成“绿坝—花季护航”软件(以下简称“绿坝”)预装测试等相关工作,2009年7月1日后出厂和销售的计算机应预装“绿坝”。
消息一出,质疑声四起。这款由郑州金惠计算机系统工程有限公司和北京大正语言知识处理科技有限公司提供的“绿坝”软件,究竟能否有效建立起一道坚固的绿色堤坝,切实起到为青少年上网冲浪保驾护航的作用呢?《科学新闻》就此款软件技术层面的问题展开了调查。
代码缺陷
美国密歇根大学计算机科学与工程系的助理教授J. Alex Halderman在其官方网页上公布了对“绿坝”的检测报告。该报告指出,在对“绿坝”软件进行短短的一天测试之后,就发现了两个较大的安全隐患:首先,该软件在处理其监控的Web站点过程中存在问题;其次,该软件执行黑名单更新的方法存在漏洞。
Alex构造了一个用于演示的URL,当已经安装了“绿坝”的用户在页面http://wolchok. org:8000/上按下按钮后,将导致用户的浏览器(或标签页)崩溃。他指出,实际的攻击者可以利用该缺陷执行恶意代码。“绿坝”软件的设计缺陷,导致了几乎任何一款浏览器都可被非法利用。“任何一个网站,使用这种恶意的URL,均可将用户浏览器重定向至一个网页,以取得用户计算机的控制权。”Alex说。
Alex还指出,第二个问题存在于“绿坝”读取过滤器文件的过程中。“绿坝”采用不安全的C字符库,易导致典型的缓冲区溢出漏洞。对于那些安装了该软件并开启了自动更新过滤器的计算机来说,“绿坝”软件提供商可以取得它们的控制权。此外,更新过程采用未加密的HTTP协议,这可能会导致第三方伪装成更新服务器,使用这种攻击方式来获得计算机控制权。
这份测试报告总结说,对于“绿坝”软件的简短测试,证明其存在非常严重的安全隐患,这些问题反映了代码内部的系统性缺陷。这款软件频繁使用了公认为不安全的编码方法,例如,广受争议的C字符处理函数sprintf和fscanf。这款软件在设计上出现了这么多问题,并且引发了巨大的攻击层面,由于“绿坝”要过滤和处理所有互联网流量数据,大部分的代码将暴露在攻击之下。
Alex在接受《科学新闻》邮件采访时表示,“绿坝”制造商在其发布的更新版本中纠正了测试报告中发现的第一个Web过滤隐患,但是,“即使在更新之后,‘绿坝’的Web过滤代码中仍然存在着同样严重的安全隐患,这可以被任何Web站点利用”。Alex认为,为了让“绿坝”真正安全可靠,任务还非常艰巨。
算法性能堪忧
在一个由“谷歌文件”上自发组织的“协作组”,针对“绿坝”编写的分析报告中指出,“绿坝”的图像检测进程根据图像数据分离肤色区域和非肤色区域,在对肤色区域关系进行分析后去除干扰,提取区域的特征送入已训练SVM分类器。当图像被检为色情图像后送入人脸检测器,若人脸不是主要部分便确定为色情图像。这个算法的主要问题是,色情图像的识别严重依赖于肤色和肤色形状;而最后使用人脸检测加权判定也只是避免出现大幅人脸识别为色情图像问题的算法补丁,且经验权值的可靠性缺乏验证。
对于“绿坝”在筛选色情图片方面的表现,《南方周末》6月11日的文章声称,“(‘绿坝’)软件会对大面积的黄色区域的图片敏感,对大块黄色块的图片也会有误判。如果是黑、红肤色的裸体图像,程序未能识别。测试包含机器猫(蓝白色)、Kitty猫(红白色)和加菲猫(黄色)相近姿势图片的网页,‘机器猫’和‘Kitty猫’均能顺利过关,有部分包含‘加菲猫’图片的网页被判断为不良网站,被程序过滤。”
Alex的测试报告指出,除了缺少BSD许可声明之外,“绿坝”的XFImage.xml文件和OpenCV程序库中的haarcascade_frontalface_alt2.xml文件完全一致,这表明“绿坝”使用了OpenCV库进行人脸检测。“绿坝”附带的cximage.dll、CImage.dll、xcore.dll和Xcv.dll也来自OpenCV的库文件,都反映出“绿坝”主要使用了OpenCV来进行图像方面的处理。
清华大学电子系图形图像研究所的一位教授向《科学新闻》表示,OpenCV是Intel开发的开源计算机视觉库,其中使用C/C++语言实现了图像处理和计算机视觉领域的一些通用算法。OpenCV库的人脸检测算法主要采用Haar特征和AdaBoost分类器实现,“通常将其作为人脸检测实验的基准比较算法,其性能即使在实验室产品中也不算最好,至于离实际应用的要求,差距就更大了”。
Alex告诉《科学新闻》,他们还没有对“绿坝”中的文本和图像过滤器的算法性能进行系统的量化测试,但在对图像过滤进行一些主观性测试时,发现许多黄色图片没有被阻止。另一方面,过滤器却又阻止了很多非黄色图片,甚至Alex本人在密歇根大学网站上的个人照也包括在内。
侵权之虞
Alex在测试报告中提出,已有证据表明,在“绿坝”的地址过滤器中,相当多的黑名单来自于美国公司Solid Oak的过滤软件CyberSitter,他们还发现了一个加密的配置文件wfileu.dat,它引用了CyberSitter网站的黑名单及下载链接。
Alex指出,“绿坝”最近的更新不再使用这些黑名单,但仍安装在计算机上,并且,当前可下载使用的“绿坝”版本依然包含这些黑名单。“我不是律师。”Alex坦言,“我不想对由此引发的法律问题进行评论,但是,这样做显然不太合适。”
北京维诗律师事务所知识产权部的刘贝律师告知《科学新闻》,如果“绿坝”的确包含以上文件,则可能侵犯了Solid Oak公司的知识产权。一方面,如果技术上能够证明该文件来源于CyberSitter软件,则一般可认为金惠侵犯了Solid Oak公司的软件著作权;另一方面,如果Solid Oak公司的CyberSitter软件中所包含的技术在美国或其他国家及地区获得了相关的专利权,则“绿坝”在相关国家/地区的安装实施会导致专利侵权的问题。此外,考虑到金惠公司获得这些文件的途径,还可能涉及侵犯商业秘密的纠纷。
据称,Solid Oak公司将向中国有关方面提起诉讼,该公司已委托在中国的律师,对中方这一侵权行为提起法律诉讼。《科学新闻》就此事发邮件联系了Solid Oak公司总裁Brian Milburn,但截至发稿时尚未收到回复。
关于“绿坝”使用OpenCV程序库,刘贝表示,OpenCV库采用的是BSD(Berkeley Software Distribution)许可证,作为自由软件中使用最广泛的许可证之一,BSD软件对非商业应用以及商业应用皆免费。但是,BSD要求,对BSD软件的源代码以及二进制可执行类库/软件进行再发布时,需要在类库/软件的文档和版权声明中包含声明原代码著作人权利的BSD许可证。
Alex在其后续的测试报告中声称,“绿坝”更新版本已经在其帮助文件中增加了使用OpenCV开源库所需要的BSD许可声明。但是,制造商网站上正在发布的3.17版“绿坝”中仍然没有包含此BSD许可。
推迟强制安装
新华社6月30号援引中国工业和信息化部报道称,中国政府将推迟执行在个人电脑上预装“绿坝”过滤软件的决定。
稍后在新华网中文版登出了《工信部新闻发言人就绿色上网过滤软件问题答记者问》,新闻发言人就预装时间说:“近来,一些企业表示工作量大、时间仓促、准备不足。根据实际情况,可以推迟预装。本着坚持方向、分步实施的原则,7月1日后继续提供网络免费下载,继续在用于中小学校、网吧等公共场所的计算机上安装过滤软件,鼓励已装过滤软件的计算机厂商积极开拓市场。其他计算机如何预装,工业和信息化部将进一步征求各方意见,完善方案,改进方法,做好相关工作。”
至此,全面推行安装“绿坝”一事暂告一段落,此事能否就此尘埃落定,还是将再起波澜,我们会继续保持关注。