谷歌Safe Browsing团队:几乎每个网民都中过毒,这是互联网的悲哀

就像 WWW 之父伯纳斯-李担忧那样,现在的 Web 已经成了欺诈和网络犯罪泛滥的污秽之地。各种钓鱼行为、恶意软件层出不穷,普通网民如何才能躲过一个个的陷阱?按道理说,大家应该默认 web 是安全的、易用的才对。你不应该成为安全专家才敢去上网,你也不应该知道什么是钓鱼,不应该知道恶意软件是什么。你应该预期当出问题的时候软件会告诉你。而这就是 Safe Browsing 想要做的。《连线》杂志采访了 Google 的开发团队,让我们得以了解这项让 Web 更安全的服务是如何演进的。

谷歌 Safe Browsing 开发团队:几乎每个网民都中过毒,这是互联网的悲哀
谷歌Safe Browsing团队:几乎每个网民都中过毒,这是互联网的悲哀谷歌Safe Browsing团队:几乎每个网民都中过毒,这是互联网的悲哀
一开始是电话入侵和蠕虫。接着是 spam 和弹出窗口。这些没有一个是好的。但在互联网初期的时候,数字网络都是相互隔离的,足以让一般用户基本上避开最险恶的东西。不过到了 2000 年代初时,那些墙开始坍塌,数字犯罪开始猖獗起来。

今年 9 月即将迎来成立 20 周年日子的 Google 就是在这种转变中成长起来的。随着它的搜索平台衍生出像广告分发以及电子邮件托管这样的关联产品,该公司意识到自己的用户以及 web 上的每个人都面临着不断恶化的网络欺诈和滥用。于是在 2005 年,Google 内部的一支小型团队启动了一个项目,旨在对可能的社会工程攻击进行标记——当王爷有可能欺骗用户执行某种有害的动作时警告用户。

1 年后,这群人扩展了项目的范围,开始将可能传播恶意软件的链接和网站也标记出来。Google 开始将这些反滥用工具合并进自己的产品之内,同时也向外部的开发者开放。到 2007 年,这项服务优良一个名字:Safe Browing(安全浏览)。一开始的胡乱开枪最终彻底改变了互联网的安全。

尽管你也许没有意识到,但其实已经受到 Safe Browsing 的保护了。当你在最流行的浏览器加载页面或者从 Google Play Store 选择 app 时,Safe Browsing 就在屏幕背后检查而已行为并且在可能有问题时通知你。不过以 web 的规模设立如此庞大的一个审查系统并非易事。Safe Browsing 一直都在努力应对核心安全挑战——如何标记和屏蔽不好的东西但又要避免给合法获得打上错误的标签,或者让任何有而已的东西溜掉。尽管这一问题尚未彻底解决,大 Safe Browsing 赢成为 web 的中坚份子。它成为了 Google 所有主要平台用户安全的基础——包括 Chrome、Android、AdSense 以及 Gmail 等,并且在全球超过 30 亿台设备上运行着。

以下就是曾经在 Safe Browsing 团队(包括初始团队成员以及最近的扩充)工作过的 9 位工程师口中的产品故事,其中讲述了该产品是如何开发的,以及如何变成了网上的一支无所不在的保护力量。

Niels Provos,Google 杰出工程师,Safe Browsing 创始成员之一:2003 年刚开始的时候我做的是防 DOS(拒绝服务)攻击的工作,然后 2005 年 Google 又进来了另一名工程师,他的名字叫做 Fritz Schneider,此人其实是我们安全团队的第一人。他说:“嘿 Niels,这个钓鱼攻击真的已经成问题了,我们应该做点什么才行。”

我们观察到的其中一个趋势是坏家伙发现,只是祸害其他 web 服务器并不能有多大的收获。他们能得到的基本上只是带宽,但有趣的数据并不多。于是他们把目光转向了有非常非常多访客的其他 web 服务器,然后想,‘用下载来把这批人搞一下如何?’于是恶意行为开始发生改变。

我们已经在解决住钓鱼的问题了,但我认为恶意软件这个东西的问题也许更大。而且我们所处的位置算是比较独特的,因为有 Google 搜索爬虫,这样我们可以对 web1 看得一清二楚。所以我们开始着手解决钓鱼和恶意软件的问题,Safe Browsing 就这么一路走来了。

Panos Mavrommatis,Safe Browsing 工程总监:Safe Browsing 开始是作为 Safe Browsing 的反钓鱼插件的,因为当时是 2005 年,Google1 还没有自己的浏览器。2006 年当我加入 Google 时,当时的团队领导是 Niels,他希望我们扩展功能,不仅仅只是保护用户免受钓鱼攻击还要防止恶意软件。所以这就是我的第一个项目——而且现在也还没完成。

其目标是爬取 web,保护 Google 主要产品,也就是 Search 的用户不会进入到可能给他们的计算机造成伤害的网站。所以这个就是 Safe Browsing 继反钓鱼插件之后的第二款产品,而用户可以看到恶意搜索结果的标签。然后如果你还是点击进去的话,就会收到搜索体验以外的额外警告,告诉你这个网站可能会损害你的计算机。

