【公益译文】如何平衡软件安全领域中的安全开发与安全运营

软件安全涉及的是如何降低软件带给使用者或软件影响人群的风险。这要求在各方面、各阶段周密考虑,积极行动,而不仅仅是在开发或使用时。这种情况下,需要一个更为全面的方案,能平衡安全开发与安全运营。糟糕的是,这两个重要领域很少互动,鲜有沟通。好消息是,人们正在积极努力,着手缩小两个领域之间的这道鸿沟。

有效解决软件安全要求安全开发与安全运营达到合理平衡(见表1所列机制)。

表1 安全开发与运营机制

安全开发机制 安全运营机制
• 有效的安全培训

• 安全策略

• 安全需求

• 安全架构与设计

• 安全编码

• 安全测试

• 渗透测试

• 风险管理

• 安全配置

• 防火墙

• 代理

• 入侵检测系统

• 入侵防护系统

• 实时数据监控

• 运营监控

• 安全事件响应

• 取证

• 防篡改机制

开发阶段的安全目标是预防导致漏洞的安全问题。在最理想的情况下,可以从源头上防止此类安全问题进入到软件。这种情况的达成要求进行如下活动:有效的安全培训、安全策略定义、安全要求规范与审核、安全架构及设计、架构风险分析。在最不理想的情况下,至少可以防止此类安全问题进入到现网系统。这种后生命周期方法一般要求进行如下活动:安全代码分析、安全测试、渗透测试。

运营阶段的安全目标是通过保护已部署系统的基础设施、配置与使用,防止系统出现安全问题。所以,最终目标是使所有的运营软件没有漏洞,彻底安全。考虑到当今软件的复杂性以及不断变化的威胁场景,实际上,没有任何软件可以说是彻底安全的,所有软件都总是处于持续的攻击风险中。除了软件运营部署初期的安全工程,大多数的安全软件运营围绕的都是持续态势感知与安全事件响应。基于对现实情况的认识,回答如下几个基本的、持续安全运营方面的问题:

  • 我们正遭受攻击吗?(我们曾遭受攻击吗?)
  • 攻击是如何进行的?
  • 攻击目标是什么?
  • 我们有哪些问题?
  • 攻击我们的是谁?
  • 我们应该如何应对以便今后防护此类攻击?

安全开发与安全运营的共通之处是都需要了解攻击者攻击软件的方法,这是两者的核心问题。尽管如此,两个领域在抽象化水平和目的等具体需求上各有不同,但又相互协同。安全开发需要从理论上了解攻击者的意图,以全面提高安全,而并非针对单个实例。安全运营需要详细掌握攻击者的具体攻击行为,以识别、了解攻击,预估其影响,规划缓解方案。安全开发提供的是自上而下视角,安全运营则是自下而上视角,两者达到平衡后,每个领域都可以解决自己的需求,同时为另一领域主要关注的问题提供重要输入(见图1)。

图1 安全开发与运营的协作方式

由于两个领域需求不同(描述攻击、交换攻击信息(可能的情况下)),要求有一个灵活机制捕捉、描述并共享攻击的普遍特征信息。常见攻击模式枚举和分类(CAPEC)(http://capec.mitre.org)规定并利用的攻击模式目标就是这样一个机制。CAPEC是一个公开的攻击模式清单,其中包含一个综合图表(Schema)和分类,旨在为软件从业者提供标准机制,用以识别、收集、细化并共享攻击模式。攻击模式的概念形成于2000年,是对现实发生的已知攻击事件进行归纳,总结出一些常见攻击方法。这类原始数据主要来源于安全运营领域,而攻击模式现在主要是安全开发人群使用的概念,用以辅助软件开发人员提高软件的安全性。

从这个角度说,攻击模式为安全开发人群在如下方面提供了独特价值:

  • 在需求获取、规范与评审阶段,提供滥用案例(攻击者如何有目的地滥用软件系统);
  • 在架构与设计阶段,将已识别的威胁匹配软件的建模攻击面,完成威胁建模工作;
  • 在实施阶段,为安全代码分析提供指导并划分优先级,包括识别特定的高风险领域,这些领域要求集中进行分析,查找最重要的缺陷;
  • CAPEC攻击模式的未来潜力并不止于在安全开发人群中的持续演进及使用。安全运营人群可以利用CAPEC感知现网系统的被攻击情况,进行及时响应与缓解。攻击模式的如下特点决定了它与安全运营息息相关:识别、规范安全测试用例,并为其划分优先级;
  • 作为渗透测试的攻击模板及红队渗透测试的客观角色描述符。
  • 提供了概括的、而非具体的软件攻击模式;
  • 安全运营的主要工作是分析具体活动,发现共性,进行抽象化,用以检测、识别、响应攻击;
  • 软件保障攻击模式就攻击方法与意图提供了自上而下的概括性上下文;
  • CAPEC攻击模式图表正在规范过程中,以提供足够多的攻击细节,将攻击情境与自下而上的安全事件分析描述对齐并结合。

攻击模式在两个领域之间搭建了一座独特、实用的桥梁,如图2所示。

图2 安全开发与运营之间的桥梁安全模式

通过使用攻击模式信息,安全开发领域将安全运营领域的知识借为己用,发挥其重要价值,实现如下目标:

  • 了解各种攻击的真实频率与成功率;
  • 识别相关攻击模式,并为其划分优先级;
  • 识别最需要规避的缺陷,并为其划分优先级;
  • 识别新的攻击模式与变体。

通过使用攻击模式信息,安全运营领域也可以从安全开发领域所获取的知识中获益。这样,安全运营人员可提供恰当的情境信息,回答基本的安全运营问题(见表2)。

表2 攻击模式可回答的安全运营问题

问题 攻击模式的作用
我们正遭受攻击吗?

(我们曾遭受攻击吗?)

攻击模式为常见攻击者行为提供了结构化描述,有助于理解观察到的运营数据,判断其是否具有恶意。
攻击是如何进行的? 攻击模式为常见攻击者行为提供了详细的结构化描述,有助于理解观察到的运营数据,准确判断攻击类型。
攻击目标是什么? 攻击模式元素概述了攻击者动机与潜在攻击影响,可用于帮助将观察到的攻击行为与攻击者潜在意图对应起来。
我们有哪些问题? 攻击模式的结构细节与缺陷映射可在观察到某种攻击模式行为时帮助用户定位问题,确定问题细节。
攻击我们的是谁? 攻击模式威胁描述与具体的攻击实施流程为梳理实际攻击数据提供了框架,有助于定位攻击者。
我们应该如何应对以便今后防护此类攻击? 攻击模式为解决方案与缓解方法提供了指导性建议,可有效提升对某一特定模式攻击的容忍度及/或恢复能力。

目前正在进行的CAPEC演进工作包括合并、优化较具体的攻击属性与特征,以更好地支持两个领域的自动融合。工作中重点关注的是改进攻击模式描述,提供更多的攻击实施流程细节。同时,新增了两个概念:目标攻击面可观察物

目标攻击面旨在为目标软件中攻击企图利用的部分提供结构化描述。这种细节对于运营来说很有价值,通过将观察到的影响与目标软件资产和资源对应起来,可协助检测、识别、描述攻击。目前的草图(见图3)主要用于描述功能性业务、协议、命令结构等。后续图表修改后会将概念性构造进行扩展,覆盖更多的攻击面特征。

图3 CAPEC–概要攻击面草图图3及图4用Altova XMLSpy软件绘制)

