关于软件开发安全的CISSP秘籍(二)

安全
在这篇有关信息系统认证安全专家(CISSP)考试软件开发安全领域的文章中,笔者将探讨如何构建软件程序;哪些安全机制和战略可用于保护在访问、处理和存储过程中的数据;以及软件开发安全的常见威胁及应对方法。

[[172520]]

接上阅读《关于软件开发安全的CISSP秘籍(一)》

平衡安全和功能

开放和分布式环境可能同时在使用传统技术和新技术,以及企业内部网络和业务合作伙伴外网,还要保持在互联网的电子商务业务--这些情况都带来很多安全挑战。然而,我们可以通过在不同技术层面分层部署安全控制以更好地保护这些系统。作为防守的最后壁垒,部署在系统和应用层面安全控制应该尽可能严格。

软件开发安全让软件供应商面临着很多挑战和压力,这通常导致他们未能将安全构建到软件产品。对于CISSP考试,考生应该深入了解决策过程以及过于依靠基于环境的安全设备而不是从一开始构建适当水平的安全性到产品中所带来的危害。

大多数商业应用都有内置安全控制,尽管直到最近供应商才开始在默认情况中设置安全性。这迫使用户做出风险决策来降低其安全保护,而不是采用供应商推荐的水平。虽然这些做法在开始会让用户觉得麻烦,但日益增加的全球威胁级别不仅提高了商业供应商的责任,也提高了用户部分的意识和责任。

然而,构建安全软件的经济学可能涉及系统安全和功能之间的权衡。虽然很多业内人士担心当今软件安全不安全,但客户对功能的要求仍然超过安全需求。而与此同时,攻击者的技术日益纯熟,整个行业有义务寻求新的方法来发现罕见条件下的系统漏洞,并修复这些漏洞以防止它们被恶意利用。

安全构建软件程序取决于我们在每个开发阶段提升可视性和安全优先级的能力。早在项目启动阶段,我们就可以开始根据业务需求、责任风险和投资限制来制定安全目标。在整个需求和设计阶段,我们可系统地发现隐藏的功能和架构缺陷。然后,我们可在架构和测试阶段部署检查方法和自动化,以根除哪些已知编码缺陷或故障情况。在每个决策点,决策人员都应该根据风险分析来了解他们需要接受的风险,作为更低价格、更快进入市场、增加功能或提高可用性的权衡。通过使用针对安装和管理的操作清单,以及通过运用严格的变更控制方法,软件供应商可确保其产品可同时满足用户需求以及企业安全标准--不管是现在还是未来。

漏洞识别做法应该构建到应用开发过程,这包括:

  • 攻击面分析:识别和减少可由不受信任用户访问的代码数量
  • 威胁建模:这个系统性方法用于了解不同的威胁如何被执行以及成功的攻击如何发生
  • 静态分析:这个调试技术会检查代码而不会执行程序,在程序编译前执行程序。
  • Fuzzing技术:用于发现软件漏洞和缺陷。

能力成熟度集成模型(CMMI)是一种过程改进模型,它为增量式软件开发改进提供了途径。这种模型采用数字1到5来代表工艺质量和优化的成熟度等级:1=初始,2=受管理,3=已定义,4=受量化管理,5=优化。

CMMI可对应软件开发生命周期的不同阶段,包括概念定义、需求分析、设计、开发、集成、安装、操作和维护,以及在每个阶段会发生什么。它可用于评估安全工程实践以及发现改进做法。它还可用于客户评估软件供应商。在理想情况中,软件供应商可使用该模型来改进其流程,而客户可使用该模型评估供应商的做法。

编程语言和分布式计算

在简要介绍编程开发后,这部分CISSP章节涉及面向对象的编程、代码块作为类对象的封装以及如何改变和重用这些对象。在创建应用设计时,该应用的数据使用被建模,数据路径被分析。这部分主要关注对象的原子性--其凝聚力和耦合特性,因为这将提高它们可安全更新的容易程度。

软件编程语言已随着时间推移而演变,主要包括以下:

  • 第一代:机器语言
  • 第二代:汇编语言
  • 第三代:高级语言
  • 第四代:非常高级语言
  • 第五代:自然语言

每一代都增加了编程语言的能力,每种编程语言都有自己的安全问题,安全专业人员必须了解这一点。