后来发生了一件趣事,这件事情跟我们与受到 Safe Browsing 警告影响的网站站主的沟通有关。因为当我们开始调查用户会如何受到 web 山恶意软件的影响时,我们很快意识到其中有很多是来自其实是良性的网站的,只是那些网站本身也受到了恶意软件的连累,并且开始被利用来传播恶意软件。但网站所有者或者管理员通常并未意识到这件事情的发生。

我们一开始跟站主沟通的时候他们通常是一脸惊讶。所以我们开始为站主开发专门的工具,现在这玩意儿有了名字,叫做 Search Console。其基本功能四试图引导站主了解为什么他们的网站会受到影响,或者如果我们不知道确切原因的话至少也要告诉他们,他们的服务器上哪一个页面正在传播恶意软件,或者我们会把注入到他们网站的代码片段显示给他们看。

Provos:我们受到了大量的质疑,类似‘Niels,你不会告诉我说你们做这个就是为了 web 用户着想而已吧?Google 本身一定也有自己的考虑才对吧?’后来我们表示如果 web 对我们的用户更安全的话,那 Google 也会从中受益,因为大家会更频繁地使用我们的产品。

不过其实我们未曾考虑过 10 年后我们能发展到 30 亿设备上。这其实是有点可怕的。有数十亿人依赖我们提供的服务需要我们承担巨大的责任,如果我们检测的工作做得不好的话,他们就会被暴露在恶意内容面前。

Mavrommatis:大约 200 年的时候我们开始开发一个引擎,这个引擎可以将 Google 抓取的每一页面都筛查一遍,从而评估页面的行为方式如何。能够做到这一点完全是因为 Google 的内部云基础设施。这也是为什么 Google 当时能够做那么多的创新的部分原因之一,因为我们内部的基础设施是极其开放的,任何未用的资源都可以供你使用,从而让我们可以对整个 web 运行恶意行为检查引擎。

Moheeb Abu Rajab,Safe Browsing 首席工程师:研究生毕业后,我一直尝试着在好几台机器上开发这类系统,所以我在这上面花费了很多时间。但是 Google 大规模运行这种东西却易如反掌。

Mavrommatis:我们同时还在开发另一个东西,这是一个扫描程序,速度比较慢,但是更加深入,它会将 web 页面加载到真正的浏览器上,这相对于我们仅仅测试网站每个组件的其他工作消耗的资源更多。有了这两套系统之后我们就可以开放我们的第一款机器学习分类器。爬取服务为该轻量引擎提供的训练数据越深入,引擎识别哪一个网站最有可能受到恶意攻击的能力越越强,然后我们就会对其进行深入扫描。因为哪怕像 Google 这种级别我们也无法在真正浏览器内爬取整个搜索索引。

Noé Lutz,Google AI 工程师,前 Safe Browsing 团队成员:与此同时,2009 年,我们开始用机器学习来防钓鱼。这对于团队来说是个相当恐怖的时刻,因为直到那时候我们还是把机器学习用作过滤功能,来找出应该将这个计算资源消耗大户的重点放到哪里,但这次是我们第一次以自动化的方式来决定一个东西究竟是钓鱼或者恶意或者有害或者无害的。

我还记得那天我们切换过来的情形。那感觉就好像,现在是机器负责了,这可是个大日子啊。然后没什么不好的事情发生。但我还记得我们花了很长的时间才敢把(转为自动的)开关合上。我认为当时我们都以为这件事需要几周的时间,但实际上我们用了几个月 CIA 确保自己对所做的事情非常有信心。我们从一开始就非常清醒的意识到如果我们犯了错误的话其破坏性有多高。

Provos:是的,这件事一出事往往就是大事。2009 年的时候出了一件很大的生产问题,那是在周六的早上。我们有好几个 bug 都集体爆发了,但我们最终弄了一个糟糕的配置推送。我们把 Google 搜索结果的一切都标记为恶意了。

哪怕是在 2009 年的时候 Google 也已经是无所不在的搜索引擎,所以这件事对全世界都产生了重大影响。幸运的是,我们网站的可靠性工程团队对这些事情非常在行,15 分钟之内就把问题搞定了。但这件事让我们对自己进行了严酷的灵魂拷问,并在随后追加了大量的防护和保障措施,以便类似事情不再发生。不过幸运的是到那时候 Google 内部的人都已经意识到 Safe Browsing 是一项非常重要的服务了,所以我们才会在一开始就把它植入到 Search 服务里面。

Nav Jagpal,Google 软件工程师:2008 年我们将 Safe Browsing 集成进了 Chrome,而 Chrome 代表了一大转变,因为之前像 Internet Explorer 这样的浏览器你很容易就会用上旧版的。有些隐蔽强迫下载(drive-by downloads)旧利用了这一点,当你去到一个网站时,哪怕没有点击任何东西就离开你的家计算机也会感染。不过随后每个人在开发软件上都变得更好了。最薄弱的环节曾经是浏览器;现在变成用户了。现在要想代码在别人的机器上运行,你只需要让对方同意就行。所以 Safe Browsing 就显得非常关键。

