|
2006年10月,Google推出了一项名为“Google代码搜索”的新服务。这行新服务对于开源软件团体和信息安全行业都有重要的意义
在2006年10月,推动许多互联网技术创新的Google公司推出了一项名为“Google代码搜索”(Google Code Search)的功能强大的新服务。这行新服务对于开源软件团体和信息安全行业都有重要的意义。
Google代码搜索的工作原理
在深入研究这些潜在的意义之前,我们应该首先考察这项服务是如何工作的。随着Google搜索引擎在互联网上缓慢运行,为Google的目录提取网页,这些搜索工具提取几十种语言的源代码,范围包括从Ada到Yacc的各种东西以及两者之间的东西。Google然后收集搜索引擎中的数据,并且以特殊的方式为其做索引,使这些源代码容易搜索到。但是,拥有这个特殊的索引,源代码能够比Google搜索指令和操作符提供的方式更容易搜索到。这个代码搜索接口现在支持正常的表达式,为解释搜索方式提供了令人难以置信的灵活方法。这个结果为搜索成千上万的项目代码提供了一种快速的服务。
Google代码搜索对开源软件团体的影响
目前,Google代码搜索仅仅正式面向开源软件项目。它在这方面的好处是能够帮助新的软件开发人员了解其他有经验的开发人员是如何解决某些问题的并且能够向有经验的开发人员学习技术,帮助有经验的开发人员查找代码片段并且在自己的代码中使用这些东西。但是,同大多数东西一样,Google代码搜索也可以用于恶意目的。坏蛋能够通过搜索查询发现安全漏洞并且利用这些安全漏洞为自己谋取财富。这些安全漏洞包括缓存溢出安全漏洞、格式串攻击和其它许多问题。
例如,Google代码搜索能够用来利用C编程语言提供的“gets()”函数调用功能中的漏洞。由于“gets()”函数调用没有输入的大小限制,它将接受固定大小的字符串变量,这可能导致拒绝服务攻击。攻击者能够使用Google代码搜索发现这个漏洞和开源软件中的其它全漏洞并且利用这些安全漏洞。
“gets()”函数的例子仅仅是使用Google代码搜索能够找到的这类问题的一个例子。著名安全研究人员Dug Song和Aaron Campbell在博客中指出,Google代码搜索能够用来发现十几种不同的安全漏洞,包括某些缓存溢出状况,格式串漏洞、off-by-one错误等等。
在近期,Google代码搜索将帮助开发人员找到和修复能够导致严重安全漏洞的编写不佳的代码。从长远看,Google代码搜索将改善安全状况,因为这项功能提供了一个令人难以置信的查看代码的功能强大的方法。然而,近期的发展是非常不平坦的,因为在其它团体努力修复漏洞的时候,坏蛋们也在挖掘安全漏洞。
Google代码搜索与商业软件
虽然Google代码搜索目前针对开源软件项目,但是,这并不意味商业软件机构应该忽略它。事实上,这对于开发自己的代码的任何机构来说都有许多意义。例如,如果专有的、内部的代码被Google编入索引,居心不良的人就能够找到安全漏洞并且利用这些安全漏洞攻击受影响的系统。
那么,企业应该采取什么措施保护自己避免受到恶意使用Google代码搜索的影响?一些人建议明确地为源代码做一个“专有的”标记,并且在代码本身加上注释防止Google代码搜索的扫描。虽然这是一个好主意,但是,这个方法目前还不能阻止Google把任何可用的代码放到它的数据库中。我知道这个情况,因为我进行了“专有的”代码搜索,结果发现了99,900条代码,其中有的代码称“这是厂商不公开发布的专有源代码”。Google将来可能会过滤这样的源代码,但是,Google现在还不想这样做。
防止Google代码搜索滥用
由于上述说法,企业能够采取某些步骤保护自己避免受到错误使用或者滥用Google代码搜索的影响。首先,确定源代码不能够通过网络访问,除非有诱人的商业理由让人们通过网络访问这些源代码。其次,在你的网络服务器上执行robots.txt文件。在搜索Google能够搜索到的内容时,这将会限制Google搜索引擎的参数。你还可以使用robots.txt告诉行为良好的搜索引擎,当进行搜索时某些目录是超出了限制的。要了解如何设置robots.txt文件,请访问www.robotstxt.org。重要的是需要指出,robots.txt是一把双刃剑:当它不让行为良好的搜索引擎扫描你的网站的某些敏感的区域的时候,它也把坏蛋的注意力吸引到了那里。
然而,一个企业需要一个质量保证计划以保证代码本身的安全漏洞处于最小的状态,这是不用说的。使用代码评估和认真的测试完全由自己开发的软件。最后,把一连串的数字串放到你的开发团队创建的文件中。定期在Google代码搜索和其它搜索引擎中搜索这些数字串,看看你的代码是否会偷偷溜出你的机构。然后,如果这些字符串能够从你的机构溜出去,至少你的法律团队能够发现它并且同有关人员联系吧任何敏感的或者专有的信息从他们的服务器上删除。
|