我的网络安全之路
小时候,有家公司欠我家工厂的钱,父亲把对方的一台电脑搬回家抵债。那是台大屁股显示器的老机器,开机时会出现一个彩色的鹦鹉标志。家里没有宽带,我攒钱去电脑城买了个 USB 上网卡,把母亲的 SIM 卡插进去,用掉了几百块电话费。
那时主要拿电脑打游戏,醒来就玩,一直玩到凌晨两三点。打不过别人,就找外挂;现成的外挂不够用,又开始自己写。我从易语言学到 Visual Basic,还写过远控程序,拿来捉弄朋友。最初的动机没有多复杂,就是想在游戏里赢,想做一些别人做不到的事。
黑客在我眼里确实有点“超能力”。原本只能使用别人做好的程序,后来自己也能写工具,改变程序的行为。这种感觉让我着迷。顺着外挂和远控,我开始研究漏洞、渗透测试、操作系统和协议栈,把越来越多的时间花在电脑前,还没想过这些东西以后能成为一份工作。
白天写业务,晚上研究漏洞
2014 年,我以高级研发工程师的身份加入蘑菇街,白天写 App 后端,业余研究安全。乌云,也就是 WooYun,是那时我学习漏洞、交流研究的重要地方。我自己写自动化工具,有一段时间,十天里在排行榜上往前走了十页。
编程的底子帮了不少忙。做研发时,我要让程序按照预期运行;研究漏洞时,又要看它在什么条件下会偏离预期。除了验证漏洞能不能利用,我也会回到代码里,弄清它为什么产生、应该怎样修。业务代码和漏洞研究,两边都在做。
入职不到一年,公司开始涉足金融业务,安全有了更明确的需求。我转做了公司第一个正式的安全岗,开始参与和主导数字证书、实名认证、账户安全检测,以及 VPN、堡垒机等建设。原来下班以后研究的事情,成了白天需要负责的工作。
后来,工作又扩展到漏洞平台、代码审计和主机防御,我也从一个人做安全,走到带着团队一起建设。那时没有一条现成的路径,很多问题都得自己摸索。我很希望能找到一个经历过同样事情的人,问问他当时是怎么做的。
写了几章,发现自己还讲不清楚
2016 年,出版社找到我,希望我写一本安全方向的书。我选了《白帽子讲漏洞修复和防御》,准备把各种漏洞的成因、原理、利用方式、危害和修复方案完整讲一遍。
真正写起来,写了几章就觉得很难受。漏洞类型很多,逐个展开已经是很大的工作量。更麻烦的是,我当时主要站在白帽子的视角看修复和防御,对企业安全建设还没有完整的认识,经验撑不起想写的范围。
一个漏洞怎么产生、怎么利用,我可以往下研究;但把题目扩展到一家企业,应该先解决什么问题,各种安全能力怎样配合,就不只是把熟悉的技术写出来。那些做过的项目和研究过的漏洞,还没有在我脑子里连成一个完整的答案。写书把这个缺口暴露了出来。
报告过的问题,又出现了
那几年,我做过不少漏洞发现和报告的工作。看到企业暴露在外的问题,总想去提醒一声。但需要提醒的地方太多,靠自己不停发现、逐个报告,很难顾得过来。
GitHub 上的敏感信息泄漏尤其让我看到这件事的局限。我们主动监测并向相关企业报告,有些企业很快就删除了信息,也有些在报告后又反复出现。同一类问题,并没有随着一次报告和处理就消失。
我希望企业能够自己持续发现这些问题,不必总等别人提醒。我们开源了 GSIL,用来监测 GitHub 上的敏感信息泄漏;也开源了 Cobra,帮助缺少代码审计能力的企业发现代码中的安全问题,在遇到新漏洞时做应急排查。把工具交出去,是想让更多人能够自己动手处理。
但 GSIL 能覆盖的,终究只是信息泄漏这一类问题;Cobra 也有自己的能力范围。做出一个工具,解决了其中一部分事情,却没有替一家企业回答整个安全建设的问题。
和不同公司的安全负责人交流时,我又注意到,大家容易从自己熟悉的方向开始:做攻防的更关注漏洞,做审计的更关注合规,研发出身的更愿意自己写产品。已有经验能够帮助人起步,也可能让不熟悉的问题迟迟得不到同样多的关注。
写书时没能讲清楚的事情,就这样在项目和交流里继续积累。我的关注点开始从一个漏洞、一个工具,扩展到企业怎样持续发现和处理问题。原来觉得已经完成的工作,放到更长的时间里看,往往还有后半段。
不想把熟悉的事情再做一遍
我在蘑菇街待了五年,经历了公司上市,也参与了安全体系从无到有的建设。到 2019 年初,安全资源的投入和继续发展的空间已经比较明确,我开始看新的机会。
拿到过几个 offer,但不太满意。换到另一家中小公司,很可能只是把过去做过的事情再做一遍。我想接触更复杂的问题,看看已经积累的能力,换一个环境还能解决多少事情。
后来联系上张欧,他正在组建安全团队,我们此前彼此听说过对方。面试有很多轮,前面几次每次都聊了一个多小时。最终,我是在黑龙江一家烤串店里接到 offer 的。那种开心,到现在还记得。
到了网商银行,我担任安全架构师,作为 CISO 的副手,与团队一起建设应用安全、移动安全、基础设施防护、威胁情报和事件响应等能力。过去的攻防和研发经验仍然有用,但需要放进更大的范围里,和不同方向的工作一起考虑。
这次机会能成,也不只是因为我此前做过什么。对方恰好在组建团队,我的能力与他们要承担的事情能够接上,彼此又认可对方做事的想法。回头看,我不愿意只留下“凭能力进入更大平台”这个结果。此前的积累、当时的需求,以及愿意把责任交给我的人,都在里面。
后来需要负责的事情
后来,我担任支付宝支付科技有限公司的首席网络安全官,继续与团队一起做支付平台的安全建设。从研发、安全工程师到架构师和负责人,职位变化可以用几句话交代,对这份工作的理解却没有那么快。研究漏洞、建设产品、组织团队、处理风险,每往前走一段,都会碰到原来的经验没有覆盖到的事情。
我也继续写文章,在安全会议上分享项目里的经验和教训。早年自己摸索时,很想知道别人走过什么弯路;后来有了一些积累,就想把过程留下来。把事情讲给别人听,也会重新碰到写书时的问题:哪些是自己确实弄明白的,哪些只是做过一次,还解释不清楚。
这条路并不是小时候就规划好的。父亲搬回家的旧电脑,家里没有强迫我按部就班的环境,那些可以自己安排的时间,让我有机会沉进感兴趣的事情里。后来公司出现安全需求,我才能把业余积累用到正式工作中。再往后,接触到的业务、遇到的同事和需要承担的责任,又不断改变我做安全的方式。
现在让我花时间的,也有不少当年对黑客着迷时没有想到的工作。最近一次去济南参会,下午回到酒店,我研究整理了三十多篇安全法律法规。逐篇看要求怎样理解、具体应该怎样落实,以及最后怎么验收。法规写在那里,还需要有人把它变成能够执行、也能够检查的事情。