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

日期: 2016-09-21 作者:Shon Harris翻译:邹铮 来源:TechTarget中国

接上阅读《关于软件开发安全的CISSP秘籍(一)》 平衡安全和功能 开放和分布式环境可能同时在使用传统技术和新技术,以及企业内部网络和业务合作伙伴外网,还要保持在互联网的电子商务业务–这些情况都带来很多安全挑战。然而,我们可以通过在不同技术层面分层部署安全控制以更好地保护这些系统。作为防守的最后壁垒,部署在系统和应用层面安全控制应该尽可能严格。 软件开发安全让软件供应商面临着很多挑战和压力,这通常导致他们未能将安全构建到软件产品。

对于CISSP考试,考生应该深入了解决策过程以及过于依靠基于环境的安全设备而不是从一开始构建适当水平的安全性到产品中所带来的危害。 大多数商业应用都有内置……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

接上阅读《关于软件开发安全的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和犯罪软件等。

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

作者

Shon Harris
Shon Harris

暂无

翻译

邹铮
邹铮

相关推荐

  • 敏捷开发时代:软件安全测试需更灵活

    持续的测试方法已经日益重要,其动态性就像新的开发过程一样。幸运的是,企业越来越明白这种不断增长的需要,并且重新思考整个过程……

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

    对于软件问题,最好的办法是在一开始构建软件开发安全流程。然而,软件程序通常将功能摆在首位,而不是安全性。而其实,从一开始将安全构建到每个软件中要比随后增加安全性更为有效。

  • 为何Java序列化漏洞并未被修复?

    据我所知,Java序列化漏洞一年多前已被披露,它由一位安全研究人员在PayPal的服务器中发现。那么,这是个什么样的漏洞,为什么它还未被修复?攻击者是如何利用它的?

  • 构建安全应用程序架构必须考虑的十二问

    应用程序的架构检查是指检查应用程序架构中当前的安全控制。这种检查有助于用户在早期确认潜在的安全漏洞,并在开始开发之前就极大地减少漏洞。