本章节涵盖数据从应用导入和导出的方式,还有确保组件通信(COM、DCOM)标准和技术的有效性、不同系统(ORB、CORBA、ODBC、DDE)之间数据无缝交换以及在本地应用(OLE)外对数据访问,以及围绕每种使用的安全问题。

本部分还将涵盖面向服务的架构(SOA),它同时提供很多不同应用对最需要的服务的标准访问。SOA内的服务通常通过Web服务提供,这让基于Web的通信可无缝进行--使用简单对象访问协议(SOAP)、HTTP、Web服务描述语言(WSDL)、通用描述、发现和集成(UDDI)以及可扩展标记语言(XML)等基于Web的标准。

另外还有服务器端包含、客户端验证、跨站脚本以及参数验证等Web安全问题,以及每种漏洞类型的应对方法。

数据库技术

数据库包含开展业务、指导业务战略以及证明业务绩效历史的数据。在这个方面,考试内容包括数据库管理软件,以及不同类型数据库模型概述。数据库模型定义了不同数据元素之间的关系,决定了数据如何被访问,并定义了可接受的操作、提供的完整性类型以及数据如何组织。数据库模型还提供了正式的方法以概念形式表示数据,并提供操纵数据库中数据的必要方法。主要有几种类型的模型:

  • 关系型
  • 分层型
  • 网络型
  • 面向对象型
  • 对象关系型

关系型数据需要深入了解,包括如何在数据字典中表示和使用模式、它如何应用到安全中、主键和外键如何关联、检查站和保存点如何运作,以及如何维护数据集的完整性--这是确保数据不会遗落在模式外或安全控制外的关键。

如果数据不能被访问和使用,数据则失去作用;应用需要能够获取和使用数据库中的信息,它们还需要某种类型的接口和通信机制,该领域主要包含这些接口语言:

  • 开放数据库连接(ODBC)
  • 对象链接和嵌入数据库(OLE DB)
  • ActiveX数据对象(ADO)
  • Java数据库连接(JDBC)

这部分CISSP包含数据库安全问题,包括并发保护、回滚功能、两阶段提交、检查站,以及聚合和推理保护。安全稳定的数据库提供ACID特性:

  • 原子性--对数据库的更改生效
  • 一致性--传输必须符合定义的完整性限制
  • 隔离--在传输完成前,用户或流程无法查看传输
  • 持久性--当传输发生时,即是永久性

数据仓库(不同数据集聚合)和数据集市(数据仓库子集副本)构成同样的挑战,对这些系统付出的努力和成本让它们产生的元数据对企业非常有价值,这也需要高层次的保护水平。

另外,为最佳安全性管理数据系统的战略也进行了讨论,主题包括如何使用安全观点来执行安全政策、内容和背景信息推动的访问控制战略、汇聚和推理攻击带来的挑战,以及采用迂回战术(蜂窝抑制、噪音和干扰等)

安全威胁和应对方法

在这部分的CISSP中,考试准备工作包括了解影响应用及系统的最常见威胁攻击以及它们如何执行。这些常见威胁包括:拒绝服务、定时攻击、病毒、蠕虫、Trojan木马、rootkit和犯罪软件等。

专家系统和人工神经网络等采用人工智能的先进系统可帮助发现不同信息块之间的关联,并可发现网络流量或应用中可能表明攻击的异常模式。

责任编辑:赵宁宁 来源: TechTarget中国
相关推荐

2016-09-28 19:16:36

软件开发安全CISSPSDLC

2009-03-30 16:01:54

敏捷开发需求分析重构

2012-08-06 11:08:14

2010-08-30 12:08:05

2020-12-26 15:55:02

软件开发数字化转型COVID-19

2024-02-23 11:13:35

2022-08-30 18:46:24

安全软件开发测试软件

2012-07-16 14:35:19

2012-07-17 09:36:45

2022-01-25 10:57:47

自动驾驶智能汽车

2009-02-10 17:11:53

SaaSSaaS开发PaaS

2015-03-02 09:35:07

软件开发

2010-06-24 16:18:13

2016-10-18 10:57:03

2023-05-16 17:34:49

ZOMBIES软件开发

2022-07-19 16:31:29

软件开发Kubernetes容器

2020-06-24 11:21:47

软件开发面试

2017-03-17 08:15:17

敏捷软件开发软件开发

2012-06-18 09:34:14

2018-07-09 11:00:56

软件架构设计模式
点赞
收藏

51CTO技术栈公众号