百度首席安全科学家韦韬:我们的战斗,从“内存战争”到“黑产战争”
本文作者史中,科技媒体人。
Security never sleeps.
韦韬如是说。
百度首席安全科学家,是韦韬此刻的身份。
然而,让韦韬成为无数网络安全研究者精神旗帜的理由,更多的是他的传奇经历。
他曾在北京大学度过了21年春秋,从学生到教授,几度影响了国际网络安全的思潮。
他曾参与创建了“未名空间”(mitbbs),被一代人奉为海外华人的精神家园。
他曾是“汉字激光照排系统之父”王选院士的爱徒,是北大方正最早的一批网络安全专家。
他曾加入美国著名网络安全公司“FireEye”,作为华裔专家向世界贡献顶尖的安全防御技术。
他最终选择加入百度,创立一套安全体系,用技术守卫中国人自己的庞大互联网生态。
“能经历这么多历史,也许因为我生于1975年,比较老吧。”
韦韬笑道。
百度首席安全科学家韦韬
在百度的会议室里,我见到了韦韬。他说话很快,对自己几十年来的技术研究,就像纯真的孩子一样如数家珍。说到兴头,也会站起来踱步,好像面前有一个讲台。夕阳西下,落日余晖猛然填满巨大的会议室,让我恍然有回到了象牙塔课堂里的错觉。
这让对话平添了一份趣味和恰到好处。
以下是我们的对话:
韦韬:安全圈生于1975年的人还挺多的。现在看来,我们都经历了一个黄金年代。
其实从小学二年级,我就开始学习计算机。
那是八十年代,我使用过的第一台计算机是 PC1500,可能很多年轻一点的同学都没见过。那是一种可编程计算机,你猜它的内存有多大?只有4K。
▲PC1500 计算机,由夏普在1981年推出,1982年被引入中国,是中国保有量最大,推广最好的袖珍计算机。
它看起来可能更像一个计算器或者打字机,但却可以接收编程指令,这给我一种特殊的感觉,就像自由或者创造。
我之所以能这么早接触到计算机,是因为我父亲在研究所工作。他是中国最早使用计算机做科学研究的一批人,在更早的时候他们甚至还用过纸带做计算 。
史中:我觉得某种程度上来讲你很幸运,因为不是所有人都有机会在那么早就接触计算机。
韦韬:可以这么说。如果说幸运,我更庆幸在小时候能够遇到那么多好老师。
比如小时候在南京市鼓楼区少年之家的计算机老师,还有南京市数学奥校的老师们,南师大附中的老师们等等。有这些优秀的老师带领我接触计算机、数学、物理等学科的神奇,确实是非常宝贵的人生经历。
在初一和高一的时候,我分别拿了江苏省初中/高中计算机比赛的第一名。不过,中学时代,计算机还并没有成为像现在一样热门的学科,所以,那个时候我的主要精力放在了数学上。到高二下又被物理老师“诱拐”去准备物理奥赛。
在高三上,我参加了数学和物理两门的全国奥赛,都是全国一等奖,分别是江苏省第一与第二。但由于物理全国决赛比赛在前,然后拿了全国第一。于是在数学冬令营(全国决赛)之前我就进了物理奥赛集训队,在北大物理系进行集训。这就是为什么我的大学选择了北大物理系。
现在看起来,只能用阴差阳错来解释。
史中:这么说,你的成绩一定很好。
韦韬:可以挑选任何大学的任何系(学霸式蜜汁微笑)。1993年,我进入北大。那是北大取消军训的第一年。在那之前,新生进入北大之后都会经历长达一年的军训,于是不少同学在报志愿的时候只好“叛逃”清华。
由于我的计算机基础不错,和老师的关系也很好。于是老师让我负责管理物理系计算机实验室,在1993年就开始接触互联网。我记得,中国第一个接入互联网的机构是“中科院高能物理所”,而我所在的北大物理系,幸运地成为全国第二个接入互联网的地方。
史中:互联网给你带来了什么?
韦韬:互联网带来了病毒。(笑)
其实高中的时候我就遇到过计算机病毒。那个时候,系统只有 DOS,所以最早的病毒也是在 DOS 上开枝散叶。有一次启动之后,突然出现了一组字符在屏幕上转动,这大概是我第一次见到病毒。
▲最早的 DOS 病毒就像这样
早期的病毒都是很“良性”的,它可能只是某些大牛为了炫技搞出来的秀,并不会对系统造成实际伤害。但这让我觉得很好玩,我立刻对“病毒对抗”产生了兴趣,于是自己研究写了一套反病毒程序。
史中:很多人看到病毒,第一时间都会想自己也做一个病毒,为什么你会去做反病毒程序?
韦韬:这种兴趣很难说清楚,制造一整套防护体系,比进行一次单独的攻击让我获得更多的享受。也许是因为防护比攻击更有挑战性吧。
从保护我们的机房开始,我体会到了一种攻防哲学。
攻防的根本问题在于“不对称性”。
一般来说,人们认为防护更难,这是因为防护的方式是公开的,而攻击的方式是隐蔽的。这样的结果是:攻击方有充分的信息和时间研究防守方;而防守方对于攻击方会采取什么方式,在什么时候进攻几乎一无所知。
根据这个原理,你要保护的阵地越局部,越小众,你就可以布置越多的陷阱。这些陷阱往往和你要保护的系统紧密相关,并没有通用性。这样攻击者根据常识就很难识破,往往措手不及。
攻击者占据天时,而防御者“可以”占据地利和人和。如果你做好一个独特的“迷魂阵”,攻击者就算用 0Day 漏洞进来,都会举步维艰。
这种防护哲学,一直到后来的 FireEye,以及现在的百度,都同样适用。
▲对于通用系统,攻击者只要找到一个薄弱环节就可以突破防守,而防守者需要保证所有的节点都不容有失,而不对称性在于:攻击者可以根据公开资料对攻击目标进行充分的研究,而防守者对攻击者一无所知。
史中:在很多人心中,韦韬这个名字一直和北大相联系。
韦韬:从1992我进入物理奥赛北大集训队开始,直到2013年我结束在北大的教学工作,我在北大整整21年。我把最美好的青春献给了北大,哈哈。
进入北大之后,我看到了很多互联网的萌芽。我作为 co-founder 建立的北大未名BBS,也就是后来的“mitbbs”,无疑就是其中之一。
史中:很多海外的70后/80后中国人,都会提起“mitbbs”,但更多年轻人对它还完全陌生。
韦韬:从90年代末到新世纪初,mitbbs是北美中国留学生的精神家园之一。
这个我和一群网友架设的 BBS,大概是中国最早的一批论坛 。上面聚集的人从北大清华学生开始,一直发展到海外留学生,再到海外华人。
这个bbs从最早的“北大未名”,到后来的“中科院未名空间”,再到“bbs.mit.edu”,再到“mitbbs.com”。在国内的时候,因为各种原因,导致BBS屡次被关闭。之后Look 去 MIT(麻省理工学院)留学,在学校的网络里连了一台服务器,我远程连过去架设了bbs系统,于是有了mitbbs。mitbbs telnet 的登录界面也是我手绘的。
▲在如今的 mitbbs 上,依旧有人怀念当年的荣光。
醉心于 BBS 的岁月,我接触了大量的 Linux 和开源技术,也自学了大量的网络相关的内容。
没想到,一发不可收拾。Linux 彻底改变了我对计算机的认识,这种可以自由编写的程序架构,拥有几乎无限的想象空间。当时我笃定,用开源技术可以做出无数有意思的事情,带来前所未有的满足感。不仅是我,当时很多朋友也被开源“洗脑”。
相比而言,我的专业物理学就显得过于浩渺。它的进展速度太快了,边界离生活越来越远。于是,我转投计算机和网络技术。
mitbbs 对我的最大影响之一,可能就是对于计算机技术的笃定。
▲青年时期的韦韬,离开北大到美国UC伯克利大学学习
史中:网络安全方面的研究,是从什么时候开始的呢?
韦韬:本科毕业之后,我作为工程师加入北大方正,成为了王选老师的门徒。在他的鼓励下,我又重回北大深造,开始了计算机硕士和博士的学业。2007年,我博士毕业留在北大计算机系任教,带领同学们做系统安全方面的研究。
那个时候,国内主要的安全学术研究都集中在密码学,系统安全在国际上几乎没有任何声音。这正好给了我们足够大的空间,也给了我们巨大的挑战。从2009年开始,我们在国际顶级会议上开始发表论文,陆续做了很多漏洞、系统安全机制的研究。
史中:很多熟悉你的人会把你形容为网络安全顶尖技术的探索者,或者漏洞大神,在你心中,系统安全这个世界究竟是什么样?
韦韬: 安全的本质是对抗,对抗是多维度的、持续的。
从科学角度来看。信息安全的第一属性应该是工科而不是理科。也就是说它不是问 Why,而是问 How。
既然是工科,我们可以类比一下其他领域,比如力学。
在工程力学上有很多成型的理论模型,例如盖一栋楼,结构受力的冗余可能要达到 150%(日本的楼房可能更高),这才能保障楼房的安全。
但在网络安全领域,情况比较惨淡。
▲在这些简单的线条背后,是巨大的力学冗余,它让我们的城市在狂风暴雨中不至于倾颓。而系统安全,却难以享受这样的善意。
我和 TK 有一个共同的认识:“Benchmark 是黑客最好的朋友。”为了跑分和流畅性,很多产品经理不会为了提高安全性降低哪怕0.1%的性能。
网络安全就是在这样艰难的环境中发展。
史中:没有足够的计算资源支持,应该是系统安全的宿命。在这种“艰苦”的条件下,有什么办法来尽可能的保护系统呢?
韦韬:资源有限的情况下,一方面要依靠安全技术的进步,包括新语言、新架构。另一方面是依靠防御纵深进行动态对抗与威慑。
其实,大部分漏洞问题的根源来自 C 语言或类C语言本身的缺陷,我称之为“C语言魔咒”。
绝大多数漏洞产生的最根本原因是内存分配的错误。而在C语言中,内存管理是靠人来调度的。人脑的精力和计算能力,是远远不足以合理分配这些内存的,这就会必然产生漏洞。
不幸的是,我们目前的系统,绝大多数都依赖于C语言家族。Java 的内存是自动管理,但 Java 的库又是C语言写的。另外,目前主流的操作系统也是C语言写的。
在一开始,我们挖了很多漏洞。但是我渐渐发现,漏洞是挖不完的,而且在现有的程序构架中,这是个没有解的问题。
要应对“C语言魔咒”,就需要很多弥补的方案。这就涉及到很多二进制领域。
▲控制流是程序的灵魂,一旦控制流被劫持,程序也就成了黑客的傀儡。
例如在漏洞利用攻击中,控制流是非常重要的。而很多漏洞的实现原理都是劫持控制流。一旦被劫持,程序就彻底失去了控制。
所以在2012年微软Bluehat Prize Contest 比赛上我提出了一个前向CFI(控制流完整性)的防护方案,后来这个方案分别被微软、谷歌跟进和采用,这还是很有成就感的。这种防护机制成为了主流防护机制,目前还在不断被完善中。
▲2012 微软 Bluehat Prize Contest 蓝帽子大赛,是当年 Blackhat 安全大会的一部分,鼓励白帽子找出微软内存机制中的“根本问题”。
程序=控制流+数据流。仅仅保证了控制流的完整性还远远不够,还要保证数据流的完整性(DFI)。
史中:控制流和数据流都完整,就可以保障程序的安全运行吗?
韦韬:我和李晓宁提出了一个机场安全模型,是用机场安检来做比喻。
如果让攻击者进入了操作系统内核空间,就像飞机飞上蓝天之后,难以控制其去向。但在登上飞机之前,一定有一个从领登机牌到安检到候机室的安全流程,这个流程用以保障进入核心空间的数据是合法的。
▲机场安检,把所有的流程都放置在可控的环境下。这样可以最大程度保证登上飞机的乘客是“没有威胁”的。在内存芯片中,保障流程和数据的合法性,同样是这个道理。
控制流完整,就相当于机场各个大厅之间的墙壁上没有暗门。这个时候恶意数据就没办法“穿越”墙壁绕过安检;
数据流完整,就相当于为各个大厅加上了坚固的天花板。这时恶意数据就没办法“翻墙“绕过安检。
这两个完整就可以保证的是:把漏洞的可能性收敛到一个可控的值,而不是像之前的“无限不收敛”。
2013年,我和团队发表 Paper,永恒的内存之战。直到今天,内存战争一直没有停息。
▲内存是一个广袤的战场,为了争夺芯片上的领地,0 和 1 的战争永无止息。
在编程语言方面,我相信 Rust 语言是 C 或 C++ 的继承者,因为它提供了系统级别的能力,保障内存安全,不会存在传统的内存溢出和数据竞争的问题。
而在新安全架构技术方面,Intel 推出了很有前瞻性的技术,叫做SGX。它依赖于CPU,利用一条很短的信任链就完成了远程安全验证。
于是我们在做一个很有意思的事情,用 Rust 语言实现了 SGX 技术的安全系统框架。这相当于把两个世界上最好的东西结合在一起。
▲Rust 的特别机制,让它成为了韦韬眼中 C 语言的继承者
当然,我知道更有野心的做法是直接用 Rust 写操作系统,但是这会面临着软件生态摩尔战争的问题,所以我选择从易兼容的SGX Enclave(可信区域)开始做。
如果未来云端服务可以采用这种新架构与新语言结合的新型安全技术,就会把漏洞可能存在的范围收敛得很小,于是安全性大大提高。如果这样能成功,那么也会推动ARM实现类似的安全机制,从而推动整体安全的变革。
这就是我们目前设想中的一套非常理想的安全架构。当然,这些还在构建中,还有很多困难要面对,还有很多攻击面要去对抗。我们还有很多开创性的其他安全防护工作,比如去年在BlackHat上讲的OASES安卓自适应热修复技术,也是你采访的。(大笑)
▼此处应有我们的合影▼
史中:加入百度之后,除了系统安全以外,还会面临一些新的安全挑战吗?
韦韬:百度自身面临的安全威胁,可能比很多人想象中都要大。
最主要的威胁来自黑产,我称之为安全防御的新战场。
我总结为对内和对外两个方向。举个例子:
1、在黑市上,时不时有人悬赏收购某些大公司的内部机要信息,然后打包出售;同样在黑市上,也时不时有人悬赏大企业的程序源代码。这其中当然包括百度。
“不幸”的是:百度有数万名员工,数十万台服务器。这些复杂的人员和网络系统,任何一个环节出了问题,都可能导致严重的安全问题。
不少朋友聊天的时候,都说 APT威胁的最大目标是政府,但根据我这些年的观察,APT 最大的受害者其实是企业。(注:APT,即 Advanced Persistent Threat,高级持续性威胁,一般代指有明确攻击目的的黑客威胁,就像俗话说的“不怕贼偷就怕贼惦记”。)
在利益的驱动下,黑产会精心地策反公司不稳定员工,以获得网络接入并获取关键信息。所以,我们需要完整的安全防护技术还有灵敏的威胁情报,才能精确对抗这种持续性安全威胁。
内部威胁,此为其一。
2、只要有流量的地方就有黑产。而百度再次“不幸”地拥有巨大的流量,包括搜索、地图、网盘存储等等。
例如,有些黑产会黑掉正常的网站,在夜深人静的时候把网站内容替换成黄赌毒,显示在搜索结果中。
有些黑产会恶意刷关键词,欺骗搜索引擎。让用户在搜索A的时候,总是看到与B相关的东西。
有些黑产会用“撞库”的方法猜到用户百度网盘的账号,在其中装满淫秽视频,在淘宝上出售。
总之,有流量的地方,就有人想尽办法“赚黑钱”。
外部威胁,此为其二。
▲黑产曾经攻击正常网站的百度推广账户,非法推广赌博网站。
史中:说说让你印象深刻的,脑洞大开的黑产吧?
韦韬:就在前不久,我们用了一年多时间刚刚打掉了一个非常大的黑产团伙,这真的可以用产业来形容,影响着上万家网站。你可能想象不到,他们对用户的电话号码非常感兴趣。
当用户在手机上访问了某个网站之后,很快就会接到该网站打来的推销电话,对网民造成极大的困扰。
很多人都怀疑是百度泄露了访问者的电话号码,但其实根本与百度没有关系。这件事,让百度“背锅”很久。经过我们实验室同学们深入侦查,最终事情的真相浮出水面:
在网络上,有几百家黑产经销商对外提供这种“网站访客营销”的服务,影响上万家网站。顺藤摸瓜,他们的上游又有5家左右的“网站访客手机号/QQ号获取技术”的总经销商;
再往源头追溯,发现信息来源竟然是某运营商的几家省级分公司的服务网关,这些黑产混入了这些服务网关的白名单中。这些总经销商给下游网站提供了 JS 脚本来访问这些运营商服务,非法获取网站访客的手机号。
▲某网站曾经明目张胆地提供抓取访问用户手机号的服务
经过一年多的对抗,这件事情直到不久之前才终于告一段落,我们终于推动各方切断了这个黑产链条。看到用户的信息不再被这伙黑产恶意窃取,我们才稍舒一口气。但对抗还在继续,黑产又在研究和利用新的漏洞继续非法牟利,我们也会坚决的继续打击下去。
从我的角度来看,作为常用的互联网基础设施,百度支撑了全国人民的各种服务,所以一旦出现问题,影响就非常严重。
很多时候,寄生在互联网生态上的黑产,并不能靠百度一家来处理。
例如我刚才说到的“撞库”,黑产通过用户在其他网站泄露的密码信息,来尝试登陆百度网盘的账号。一旦登陆成功,就用来存储淫秽视频出售。
对我们来说,只能通过技术手段来感知用户的登陆行为是否安全,然后对用户进行提示。经过我们的努力,还有与阿里巴巴等互联网公司的合作。目前淘宝上出售淫秽视频的“生意”已经大幅萎缩了;在微信上,黑产把价格从原来的15块提升到了68块,这也说明我们的对抗大大提高了黑产的成本。
这些单独的打击远远不够,我们试图建立一整套体系,在每个单点都采取非常个性化的防护措施,这些点在和黑客对抗的时候都具有“不对称性”的优势,然后把这些单点防护措施联合起来,就可以形成一整套强大的防护体系。这个体系需要花费工程师巨大的心血,但值得。
史中:对抗黑产的“黑产战争”,和保护系统安全的“内存战争”有什么不同?
韦韬:我之所以把打击黑产称之为安全防御的新战场,是因为“黑产战争”甚至比“内存战争”更为惨烈。
在和“黑产”交手之前,普通人很难想象到他们会如此“执着”;但如果你知道这背后有多大的经济利益之后,就不难 “理解”他们为什么如此拼命。
我们的安全实验室有近百人,百度安全事业部有近千人,但我们的对手——黑产从业者——有数十万人。相比对手来说,我们的人手非常少。我们也是急切的需要研究从深度学习到形式化验证的各种新兴技术,来保障百度和网民的安全。
我们实验室的名字叫做“百度安全实验室”,大部分人觉得我们的日常就是都穿着白大褂做研究。但实际上我们既要“穿白大褂”做研究,又要“穿迷彩服”冲到一线作战。
只有安全专家,才能更懂得黑产模式,才能在战场上以一敌百。
史中:科学家会武术,谁都挡不住。
韦韬:我感到更多的是如履薄冰。正如那句话:Security never sleeps。
和韦韬的谈话,从百度开始,却终于系统安全的哲学思考。
从北大时期,韦韬就是各个世界顶级安全大会的讲者。作为一个安全大牛,他却很少谈具体的漏洞。每一次,他都用优雅而坚定的论断,揭露一处系统安全的死结,并且在余下的时间试图给出完美的答案。
建立一套在数学上和实践上可行有效,而最终又可以趋于完美的防御体系,是他的执念。
所谓尽善,可能并不是向每一个穷人舍粥,而是寻找治愈社会的方药。
所谓尽美,可能并不是呵护花圃里的每一朵花,而是向大地注入养分。
韦韬的执着,也许是冰冷信息时代的一种悲天悯人。
end
本文作者史中,科技媒体人。微信:Fungungun。
欢迎关注我的公众号:史中
×
倾听者