开发人员必须考虑的一个常见安全漏洞是跨站点脚本编制(XSS)问题。通过使用检查GET和POST请求中变量值的消毒过程,可以减轻或防范XSS的利用。服务器端攻击也存在,但是已经超出了本文的讨论范围。显然,谷歌机器人和索引目前正遭受这一弱点。
网络钓鱼广告吗?
虽然XSS攻击可以用来损毁或破坏网站,但它也是网络钓鱼的一种方法。攻击者制造一个恶意链接,并向用户发送电子邮件,将该链接发送到易受跨站攻击攻击的网站。当用户单击恶意链接时,页面加载时将运行脚本。新版本的Chrome有一个XSS审计健全的网址检查,否则可能欺骗用户。
不幸的是,Googlebot目前运行的是Chrome 41,这是浏览器的早期版本,没有XSS审计。这是否意味着Googlebot容易受到钓鱼风格url的攻击,攻击者可能会注入恶意的SEO攻击脚本?对于谷歌,攻击者可能使用JavaScript将元素注入到DOM中,比如反向链接,更糟糕的是,还可能操纵规范。
XSS广告的利用
这次攻击的概念证明(PoC)是由SEO(和安全研究员)Tom Anthony发布的,描述了攻击方法的成功,包括证据截图的谷歌搜索控制台的URL检查工具显示修改后的源代码作为有效载荷。请记住,以这种方式运行恶意脚本可能会重写整个页面进行索引。
汤姆描述已经采取了适当的步骤披露漏洞,列出了他与谷歌通讯的时间线,并描述了反应。在这个阶段,汤姆的披露是一个不确定的前景,因为可以想象的脆弱性仍然在野外工作,尽管谷歌已经告诉他在3月份它有“适当的安全机制”。安全研究人员有时会发布未打补丁的漏洞,以促使公司采取行动。
谷歌的反应
Tom指出,人们看到Googlebot有一个等待升级的证据,可能会包括XSS审计URL过滤器。一旦Googlebot升级到一个新的Chrome实例与XSS审计到位,这种攻击将不再工作。与此同时,谷歌可以在serp中索引和发布恶意链接,而不知情的Firefox用户(目前没有自己的XSS审计器)可以点击这些链接并被钓鱼。
我们收到了来自谷歌的声明:“我们感谢研究人员提请我们注意这个问题。我们进行了调查,没有发现任何证据表明这种做法被滥用,我们将继续保持警惕,保护我们的系统,并做出改进。”
使用XSS技术的利用是如此广泛,可以想象它正在某个地方发生。同时可以相信,除了研究人员,没有人尝试过。
如何防止XSS攻击
为了防止最常见的攻击,您需要确保没有恶意代码(Javascript、PHP、SQL等)通过您的应用程序进行处理。使用内置的值期望,例如保证每个请求中只有准确的数量和命名正确的变量集。在继续之前,还应该对数据类型限制进行编码,以测试传入的值。
例如,如果您的应用程序需要一个数字,那么它应该抛出一个异常、重定向,如果它获得一个作为错误请求的一部分的字符串值,可能会暂时将该IP地址列入黑名单。问题是,有很多相当受欢迎的网站容易受到这类攻击,因为他们没有采取这样的措施。攻击者经常通过应用程序修改请求变量值来寻找利用机会。
谷歌针对XSS攻击的建议之一是将上面描述的数据类型完整性测试应用到HTTP响应头级别,使用它所调用的可信类型。尽管信任类型尚未被广泛采用,但它最终可能成为保护页面的一种重要策略。这个漏洞目前还没有修补,然而,这就是为什么发布0days是不确定的。到2019年5月,谷歌不再容易受到这种攻击。