漏洞挖掘中的失误:安全测试员的职业反思

本文探讨安全测试中遗漏漏洞的边界问题,分析ImageTragick和Heartbleed等案例,讨论技能差异、专业领域影响及职业责任,并反思如何界定可接受与不可接受的测试失误。

遗漏一个漏洞

测试员们,如果你们曾在测试中遗漏过发现,请举手。如果你还把手放下,你确定吗?如果你是应用测试员,在2016年5月4日前测试过使用ImageMagick的网站吗?或者作为网络测试员,在2015年4月前测试过使用OpenSSL的网络吗?如果你做过其中任何一项却没有记录ImageTragick或Heartbleed,那么你遗漏了两个非常严重的问题——但你是与整个安全社区一起遗漏的。我认为这些是可接受的遗漏。

但如果你遗漏了网站首页搜索框中的SQL注入,或者遗漏了域控制器上的开放根共享呢?两者也都是严重问题,但我会认为遗漏这些是非常大的错误。

那么,从可接受到不可接受的界限在哪里?这里涉及很多因素:测试时间窗口长度、网络规模、应用程序复杂性以及其他各种因素。我们还必须接受我们都是人,都有状态不好的时候。

我认为答案类似于其他学科使用的标准:一个与测试员应有技能水平相近的其他测试员是否能发现它。我说“应有”是因为有些测试员自称技能水平远高于实际,要么是故意欺骗,要么是真心认为自己比实际更强。

还有专业领域的问题,有些人在某些方面比其他人更擅长。做过大量PHP测试的人更可能发现LAMP应用中的漏洞,而花大部分时间研究.Net应用的人则可能完全不了解。对一个人显而易见的东西对另一个人可能完全是新的。

每当我听说我认识的人测试了我测试过的应用,尤其是在测试之间没有变化的情况下,我会感到紧张。如果我遗漏了什么怎么办?如果我遗漏了非常明显的东西怎么办?如果他们调查发现客户因此被利用了呢?这样的事情可能会终结职业生涯,或者至少是巨大的倒退。我偶尔会遗漏一些小东西,但还没有遗漏过重大的,我希望永远不会,但担忧始终存在。

我和一个朋友聊过,他说他购买了高额职业责任保险,如果他真的犯了大错,他会告诉客户全额索赔,然后离开并另谋职业。这似乎有点极端,但我理解他的感受。

偶尔会发生的情况是,一个测试员发现的问题另一个测试员不认为是问题,所以看到了但没有觉得需要纳入报告。我有过几次经历,第二个测试员报告了一些我认为风险不足以上报的内容。这从未造成问题,但有时必须向新测试员和客户解释为什么原始报告中没有包含它,并与双方讨论。

我想说的是,每个人都会遗漏东西,有些是故意的,有些是诚实的意外,有些是因为能力不足。有些你可以侥幸逃脱,有些可能真的会毁掉一个好职业。我不喜欢担心,但认为最终这让我保持警觉,有助于确保我在每项工作中尽力而为。

那么,遗漏东西会让你担心吗?你认为什么是可接受的遗漏?你是否遗漏过重大的东西并不得不面对后果?本博客没有评论系统,但请给我发邮件,我会整理回复成后续文章,获取其他观点会很好。

最后,我认为值得记住的是技术不断变化,新的攻击不断出现。正如开头所说,有些问题可以接受遗漏,因为整个社区都在遗漏,只要你尽力工作,诚实地对待自己的技能水平,并保持良好的记录,那么如果出现问题,希望事情会顺利解决。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计