一、前言
二、为什么要做漏洞复盘
三、漏洞复盘的理论方法
复盘也需要有理论支撑,常用的理论方法是“5why分析法”,又称为“五问”或“五个为什么”。5why分析法是由丰田公司的前社长大野耐一首创。在一次新闻发布会上,有人问:“丰田公司的汽车质量怎么会这么好?”他回答说:“我碰到问题至少要问5个为什么。”
大野耐一总是喜欢在生产车间走来走去,有一次,大野耐一在生产线上发现机器总是停转,虽然修过多次,但仍不见好转。于是,就有了大野耐一与工人之间的一次问答:
经过连续五次不停的问“为什么”,才找到问题的真正原因和解决的方法,即在油泵上安装过滤器。
大野耐一反复地就一个问题问“为什么”,直到答案令他满意,直到被他问到的人心里找到了问题根因——这就是著名的“五个为什么”的起源。
5why分析法是一种从表象问题寻找根本原因的逆向推理分析法。管理学大师亨利·明茨伯格曾如此描述:“连问五次为什么,并非什么妙法,不过一再追问为什么就可以深入系统,找到问题的根本原因,许多相关的问题就迎刃而解。”
5why分析法就是将问题原因的探索多层次化,且有所侧重,通过不断地提问为什么前一个事件会发生,直到回答“没有好的理由”、问题的根源归结为人的行为或直到一个新的故障模式被发现时才停止分析。
5why分析法看似简单,其实背后是事物发生严密的因果链。尼采说过,世界上最危险的关系就是因果关系。可见因果关系的重要性,只有找到严密的因果逻辑链,才能真正的解决问题。5why分析法就是寻找因果的绝佳工具。
5why并不是一定要问五个为什么,有的问题问2个就够了,有的可能需要问10个,根据大量的实践经验,问五次为什么最容易清晰地辨别出根原因,这也是将此方法定义为5why分析法的原因。
四、模拟复盘遇刺事件
复盘尽可能采取现场会议的方式,复盘参与人员要包括所有干系人,具体包括特朗普、贴身保镖、反狙击小组、外围安保。
总结
漏洞复盘的目的是要找到漏洞产生的根因,找到漏洞的引入人,因此参加复盘的人员要包括研发过程中与漏洞相关的所有人员,比如:需求分析人员、功能设计人员、代码开发人员、安全测试人员以及运维人员等。
事件发生后当事人很可能已经遗忘了事件过程中的一些细节,因此,开始复盘会议开始后的第一件事情,就是由复盘主持人对本次事件进行回顾,把大家重新拉回事件现场。
复盘会议的主要内容就是通过5why分析法找问题根因,因此对复盘会议主持人的要求比较高。
复盘主持人:下面我们先来讨论下这次事件中存在哪些不足?
特朗普:此次事件中,我的运气爆棚,因为要看提词器所以我略微转了头,第一声枪响时我感觉好像有子弹从我耳边飞过,紧接着第二声枪响我的耳朵被击中,我反应很迅速,立刻捂着耳朵并以讲台为掩体蹲下。
贴身保镖:发生枪响后,我们反应很迅速,2秒钟内我们蜂拥而至,已经把特朗普先生团团压住组成人墙。
反狙击小组:发生枪响后,我们立刻侦查目标,在第三声枪响后锁定暗杀人员位置,果断开枪将其击杀。
复盘主持人:我的问题是此次事件中存在哪些不足,而不是问大家有多牛X?
外围安保:此次事件中我们在外围安保方面存在不足。
复盘主持人:存在什么不足?
外围安保:没有及时、提前发现暗杀人员。
复盘主持人:为什么没有及时发现暗杀人员。
外围安保:我们没有针对暗杀人员所处的建筑物进行布控。
复盘主持人:暗杀人员所处建筑物离特朗普先生只有100多米,视野无遮挡,被视为最佳狙击位置,为什么没有在这栋建筑物进行布控?
外围安保:外围安保工作由当地执法部门负责,此次安保方案我们重点吸取了安倍晋三事件的经验,重点对现场近距离接触人员进行安全检查,外围安保方案考虑不全,当地执法部门没有特勤局的专业能力,没有严格按照标准划分布控区域,未对周围建筑进行动态清零。【问题一】
复盘主持人:据BBC采访现场民众,有人在发现刺客持枪爬上房顶之后,曾经向在场执法人员呼喊,但没有得到回应,为什么没有得到回应?
外围安保:如上所说现场执法人员为当地执法部门,他们没有参加过此类重保,没有遇到过此类情况,这反映出我们现场应急方案不足,因为没证实民众反映是否属实,所以我们未及时处置。【问题二】
反狙击小组:反狙击小组人员已经将目标锁定在刺客身上长达3分钟,然而在向上请示后未在第一时间收到行动命令,因此未能在刺客向特朗普开第一枪前阻止他,这反映了紧急情况下上升决策机制不通畅,错失最佳时机。【问题三】
复盘主持人:上面我们分析了人和机制的不足,工具方面是否存在不足?
贴身保镖:防弹衣在本次袭击中成功抵御了子弹,但是现场屏幕玻璃碎片造成了二次伤害,后续可以优化。【问题四】
复盘主持人:举一反三,通过这次事件,后续我们还有哪些需要注意的事项?
贴身保镖:此次暗杀失败,后续针对特朗普先生可能会有更猛烈的袭击事件,另外,举一反三,我们还需要关注加强其他领导人的安保工作。
总结
上述复盘纯属虚构,目标是希望让大家了解如何使用5why分析法。针对安全漏洞的复盘,同样是不停的抛出问题。常见的问题包括:
漏洞是新增功能引入还是存量功能引入?
如果是存量功能,前期安全测试时为什么没有及时发现这个漏洞?
如果是新增功能,功能在线上前经过了SDL或DevSecOps全流程,那需求安全分析节点是否选择了正确的安全基线?安全需求是否被正确的设计成安全方案?安全编码环节是否写了不安全的代码?
如果是安全编码环节引入的漏洞,那是谁写的代码?反问开发人员为什么会引入漏洞,是对安全不够重视的人员意识问题,还是对漏洞成因不了解的人员能力问题?
无论是意识问题还是能力问题,安全团队是否有组织培训?
引入漏洞的开发人员是否参加了培训?
参加培训后意识和能力还不足,是因为培训讲师没有讲清楚,还是因为开发人员参加培训的时候没有认真听?
为什么参加培训的时候没有认真听?
如果漏洞产生了攻击行为,那生产上的WAF、RASP等各类安全检测防护设备是否发挥作用?
研发流水线上的白盒、灰盒等各类安全漏洞扫描工具是否发现了漏洞,如果没有发现,则为什么出现了漏报?如果工具发现了这个漏洞那为什么没有在上线前处置?流水线门禁是否有效?
此类漏洞是否具备普遍性,在其他应用或其他功能模块是否存在?是否需要全面排查?是否需要做成典型案例向全体开发人员宣贯?
是否有其他技术手段可以默认防护此类漏洞,比如安全组件,无需开发人员参与使应用系统默认具备此类漏洞的防护能力。
总结
在漏洞复盘过程中,使用5why分析法不断地提问为什么前一个事件会发生,直到回答“没有好的理由”、或者问题根源归结为人的问题,这样才能快速找到漏洞根因,识别研发运营过程中存在的不足。
复盘必有结论,复盘主持人应做好根因和存在不足的记录,明确整改措施、责任人和完成时间,做好遗留任务的跟进。
五、漏洞复盘的核心要点
最后,总结漏洞复盘的核心要点:
一是要统一思想,对齐开发、运维和安全人员的思想,明确漏洞复盘的目标是找根因,解决问题,不是追求责任找到背锅人。
二是现场复盘,干系人全员参与。
三是5why分析法找到问题根因和不足。
四是复盘必有结论,明确任务责任人和完成时间,做好任务跟进。
原文始发于微信公众号(安全有术):以特朗普遇刺事件为例,聊一聊安全漏洞复盘