Mavrommatis:大概在 2011 年和 2012 年的时候我们开始进一步集成到 Google 的平台上,尤其是 Android 和 Chrome Extensions(插件)以及 Google Play。我们还设立了独立的团队专门负责每一个产品集成,并且跟提供平台的主团队一起合作。

Allison Miller,前 Safe Browsing 产品经理,现在美国银行:Safe Browsing 是真正的幕后英雄。我们开发基础设施。我们处理信息然后推送给 Google 所有有可能导致用户遭遇恶意内容的产品。大家未必能看到这背后的事情。有关这一点我们有时候显得太过安静了。

Fabrice Jaubert,Safe Browsing 软件开发经理:往 web 外部伸展的时候会遇到挑战,但这也有优势,因为我们对这个生态体系还是有一点控制的,所以我们可以引导着 web 朝着更安全的实践去走。你没办法命令别人怎么去处理自己的网页,但我们可以把我们认为的 Chrome 插件或者 Android app 有哪些可以接受哪些不可接受的东西说出来。

Lutz:还存在一些非技术性的挑战。Google 是一家大公司,在这么大公司内进行跨团队合作会比较有挑战性。外部很难意识到到这一点,但 Chrome 的开发语言跟 Google 很多产品使用的都不一样,而且有着非常不同的发布流程。Android 也是一样,他们的软件发布流程也不一样。所以让每个人都能协调一致并且相互理解这件事情是需要克服的一大障碍。

Stephan Somogyi,Google AI 产品经理,前 Safe Browsing 成员:这是一种非常迂腐的陈腔滥调,所以请不要把它用到我身上,但是“水涨船高”的说法用到 Safe Browsing 是非常贴切的。我们想把它扩展到移动端,这一点从来都没有引起过争论,但是我们面临一个非常大的困境,因为 Safe Browsing 用到桌面端的数据量对于移动来说是难以应对的。而且我们知道我们推向移动设备的一切都会让用户花钱,因为他们的数据套餐是要花钱的。所以我们希望采用压缩办法把数据量减少。同时我们又不希望用户的 5 个 app 都内置了同一个 Safe Browsing 实现,然后把相同的数据都要下载 5 遍。所以我们决定把它做进 Android 里面,让操作系统把这些累活包办。自从 2015 年秋以来它就成为了一项系统服务。

这项服务对于开发者来说就是一个非常简单的 API,他们只需要对系统说“嘿,Android Local System Service,这个 URL 究竟是好的还是坏的?”我们还希望执行这个东西不需要连接拨号 modem 并且消耗电量,因为这对用户不好。所以如果数据网络没连上的话,就不要调用这个 API。我们花费了大量精力在 Android 的实现上。结果表明,在这上面有很多微妙的东西是我们当初预计不到的。

Mavrommatis:我们团队的另外一大努力是在 2013、2014 年的时候做的所谓的“不需要的软件”。这主要是针对桌面用户的,是过去那些仅使用恶意技术的人的某种改进,但现在他们发现可以将自己伪装成看起合法的功能植入到软件里面。尚不清楚反病毒公司会如何给这种东西贴标签,也不知道大公司和浏览器应该如何应对这个。但我们关注的是它对用户有什么影响?

大概 2014 年的时候,我们的数据表明,用户对 Chrome 的投诉中超过 40% 跟他们设备上运行的某种会影响浏览体验的软件有关。这可能是植入了更多的广告或者捆绑了其他一些他们不需要的软件。这些做法导致很多问题,我们看到许多 Chrome 用户都在下载这类的 app。所以我们重新调整了我们的下载保护服务,并且想办法开始警告用户这些潜在的有害下载。

Jagpal:这是很大的责任,但给人感觉也非常抽象。你收到一个警告时会想,“等一下,我这是在保护自己吗?”但这个东西太抽象了,如果我们给一些具体的东西写代码,比如将家里的灯开关打开的话,那感觉就像“哇,这太酷了,我能看到。”

Jaubert:我 14 岁的小孩绝对已经把 Safe Browsing 看作是理所当然的了。他收到一条伪装成短信的钓鱼信息,所以那条短信没有经过我们的系统,他被震惊到了。他问我:“为什么那你不保护我?我以为这是不会发生的!”所以我认为大家已经开始把 Safe Browsing 视为当然。

Emily Schechter,Chrome 安全产品经理(前 Safe Browsing 项目经理):当大家上的是安全网站时你可以告诉大家他们是安全的,但真正重要的是当他们不安全的时候,当他们上的是一个经常干坏事的网站的时候告诉他们。

大家应该将 web 是安全的、易用的视为默认。你不应该成为安全专家才敢去上网,你也不应该知道什么是钓鱼,不应该知道恶意软件是什么。你应该预期当出问题的时候软件会告诉你。而这就是 Safe Browsing 想要做的。

投稿作者 作者网站

为您推荐

说点什么

avatar
  Subscribe  
提醒