图4 CAPEC–可观察物草图

可观察物旨在获取、描述运营领域可以观察到的事件或特性。这些可观察事件或特性可根据需要补充攻击模式,将逻辑模式构造与现实攻击发生的证据关联起来。这个构造有可能会成为两个领域间最重要的桥梁,因为它将运营领域汇总的可观察物的详细对应关系与开发领域中累积的较为概括的攻击者方法、动机与能力知识进行了结合。用结构化方式呈现信息的目的是未来可以进行详细的自动映射与分析推断。

目前的可观察物草图(见图4)是对攻击模式图表中的攻击步骤攻击步骤技术攻击步骤结果攻击步骤安全控制元素的补充。它关注的是对具体可观察措施、价值、传感器情境的描述,以及可观察物是否准确,是否易于混淆。未来经过修改会充实该构造,覆盖其他相关方面。修改将基于运营人群与其他需要该构造的知识标准化项目(如通用事件枚举CEE与恶意软件属性枚举与表征MAEC)的输入与协作。

有意了解更多CAPEC、CEE与MAEC信息及其他相关知识标准化工作的人可登陆“可度量安全”(Making Security Measurable)网站(http://msm.mitre.org)和软件保障社区资源与信息交换中心网站(https://buildsecurityin.uscert.gov/swa),一方面加深认识,另一方面可加入到相关社区,进行相关协作。

软件防护应用

国防部及其支撑防护行业已将网络安全视为现今及未来急需解决的首要问题之一。这场战斗中的网络安全战目前的战场主要有两个:安全开发与安全运营,而这两个领域鲜有配合。本文讨论了这两个领域各自的目标与活动以及两者的共通之处:都需要了解攻击者的意图。最重要的是,将攻击模式作为资源来描述这种共通性,以其为桥梁,协调安全开发与安全运营人群,促其合作,具有实用性与可操作性。了解攻击模式,认识到攻击模式对于统一软件安全方法的重要性,对于所有研究DoD软件的人来说都应该是必备知识。

总结

有效的软件安全要求在安全开发与安全运营间达到平衡。这两个领域的共通之处是了解攻击者攻击软件的方法,这是两者的核心问题。CAPEC攻击模式为常见攻击提供了结构化描述方法,可在两个领域间有效交换相关信息,同时将具体的观察结果与概括的情境信息关联,惠及双方。

CAPEC目前主要在安全开发人群中使用,但是安全运营人群有机会也有必要进行更多的配合。这会推动CAPEC的发展与成熟,使其更好地满足两个人群的需要,并且,作为两个领域间的桥梁,更全面地提升软件安全能力。

欢迎这两个领域的读者踊跃加入我们,积极贡献自己的知识与观点,共同促进软件安全。

免责声明

本文原文来自于互联网的公共方式,由“安全加”社区出于学习交流的目的进行翻译,而无任何商业利益的考虑和利用,“安全加”社区已经尽可能地对作者和来源进行了通告,但不保证能够穷尽,如您主张相关权利,请及时与“安全加”社区联系。
“安全加”社区不对翻译版本的准确性、可靠性作任何保证,也不为由翻译不准确所导致的直接或间接损失承担责任。在使用翻译版本中所包含的技术信息时,用户同意“安全加”社区对可能出现的翻译不完整、或不准确导致的全部或部分损失不承担任何责任。用户亦保证不用做商业用途,也不以任何方式修改本译文,基于上述问题产生侵权行为的,法律责任由用户自负。

更多内容,请下载附件:The Balance of Secure Development and Secure Operations in the Software …

如果您需要了解更多内容,可以
加入QQ群:570982169
直接询问:010-68438880

Spread the word. Share this post!

Meet The Author

Leave Comment