软件和基于软件的产品必然存在漏洞,这是不容回避的事实。这些漏洞会使部署它们的系统和依赖它们的人员面临风险。为了修复易受攻击的系统,必须首先找到这些漏洞。一旦发现,必须修补易受攻击的代码或修改配置。协同漏洞披露 (CVD) 是一个旨在确保这些步骤以最大限度减少脆弱产品对社会造成的危害的方式进行的过程。
CVD概述
过程是“为达到特定目的而采取的一系列行动或步骤”。发布文档是一个操作。发布修复是一个动作。虽然这两个都是CVD过程中的常见事件,但尚需明确的定义。也许对CVD过程的最简单描述是,它始于至少一个人意识到产品中的漏洞。这一发现事件立即将世界分为两组:知道漏洞的人和不知道漏洞的人。从那时起,那些属于知道漏洞的集合的人会反复琢磨两个问题:
应该采取什么行动来回应这些知识? 还有谁需要知道什么,什么时候知道?
CVD过程一直持续到这些问题的答案是“没有”和“没有人”。
协调漏洞披露流程中的不同角色,对实施CVD至关重要。这里相关的角色主要有,Finder(发现者)--识别漏洞的个人或组织;报告者——通知供应商漏洞的个人或组织;供应商--创建或维护易受攻击的产品的个人或组织;部署者--必须部署补丁或采取其他补救措施的个人或组织;协调者--促进协调响应过程的个人或组织;
欧美等主要发达国家都建立了相应的协调披露政策,美国的政府机构也有类似的政策。CISA则是美国国家层面的漏洞披露的协调和管理机构。比如美国CISA的协调漏洞披露过程,分为五个步骤。CISA正是这个流程中的关键角色,协调者。
CVD是一个抗解问题
这个看似简单的CVD过程,同时却是一个很复杂的问题。安全研究者已经断言漏洞披露可以被认为是一个棘手的问题(Wicked Problem)。何为棘手的问题?
Horst W.J. Rittel 和 Melvin M. Webber,在1973 年的文章“一般规划理论中的困境”中,描述了棘手问题的以下特征:
1、“对于一个棘手的问题没有明确的表述”——解决问题类似于理解它。
2、“棘手的问题没有停止的规则”——问题没有内在的标准来表明一个解决方案是充分的;解决方案取决于计划者决定停止计划。
3、“棘手问题的解决方案不是真假,而是好坏”——相关各方对解决方案的适用性判断将通过他们的价值观和倾向的意识形态来进行。这些判断通常“表达为‘好’或‘坏’,或者更有可能是‘更好或更差’、‘令人满意’或‘足够好’”。
4、“对于一个棘手问题的解决方案,没有直接的和最终的测试”——解决方案可以在时间和范围上产生深远但并不总是明确的影响。同样,结果的可取性可能要到很久以后才能清楚。
5、“对棘手问题的每一个解决方案都是‘一次性操作’;因为没有机会通过反复试验来学习,所以每次尝试都很重要”——针对问题采取的行动会影响未来解决方案的可用选项。
6、“棘手的问题没有可枚举的(或可详尽描述的)潜在解决方案集,也没有可纳入计划的详细描述的允许操作集”——不可能证明所有可能的解决方案都被考虑甚至被确定。
7、“每个棘手的问题本质上都是独一无二的”——“本质上独特”的含义是“尽管当前问题与前一个问题之间有很多相似之处,但总有一个额外的区别属性具有压倒一切的重要性。”
8、“每一个棘手的问题都可以被认为是另一个问题的征兆”——每一个确定的原因都会导致一个“更高层次”的问题,而当前的问题就是这个问题的征兆。因此,渐进式方法或边际改进可能对问题影响很小或没有影响。
9、“存在代表一个棘手问题的差异可以通过多种方式来解释。解释的选择决定了问题解决方案的性质”——描述问题的方式会影响提出的解决方案。
10、“规划者没有犯错的权利”——解决方案的目标不是找到关于世界的终极真相,而是改善居住在世界上的人的条件。
漏洞披露的几个术语
协同漏洞披露(CVD):发现漏洞的安全研究人员与受影响的供应商协调,允许他们修补安全漏洞的过程。补丁创建成功后,漏洞信息和补丁将对外发布。
负责任的漏洞披露:发现漏洞报告的安全研究人员表示,漏洞对供应商保密。如果供应商在指定的时间框架内没有做出反应(谷歌已经建立了一个广泛认可的90天的时间框架),安全研究人员可能会将漏洞的知识发布给公众。这意味着,与CVD不同的是,供应商可能有非常有限的时间框架来响应该漏洞,从而导致在没有补丁可用的情况下将漏洞的信息发布给公众。
完全的漏洞披露:一旦发现漏洞,所有细节都会公开发布。这种方法被认为是为了激励供应商尽可能快地减少漏洞。然而,在此期间,由于长时间没有补丁可用,漏洞被利用的风险非常高。
完全的保密:发现漏洞的人将其保密的过程。保密的动机可以是恶意,或者其它不可公开的动机,各不相同。
漏洞公平裁决过程(VEP):与上述各种披露选项不同,漏洞公平裁决过程帮助美国政府决定是否隐瞒或披露他们对现有漏洞的了解。一些研究者提出了政府漏洞披露(GVD)的概念。
协同漏洞披露六大原则
减少伤害原则
减少伤害的概念来源于公共卫生领域,但这个概念也适用于软件漏洞:即使漏洞无法完全消除,也有可能减少潜在的危害。
从本质上讲,针对易受攻击的软件减少危害是为了平衡系统防御者采取行动的能力,同时避免增加攻击者的优势。经验表明,几乎所有以软件为中心的产品都包含漏洞,而且这种情况可能仍然存在,尤其是在代码复杂度不断增加的情况下。
事实上,潜在的漏洞可能永远不会消失,因为以前安全的系统在部署到新环境时可能会变得脆弱,或者仅仅是由于环境变化或新型攻击技术的发展。应用系统往往比它们的威胁模型寿命更长。
自以为是原则
就CVD流程而言,通常假设任何花费时间和精力联系供应商或协调员报告问题的个人都可能是善意的,并真诚地希望降低漏洞造成的风险。虽然每个报告者可能都有次要动机,有时甚至可能难以与之合作,但让有关 CVD参与者动机的负面关联累积可能会影响相关的讨论和判断。
据调查,漏洞的发现者不外乎有如下几种动机:
保护,让世界变得更安全。这些研究人员被他们认为可以发挥作用的问题所吸引。
好奇,出于好奇而修补。这种类型的研究人员通常是一个业余爱好者,并被驱使去了解事物是如何运作的。
声誉,寻求自豪感和知名度。这些研究人员通常希望成为最好的,或者以他们的工作而闻名。
利益,赚钱,这些研究人员将他们的技能作为主要或次要收入进行交易。
政治,有思想有原则。无论是爱国者还是抗议者,这些研究人员都强烈支持或反对某个倾向。
认可——公众认可通常被用作对CVD “遵守规则”的奖励。 礼物——T恤、贴纸等小礼物让研究人员对组织有一个很好的感觉。 金钱——漏洞赏金计划就属此列。但漏洞赏金将CVD变成计件工作,也会产生副作用。 就业——观察到组织选择雇用向他们报告漏洞的研究人员的案例,无论是临时(合同)还是全职。这当然既不是必需的,也不是预期的,但是拥有这样做的声誉可以成为供应商鼓励积极互动的有效方式。
寻求真相并报道——新闻应该准确和公平。记者在收集、报道和解释信息时应该诚实和勇敢。 尽量减少伤害——道德新闻将消息来源、主题、同事和公众视为值得尊重的人。 独立行事——新闻的最高和主要义务是为公众服务。 负责任和透明——新闻意味着对自己的工作负责并向公众解释自己的决定。
成功的CVD流程有助于鼓励搜索和报告漏洞,同时最大限度地减少对用户的伤害。随着漏洞的发现和消除,支持成功的CVD流程的开发人员有望看到其代码的整体安全性随着时间的推移而提高。
改进CVD流程,可以将吸取的经验教训反馈到开发过程中,CVD可以减少新漏洞的产生,增加预发布测试以发现漏洞。
小结
协调漏洞披露介于立即披露和完全保密两个极端之间。对漏洞披露实践的研究表明,这两种方法都不是社会最优的。因此,需要找到平衡点。但这样做需要回答几个问题:应该发布多少信息?给谁?什么时候?是否在宣布漏洞存在之前等待补丁部署?是否在等待补丁可用但尚未部署?在不提供任何其他详细信息的情况下确认知道产品中存在漏洞是否可以?
考虑到并非所有因素都在参与披露过程的各方的控制范围内。因此,无论是否参与了协调良好的披露过程,攻击者都可以发现漏洞并利用它们来攻击受漏洞影响的系统。然而,许多漏洞可能永远不会在攻击中被利用。那么,应该如何处理潜在危害的问题以及围绕漏洞披露的风险和回报的问题?
协调漏洞披露(CVD)流程提供了这些相互竞争的利益的合理平衡。公众,尤其是易受攻击产品的用户应该了解这些产品的问题以及供应商如何处理这些问题。同时,未经审查和缓解而披露信息只会使公众容易受到损害。当每个人都能够协调合作以保护公众时,就会达到理想的情况从而避免因准备不足而造成的负面影响。
CVD的目标是帮助用户做出更明智的决策,决定他们可以采取哪些措施来保护他们的系统。
参考资源
1、https://vuls.cert.org/confluence/display/CVD/2.6.+Process+Improvement
2、https://www.cisa.gov/coordinated-vulnerability-disclosure-process
3、https://ecfr.eu/article/commentary_time_to_talk_europe_and_the_vulnerability_equities_process/