安全本质的再探索与思考
文 | 安恒信息
多年来,整个安全行业一直都在不停地探索或追寻安全的本质问题、安全和业务的关系及安全和安全从业者的价值,如图所示。
1. 安全工程
前Google安全工程总监,IT安全领域15位最有影响力的黑客之一,IT界最具影响力的100人之一,Michal Zalewski在其2011年出版的《Web之困》一书中从产品/软件安全工程的视角出发,首次深度探索了安全的本质问题。其后又在2018年的一篇名为“Getting product security engineering right”的文章中进一步探讨了这一思想。
Michal Zalewski 认为,在过去几十年里,业界没能构建出一个可用的框架来理解和评估现代软件的安全性。反而,业界的侧重点几乎都放在一些响应性质的、次要的安全方法上(如漏洞管理、恶意软件和攻击的检测、沙盒技术及其他)。Michal Zalewski首先带我们探索了安全方法论,以及风险管理存在的问题和两者为何也没能走出这一困境。紧接着他根据在Google多年的安全工程实践经验提出了实际可行的保障软件安全的解决之道——软件安全工程。
他的原文是:表面上看来,信息安全领域属于计算机科学里很成熟、明确且硕果累累的一个分支,自以为无所不知的专家们通过展现他们那分类清晰、数量庞大的安全漏洞集(CWE和CVSS)来标榜这一领域的重要性。而理论家们则会从旁指点,说只要遵从今年最热门的某某安全方法学(贝尔-拉帕杜拉安全模型、APT、威胁情报、零信任),早就能把这些问题都防患于未然了云云。
1.1 安全方法论:贝尔-拉帕杜拉安全模型(Bell-La Padula security model)的困境
贝尔-拉帕杜拉安全模型的定义:当且仅当系统开始于安全的状态,而且一直不会落入非安全状态,它才是安全的。
当然,像这些定义安全的文字从根本上来说都是正确的,用于论文的基调甚至政府规范都毫无问题。但实际上,对真实世界里的软件工程而言,由于以下三个原因,以这些理论为基础建立的模型几乎是没用的。
1)对一个足够复杂的计算机系统来说,没有办法定义什么是正确的行为。对一个操作系统或者Web浏览器来说,没有一个权威机构能定义什么是“应该的方式”或 “安全的状态”。最终用户、系统所有者、数据提供者、业务流程所有者和软件硬件开发商之间的利益都南辕北辙,并且说变就变。如果公司的股东们可以为所欲为,能够不加掩饰地优先考虑自己的利益,就更是如此了。
2)美好的想法无法自动转换成规范的约束条件。即使通过给出系统应包含哪些具体用例,我们能就系统该有的行为达成完美的、高级别的共识,但这些用例几乎不可能与可允许的输入数据、程序的状态和这些状态的转换一一对应起来,而要做正式的系统分析却需要这种对应关系。例如,一个很常识性的概念“我不希望别人越权读到我的电子邮件”,却没有办法很好地翻译成数据模型。
3)很难令人信服地分析软件的行为。在复杂的真实世界的场景里,完全没有办法令人信服地通过对计算机程序的静态分析,证明程序的运行是符合详细设计规范的(当然,在高度受限的环境下或针对一个非常狭义的目标还是有可能办到的)。很多案例在实际环境中是无解的(因为计算的复杂程度),甚至有可能由于停机问题(Halting Problem)而完全无法确定其状态。
1.2 风险管理的困境
风险管理,它只是告诉系统所有者应该学会在考虑性价比的同时,必须接受漏洞必然存在这一现实。一般来说,可以用以下公式计算该风险付出的代价。
风险=出现问题的可能性×最大损失
例如,根据这一公式,假设某台不太重要的工作站每年受到的攻击对生产效率的影响小于1000美元,那么该机构对修复这类损失就应该谨慎投入,不用太费神,无须为此花上10多万美元,来引入额外的安全措施应对意外情况,并制订监控计划以避免这些损失。根据风险管理的精神,主要投资应该花在运行关键性任务的主要设备上,进行隔离、加固和监控,因为这些关键性设备处理着客户所有的付账记录。
根据目标安排优先级自是理所当然的。但风险管理主要是和数字打交道,它对帮助我们理解、覆盖和管理真实世界里的问题并无多大裨益。它反而带来一种错误的危险观念:不到位的措施只要被条理化了就能变得合理了,不足的金钱投入再加上风险管理,就能和充足的安全投入达到相似的安全成效。
在互联的系统里,损失是没有上限的,范围也不会只固定在单个设备上。严格意义上的风险管理是评估某个资源被攻破时会遭受到多少常规损失和最大损失。遗憾的是,这么做其实忽略了很多重大的安全攻击事件,如针对TJX和微软的攻击,它们在最开始时都是针对一些相对不重要和被忽略的入口。但这些开始时不起眼的攻击会迅速升级,绕过任何表面的网络隔离,最后几乎完全攻破关键性运营设备。典型的风险管理只关注数字,而和其他节点比起来,初始的事故点往往权重都比较低。同样,因为被利用的可能性较低,能逐步接入敏感资源的内部攻击途径也往往会被忽视。然而,这两种被忽视了的组合会导致代价高昂的损失。
1.3 实际的解决之道
1)从失败(最好是别人的失败)中学习。系统设计应尽量避免出现已知的缺陷。尽管没有自动的解决方案(甚至可能连优雅的方案也欠缺),但最好能不断修正程序的设计指引,确保开发人员知道什么地方有可能出现问题,为他们提供一些工具,尽量以最简单的方式来避免任务出错。
2)开发一些工具来检查和纠正问题。一般而言,安全上有欠缺不会产生明显的副作用,除非它们被恶意的入侵者利用,但这种反馈成本实在是太昂贵了。为了解决这个问题,我们可以创建各种安全质量保障(QA)工具,以验证程序的实现是否正确,执行定期的审核以检测是否有一些无意中出现的错误(或系统工程上的缺陷)。
3)先做最坏的打算。尽管我们已经尽了最大的努力来避免出现问题,但历史也一再教育我们,还是有可能会出现严重的安全事故。所以要引入恰当的组件隔离、访问控制、数据冗余、监控和响应流程,使服务的相关人员可以在事件还未从小事故演变成大灾难前做出及时的响应。
2. 未知攻,焉知防
攻防对抗是提升系统安全性的有效手段之一。
1)某届ISC安全大会主题为《APT防御——未知攻,焉知防?》演讲中,从软件漏洞、攻防对抗及成本等方面对安全的本质进行了深入的探讨。同时其认为,实用的防御方案在很大程度上仍然依赖于对攻击技术的深入了解。
2)2014年,微软威胁情报中心总经理John Lambert(JohnLaTwC)在其Twitter上发布了10条其对安全的理解的推文,很快在安全圈引起了“轰动”,其中与“未知攻,焉知防”相关的两条推文引起了安全同行的激烈讨论。
“If you shame attack research, you misjudge its contribution. Offense and defense aren't peers. Defense is offense's child.”
如果你认为从事攻击技术的研究是可耻的,那你就没理解攻击技术的价值。攻击和防御的地位当然是不一样的:未知攻,焉知防。
“Biggest problem with network defense is that defenders think in lists. Attackers think in graphs. As long as this is true, attackers win.”
网络防御最大的症结在于,防御者的思维往往是单线的,而攻击者的思维要高一个维度。只要这种情况一直存在,攻击者就总是会赢。
这里摘录Tony Sager@前国家安全局的评论
嘿理查德——这是托尼,现在从国家安全局退休了。谢谢你的好评!
对于第一个评论者,我承诺*我没有“offense envy/进攻嫉妒”。但是,作为一名主要攻击性组织的后卫,在35年的职业生涯中,我*做了“offense admiration/进攻钦佩”。可以说,我和攻击者一起生活并研究了几十年,希望成为一名更好的防守者。我确保在计划防御时我们有攻击者的心态。
当然,我们对(其他人的)进攻的理解必须告知国防,正如理解国防自然会告知进攻。我将这些团队聚集在同一个经理下的另一个原因——为我们操作红队的人经常在运行复杂的网络方面没有经验,因此不了解防御的选项和流程,导致他们做出错误的选择(模拟)攻击者,所以给我们不那么有用的结果。
理查德从我的观点中指出了正确的问题——暗示防守在某种程度上比进攻更不值得或更令人兴奋。作为终身的后卫(作为漏洞发现者和经理),我拒绝承认平等的立场。我认为防守非常令人兴奋,具有挑战性和重要性——与进攻相比,不仅仅是(或更多)。
3)《中国网络安全人才之“怪现状”》一文中指出了目前国内人才培养在结构和技能方面的现状:“重视攻,轻视防”,杭特认为攻防就如同硬币的两面,哪一方面都不可或缺,因此才出现了“以攻促防”“未知攻,焉知防”之类的金句。但现实往往不尽如人意,这些金句实际上也只做到了前面一半,后一半则明显薄弱,最终成了“虎头蛇尾”“强弩之末”。现在安全人才在总数不够的前提下,防守人才更是极其匮乏,比例严重失调。
3. 信任是网络空间安全的基石
清华大学网络科学与网络空间研究院段海新教授在其2016年的《网络空间中的信任与冲突》学术报告中提出了这样一个观点:信任是网络空间安全的基石。段海新教授从互联网基础设施(路由、DNS、Web PKI)的信任模型出发,深入探讨了网络空间中的信任与冲突问题。
什么是信任:基督教中,上帝(控制权威)是万能的,虽然人们看不见他、不知道他怎么工作,但是人们相信上帝从来不干坏事,也不会犯错误。信仰者不会问为什么,只需要相信,这就是“Trust”。而在网络空间里没有明确的、固定的边界,没有集中的控制权威(上帝)。
现代科学是质疑一切没有证据的观点。然而,尽管互联网对抗各种攻击增加了许多安全机制,但许多安全机制并非依赖于完美的、可证明的理论,追根究底仍然依赖于人们之间善意的合作与信任,目前的互联网仍然依赖信任与合作才能保持其安全可靠的运行。
4. 企业信息安全技术发展的驱动力
在《企业信息安全的过去、现在和未来》一文中提出了这样的观点:
企业信息安全技术发展的驱动力主要受以下3个方面的因素的影响:
(1)攻击方技术的发展。例如,黑客有哪些新的攻击方法,防御方也会做出相应的一些应对。
(2)基础技术的发展。因为企业信息安全技术相对来说属于技术链的下游,它一般会受益于上游技术的改善,如云计算技术、大数据技术、移动计算技术,所以上游那些新的技术也会惠及下游。
(3)管理技术的发展。笼统讲叫管理的理念,如企业比较重视量化管理,作为企业信息安全的一个实现方我们也要在技术里实现这些量化管理。
4.1 2010年之前的安全技术发展 防御理念:被动式技术导向思维
基本上这个时期的信息安全是一个被动的应对姿态,有新的安全威胁基本上要过一段时间之后,短则几个月,长则好几年,才会推出相应的产品。而且有些产品之间会有一些重叠。
一直到2010年之前,安全防御技术相对来讲都是很固定的,属于见招拆招,有什么样的攻击出什么样的防御方案,所有的厂商都拼产品线的齐全程度。
4.2 2010年——APT之年 防御理念:分析而不是单纯检测、非实时、用户参与
2010年被称为APT元年,是很有趣的一年。过去喊了很多年狼来了,觉得以前常规安全防御手法都是基于特征码的,防火墙有规则,然后又各种网络包里匹配特征码,终端杀毒里有各种病毒的特征码,行业内的人都觉得这个方法不能持久。
4.3 新领域与新技术对信息安全行业的影响
1)移动互联网
从2010年开始,移动互联网就处于爆发式的扩展状态,企业很多用户可能是拿自己的iphone、iPad或者安卓手机进到企业里使用,所以这种边界就变得很模糊,以往企业可以明确地定义出应该信任哪些设备,因为设备都在他们的管控之下,设备里面装什么软件他们都一清二楚。而现在一旦开放,企业可以带各种各样自己的移动设备,这个边界就很不清楚,也没有办法控制用户iPad里面装了哪些东西。
2)物联网
物联网的产品形态更加特殊。我们知道物联网虽然是一个名词,但是其实包含很多概念,如自动驾驶联网的车,它其实也算是物联网的一个例子,小到能联网蓝牙音箱、路由器和电视机顶盒,大到工控机系统。正是因为物联网的多样化,所以目前还没有一个比较通用的方案,基本是不同小领域里的方案都各不相同。
3)云计算
云计算本身能够为安全厂商的方案提供一些新的技术思路,如安全产品是否能跟云计算框架做一个深度整合?而不像以往一样,把云计算的每台虚拟机里都布一台设备就行了。并且还有一个新的市场,我们管它叫云计算的守门员,这个产品线叫CASB,同时他还带动了另外一个比较大的领域,我们管这个领域叫自适应安全。
4)基础技术的驱动:大数据
大数据是一个比较热的跟云计算差不多同时出来的名词。这个词其实对于安全领域影响面没有那么大,因为安全领域很早就开始进行大数据收集了。
而随着Hadoop的方案比较成熟,一直到最近更好的Spark的方案成熟之后,我们就有了比较强的各种数据多样性数据的方案。包括在大数据方面可以跑类似于Spark做BI类型的分析,可以跑算法做多样性数据的整合,从里面抽出比较重要的威胁情报。在企业内部部署的数据可以做攻击链分析,这些都是由于大数据可以让我们做更复杂的多样性数据分析的典型例子。
5)基础技术的驱动:人工智能
真正对企业安全会造成比较大的改变的,我们认为是人工智能技术,因为企业安全里他们对人工智能的技术采用的时间也并不是特别短。例如,最早在2000年左右的时候,我们就已经开始用人工智能来处理垃圾邮件了。但是那个时候因为算法的限制,只能处理单一的数据。从2010年开始,我们有了第一版的GPU,能用一个性能很好的深度学习网络,我们管这个网络叫卷积神经网络。从此,我们可以用比较复杂的方案,用深度的学习做病毒样本的分类。这个方案红到基本上所有的硅谷创业公司只要是安全的都会说他用人工智能。
所有,这些新技术能使我们可以更快地开发出更复杂的产品,有个明显趋势就是很多的产品被综合了。例如,以往防火墙可能只是在IP层、UDP层或HTTP层做一些事情。后来,我们听到Palo Alto Networks他们会推荐NGFW,在一个防火墙里把什么事情都做了,把IDS的事情也做了,把沙箱的事情也做了,能做这么多的功能,他是能完成事前预测、事中检测、事后分析的一些复杂的产品。
总之,这些产品演化的共同特点就是因为大数据和其他相关技术的开源的成熟,所以会集成更多的功能,也会有更多的产品组合形态。最后或多或少都有一些基于人工智能来进行行为分析,总体来讲,他会比较重管理的功能,像大的EDR有单独的管理界面能够把整个EDR管理起来,他能让整个产品的管理更靠近这种业务形态。
6)新安全产品:大数据安全分析
还有一个提得比较多的词就是大数据安全分析,其实我们认为严格来讲他不是一个产品市场,他是一个能力。很多产品都可以有大数据安全分析能力,因为毕竟所有的安全产品后端基本都是属于大数据的。每个漏洞的一个普及情况,新的漏洞是谁发布的,哪些人在用,这也是后端大数据分析的例子。防火墙等这些杀毒软件的规则都会有大数据支撑,所以讲大数据是没有什么太大意义的。
4.4 2017—2020年:消失的边界
将来的产品形态会是什么样的?
1)以Google为例:零信任无防火墙的企业安全架构。
2)合规方的要求。
本文为风暴中心原创文章,转载请注明出处