普通人也能
自 2015 年初以来,我一直积极参与漏洞赏金调查,并在 2015 年初收到了我的官方赏金。首先是 O365 Outlook 中的 XSS,到 2015 年底,我又在 Firefox 中发现了一个有效浏览器漏洞。从那以后,我几乎一直坚持在浏览器中查找错误。
在过去的 5 年里,我从大学辍学的学生,到助理系统开发人员,再到网络安全工程师,最后在微软的浏览器漏洞研究团队工作至今。我的人生看起来,确实是有点梦想照进现实的感觉。
一些经验之谈
在我的漏洞赏金活动中,一个大错误是假设我专注于浏览器漏洞意味着我在网络安全领域找不到像样的工作。浏览器漏洞研究是一个小众领域这一事实进一步加剧了这种错误假设,我早期认识的大多数漏洞猎手都是从 Web 应用程序安全开始的,并且通常会坚持下去,而我却对浏览器着迷,所以我实在是没什么信心。
现实情况是,由于浏览器安全是一个利基市场,这意味着我是有资格在主要浏览器供应商里获得职位的。我参加工作已经过去了一年多,这些怀疑早就消失了,所以我想带大家来回顾一下我的经历,让我们来看看我本可以做些什么来更好地为这份工作做准备。
因为我从没想过我会在浏览器安全领域找到一份工作,所以我忽略了到怎样才能真正保证浏览器安全。我发现bug的主要方法是尽可能多地阅读有关浏览器和浏览器安全性的信息,然后我会手动测试我的想法。这是一种耗时的方法,但我从中找到了安慰,这种感觉有点像冥想。不过也能学习新的 Web API,而在好的情况下,您会发现一个有趣的安全漏洞,这是双赢的局面。
我从来没有真正进入过 fuzzing,事实上,我对这种方法有另一个错误的假设——我把 fuzzing 看作是加密货币挖掘,以为我运行一个 fuzzer 的话就会滥用我的 CPU 直到崩溃。
小结:找到你的利基,将兴趣和职业规划保持一致。做你喜欢做的事,你就已经赢了。
02 一定要深挖代码
作为一个漏洞赏金猎人,一开始我所关心的只是找到一个个有效的安全漏洞。我会提交它,也许会稍作说明,然后迅速离开并寻找下一个错误。这让我的技能和别人出现了差距,并让我错过了许多了解 bug 是如何在幕后发生的机会。如果你和我一样,总想尽快提交一个错误以避免潜在的重复,那么至少花时间看看制作补丁的过程。
我曾经想:“我为什么要免费做别人的工作?!”但这样的想法是不对的。
学习编写错误部分的代码,随着时间的推移,你最终会了解(例如)Chromium 的代码库以及其中的工作方式,这意味着你可以更好地寻找错误。一旦找出造成bug的根本原因,您就可以寻找该错误代码的其他实例,帮助自己更好地举一反三。久而久之这种额外的洞察力会帮助您的判断bug的严重程度,以免把高危漏洞当成小问题。况且,编写补丁也会带来一笔额外的收入,何乐而不为呢?
我很早就明白,发现安全漏洞通常比编写防弹代码更容易。因此,对开发人员安全意识的投资是保护浏览器安全的关键,如果没有与开发人员的合作,这一切都无法实现,因为保护浏览器的责任由团队所有人而不只是安全团队分担。
小结:现在的积累和准备都是为了未来能提高效率,所以一定要深挖代码。
03 不必怀疑自己
这一路走来,我也不断与自我怀疑作斗争。我记得在发现我的bug 之前的那段时间,我在想:“我是谁呀?就来给这家大公司找bug?” 但无论如何我都尝试了。当得到这份工作时,我总是在想:“我该在这家大公司工作吗?” 但最后我还是胜任了这份工作。
这是一种被称为冒名顶替综合症的常见感觉,我们应该意识到它并克服它。忽略你内心的反对者,尝试做你最初认为你做不到的事情吧,你会为自己感到惊讶的。自从我工作以来,我并没有像想象中一样处处不顺利。从我敬佩的人那里,我得到了许多鼓励的话,让我明白我会有很长的路要走。别人的作品给了我灵感,也让我变得更好。作为团队的一员,我正在与比我拥有更多知识和技能的人一起工作,这迫使我变得更好,因为我周围都是了不起的人。
小结:大胆去做吧。成为支持系统的一部分,无论它看起来多么厉害。
04 及时调整节奏
当我正在寻找bug时,这是我一个人的时间。我想做就做,如果我感到倦怠即将来临,我可以轻松地停止我正在做的事情。但我在微软之前不是这样,所以我得在这份新工作取得平衡。
我在疫情期间加入了微软,所以和你们很多人一样,我在家工作。作为一名新员工,我想确保我学到了我需要学习的一切,并尽我努力开始这项新工作,在家工作也是一种我从未经历过的全新体验。这导致我长时间工作,甚至在周末也工作,我太兴奋了,以至于我犯了一个巨大的错误——没有调整自己的节奏,我忽略了微软内部许多关于工作与家庭平衡的提醒和建议。
于是我精神疲惫,睡眠不足,压力很大。我立即采取行动,在周末停止工作,知道什么时候结束一天的工作,并留出时间减压。我确保至少睡 7-8 个小时并减少咖啡的摄入量。第一次放假的时候,我特意不去想工作,回来后心态就完全不同了。倦怠已经消退,我觉得自己又准备好迎接这个世界了。
最后,希望您从我迄今为止的经验中发现一些启示,并从我的一些错误中吸取教训。我提出的技巧是表面的,如果你对某事感到困惑,需要你更深入地挖掘。与bug的斗争是漫长且艰难的,需要更多感兴趣的人投入其中!
为您解答IT技术课程学习相关问题。