信息安全|将挖洞当作爱好和职业的笑与泪:微软漏洞研究员的自白( 二 )


我心中一直有个小人说这是浏览器安全的下一个阶段 , 但可能我掉入了固有方法的舒适区 。

一言以蔽之:找到你的细分领域 , 就是让你兴奋而且能坚持下去的东西 。 做自己乐于做的事情你总会赢 。 要想着修复漏洞作为猎手 , 我所关心的就是找到有效的安全漏洞 , 提交 , 也可能还会为此进行讨论 , 之后继续去寻找下一个漏洞 。 这种做法让我的技能集出现了缺口 , 也错过了很多了解漏洞产生原理的学习机会 。 如果你也想尽快提交漏洞以免和别人重复 , 那么最起码应该花点时间研究下补丁 。
我曾以为 , “为啥我要免费给别人做事?” 是吧?事实并非如此 。 这种思维为何会降低效率的原因如下:
1、了解了有问题部分的代码 , 假以时日你最终会了解到:比如 Chromium 的代码库以及其中的运行方式 , 它会让你挖洞越挖越顺;
2、 一旦发现了漏洞根因 , 你就可以查找这种存在漏洞代码的其它实例 , 最后 , 一个漏洞可能就变成了多个漏洞;
3、有了这种洞察力 , 你最终可能发现稍加修改 , 漏洞的严重程度就要比最初想的要更高;
4、你也可以付费为 Chrome 等编写补丁 , 从而增加可获得的漏洞赏金 。

在挖洞过程中 , 我做对的一件事就是参与漏洞报告和推特讨论 。 我阅读每个评论而且这些讨论中往往暗藏宝石 。 我也从来不遮掩对漏洞评估的反对意见 , 因为手握证明 , 我也会接收拒绝并愉快地继续前进 。 作为员工了解了后台的问题处理方式后 , 我发现很多事情都是合理的 。 之前不了解这一切时 , 我对结果是不接受的 。
现在我的工作不仅要提交安全漏洞 , 而且还要和开发人员一起修复漏洞 。
有时漏洞易于修复但并非一直如此 。 在提交漏洞时我必须额外注意 , 因为不仅要确保复现用例是最小化的 , 而且还要附上根因分析并给出修复建议 。 有时我会通过漏洞奖励计划提交漏洞 , 有时我会补充报告 , 便于开发人员能快速理解问题 。
我们收到的大多数漏洞并非真正的漏洞 。 多数是重复提交的、设计问题以及无法复现或无效 。 很多时候漏洞描述并不直接 , 因此所有相关人员会一起讨论交流 。 这些会话中包含很多有意思的洞见 , 我总是很期待阅读这些邮件内容 , 如上所述 , 这些讨论内容中暗藏着宝石 。
我经常会解释为何某些是漏洞某些不是 , 虽然这和此前的工作大不相同但仍然是类似的 。 因此 , 很明显之前报告的漏洞以及阅读评论的做法使我能够应付工作 。

漏洞是不可避免的 。 随着Edge浏览器的发展 , 会出现新的特性、变更及改进 , 引入的代码自然会越来越多 , 产生的漏洞数量也会越来越多 。 更具体来说 , 漏洞是由如下方面引起的(适用于开发人员和安全团队):

  • 经验不足 。
没有人天生就理解庞大的 Edge 代码库的原理 。 理解需要时间 , 而犯错就是我们学习的方式 。
不要假定最糟糕的情况 。 在保护安全方面 , 适度水平的焦虑是有帮助的;总是把假定的最糟糕情况作为潜在担忧并告知安全团队 。
  • 缺乏安全教育 。
我在计算机科学本科学习期间 , 学校并未开设安全课程 。 虽然课堂上可能会提到最佳编程实践 , 但它并非重点且远远不够 , 因此自学一些常见漏洞起着重要作用 。
这份工作的一个重要部分是教授他人和自己学习安全知识 。
安全漏洞的发现就是和所有相关人员进行讨论的机会 , 可以讨论漏洞如何运作以及未来如何通过自动化测试阻止它再次产生 。 安排强制性安全培训、记录最佳安全实践、以及每周发送安全小技巧邮件 , 让安全成为每个人的优先考虑因素 。