软件安全:从源头开始
作者 : (美)詹姆斯·兰萨姆(James Ransome) 安莫尔·米斯拉(Anmol Misra)著
译者 : 丁丽萍 卢国庆 李彦峰 穆海蓉 曹原野 译 宋宇宁 审校
丛书名 : 计算机科学丛书
出版日期 : 2016-08-16
ISBN : 978-7-111-54023-6
定价 : 69.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 206
开本 : 16
原书名 : Core Software Security: Security at the Source
原出版社: Taylor & Francis -CRC Press
属性分类: 教材
包含CD :
绝版 :
图书简介

本书阐述什么是人类可控制管理的安全软件开发过程,给出一种基于经验的方法,来构建最好用的安全软件开发模型,以应对安全问题,并在安全软件开发模型中解决安全问题。本书分为三部分,共10章。第1章简要介绍软件安全领域的主题及其重要性;第2章讲解软件安全的难点以及SDL框架。第3~8章揭示如何将SDL及其最佳实践映射到一个通用的SDLC框架。第9章从资深软件安全架构师的角度给出关于成功方案的看法,并且解读在开发安全软件时针对典型挑战的一些真实方法。第10章结合现实世界中的安全威胁,描述如何用合理的架构设计、实现与管理的SDL程序来提高安全性。

图书特色

这本引人入胜的书使得读者可以在各种规模的软件开发和工程组织中构建安全的产品。本书向高管人员阐述了关于软件安全性应该做出的决策,并向经理和开发人员提供过程方面的指导,使读者可以应用牢固的解决方案来抵制网络威胁。
—— Dena Haritos Tsamitis博士,卡内基梅隆大学信息网络学院主任和CyLab教育主任
本书是软件安全专家的权威指南。两位作者巧妙地勾勒出把安全性整合到安全软件开发过程中的程序和策略,以及为什么安全需要以软件和相关开发人员为中心……在网络战争最前线的人(特别是软件开发人员和相关同事)必须具备安全意识。
—— Colonel Cedric Leighton,美国退役空军,Cedric Leighton Associates创始人&总裁
在云计算和移动应用程序兴起之后,软件安全问题从来没有比现在更重要。本书是安全专家、软件开发人员和软件工程师的必读书目。作者出色地提供了通用的方法,以实现强大的软件安全态势。
—— Larry Ponemon博士,Ponemon研究所主席&创始人
软件安全的根源在于软件开发人员开发的源代码。因此,安全应该以开发人员为中心,注重源代码的安全开发。本书揭示了将安全构建到整个软件开发生命周期中的方法和过程,使得软件在源头就是安全的!
—— Eric S. Yuan,Zoom视频通信有限公司创始人&CEO

作者简介
詹姆斯·兰萨姆(James Ransome) 产品安全方面的高级总监,全面负责McAfee产品安全项目。他职业生涯的起点是在私人和公共行业担任领导职务,其中包括三个首席信息安全官(CISO)和四个首席安全官(CSO)的职务。在进入企业领域前,他有23年服务于政府,包括支持美国情报界、联邦执法和国防部的各种角色。James拥有信息系统的博士学位,是多本信息安全书籍的作者。James是计算机与信息学科国际荣誉协会Upsilon Pi Epsilon的成员,同时还是注册信息安全经理(CISM)、信息系统安全认证专家(CISSP)和波耐蒙研究所(Ponemon Institute)的杰出研究员。
安莫尔·米斯拉(Anmol Misra) 信息安全专家和资深安全专业人士。他的专长包括移动和应用安全、漏洞管理、应用和基础设施的安全评估和安全代码审查。他在思科公司信息安全组担任项目经理,主要负责制定与实施安全策略和方案,以推动安全最佳实践纳入到思科主导的产品的各个方面。加入思科之前,Anmol是安永会计事务所的高级顾问,给财富500强客户提供定义和改进信息安全计划和实践的咨询服务。他帮助企业降低IT安全风险,并通过改善其安全状况使其遵从法规。Anmol拥有卡内基梅隆大学信息网络硕士学位和计算机工程工学学士学位。

图书前言

软件驱动机器的时代在过去的几年里取得了飞跃式的发展。战斗机飞行员、股票交易所场内交易员、医生、工业生产者和发电厂运营商等专业人员的工作对武器系统、医疗系统以及国家基础设施关键要素的运行至关重要,而这些行业已经或正在迅速地被软件接管。这是革命性的一步。从前必须要人类大脑完成的复杂的、非重复性的任务,现在已经被软件驱动程序控制的机器大脑和神经系统所取代。这种变化体现在政府、军队、罪犯、活动家和其他对手可以尝试破坏、修改或影响国家基础设施的改变,也体现在社会和文化方式的转变。同样,这种变革对企业也是有一定影响的,比如,这些年来我们看到的越来越多的网络商业间谍案件。以前的大规模军队、昂贵和毁灭性的武器系统与平台、武装抢劫、信息窃取、暴力抗议活动和武装叛乱很快被所谓网络战、网络犯罪和网络行为所替代。
这些网络方法可能最终就像之前使用的技术一样产生深远的影响,而潜在的软件漏洞如果被利用,则可能会导致以下问题。
全部或部分基础设施被中断,包括电网、核电站、通信介质和应急系统。
化工厂被用于产生大规模的爆炸和剧毒云。
远程控制、修改或破坏关键的武器系统或平台。
导致监控系统被篡改或不可用。
经济剥削或讹诈犯罪。
操控金融市场和投资。
通过改变医疗支持系统或设备、手术计划或药物处方来实施谋杀或伤害人体健康。
通过网站毁损或底层Web应用的关闭和破坏修改自动投票软件、进行敲诈勒索或导致品牌信用降级,从而产生政治暴动或者导致一些人群的特殊利益受到影响。
网络方法的一个副作用就是提供给我们以之前想都不敢想的大规模、远程和匿名方式解决上述问题的能力。这一能力是在受到司法保护的位置通过远程探测和入侵的方式解决上述问题。同时,这也赋予了政府、犯罪集团和活动家特殊的能力,包括代理主要犯罪人用于逃避责任、避免接受检测和规避政治后果。
虽然有很多关于网络安全的宣传,但真正的致命弱点是(不安全的)软件。这些软件提供总体控制或变更如上所述的一个目标的潜在能力。软件安全的关键性在于,我们迅速步入了新的时代,从前被忽视的关于人类思维被软件驱动机器所替代的这件事也不容小觑。正是出于这个原因,我们撰写了这本书。与此相反,在可预见的将来,软件程序将继续由人类编写。这也意味着,新的软件将继续构建在遗留代码或软件之上,而这些遗留代码在编写时安全还不被重视或者是在复杂攻击盛行之前编写的。只要人类写程序,成功的关键就是保障有关计划的实施,使得软件开发项目的过程更加高效和有效。尽管本书的方法包括软件安全人员、软件安全流程和软件安全技术方法,但是我们认为在软件安全中人是最重要的组成部分,原因是软件的开发、管理、使用都是由人来完成的。以下是软件安全性的逐步实施过程,该过程与当今的技术、运营、业务和开发环境相关,并且强调人可以做什么去控制和管理流程的最佳实践与度量方式。我们将永远面临安全问题,但是本书有助于在软件最终发布或部署时尽量减少安全问题。希望你能喜欢我们的书,就像我们喜欢写它一样。
本书内容
本书讲述关乎当今科技、运作、商业及开发环境的软件安全过程。作者着重讲述什么是人类可控制、管理的安全软件开发过程,并用一种较好的实践方式和度量方式来表达。虽然安全问题将会始终存在,但是本书将教你如何将公司的能力最大化,同时在软件发布前将软件被攻击的概率最小化,以及如何将安全构建融入开发过程之中。作者拥有世界五百强公司的工作经历,目睹过一定数量的软件安全开发生命周期(SDL)故障。本书采用一种基于经验的方法,来构建最好用的SDL模型,以应对前面提到的问题,并在SDL安全软件开发模型中得到解决。本书开篇概要介绍SDL,然后讲解将SDL实践方法映射到SDL模型,同时解释如何运用此模型来建立并管理成熟的SDL程序。虽然安全并不是近些年业界编写软件过程中的天然组成部分,但是,作者相信,将安全开发加入到软件开发中将是可能的、可行的,也是切实必要的。作者同时认为,本书中提到的软件安全实例以及模型将给所有读者留下清晰的印象,无论是经理还是主管或是从业人员都将在其中获益。
读者对象
本书面向任何对企业级软件安全感兴趣的人,包括产品安全和质量主管、软件安全架构师、安全顾问、软件开发工程师、企业SDLC项目经理、首席信息安全官、首席技术官和首席隐私官。如果你想了解在企业级软件开发过程中是如何实现软件安全的,本书将是一本不可错过的好书。
本书结构
本书分为三部分,共10章。第1章简要介绍软件安全领域的主题及其重要性。第2章讲述软件安全的难点以及SDL框架。第3~8章讲述如何将SDL及其最佳实践映射到一个通用的SDLC框架。根据第3~8章描述的解决方案,第9章叙述一个老练的软件安全架构师关于成功方案的看法,并解读在开发安全软件时针对典型挑战的一些真实方法。第10章结合现实世界中的安全威胁,描述我们如何用合理的架构设计、实现与管理的SDL程序来提高安全性。
假设
本书假设读者了解基本的软件开发过程(方法论)以及基本的安全概念。建议对SDL、不同种类的安全测试,以及安全架构有所了解,但是不作要求。对于大部分主题,在深入探讨具体问题前,我们会循序渐进地介绍相关知识。
致谢
写书就像旅行,如果没有导师、朋友、同事还有家人的支持,它将无比困难。在写作过程中很多人给予了我帮助。首先,我们要感谢CRC出版社John Wyzalek编辑的耐心帮助、支持以及贡献。我们还要感谢DerryField Publishing产品组的Theron Shreve、Lynne Lackenbach和Marje Pollack。
我们都要感谢Hon. Howard A. Schmidt(Ridge Schmidt Cyber合伙人;SAFECode执行董事;联邦政府总统及网络安全司前特别助理),并感谢Dena Haritos Tsamitis(网络信息研究所主管;卡耐基梅隆大学CyLab实验室教育、训练、外展主管)对项目的支持。我们同样要感谢Brook Schoenfield对项目的帮助。感谢他加入团队并证明有另一种不同于现有方法的软件安全架构、部署和管理方法,同时感谢他撰写了本书第9章。我们要感谢整个网络安全社区,我们属于其中的一员并以此为荣。最后我们衷心感谢这些年所有共事并合作过的人。
—James Ransome和Anmol Mistra

借此机会,我真心感谢我的妻子Gail。感谢她的耐心和理解,也感谢她在初步校对中的工作。特别要感谢的是我的合作者Anmol Misra。他作为合作者加入我们关键消息的开发已经三年多了,并且一并完成了这本书。另一位要特殊感谢的是Howard Schmidt。感谢他为本书作序。我们彼此分享做实干者的热情。最后和各位读者分享Walter Bagehot的一句话:“生命里最快乐的事就是做别人声称做不成的事。”
—James Ransome

多年来许多人指导并帮助过我。我想感谢所有这些人,可惜篇幅有限。你知道我说的是谁,我想感谢他们的耐心、鼓励与支持。我要感谢我的合作者James Ransome。多年来他一直是我的良师益友。他对我的帮助无法言表。最后我想借此机会感谢我的家人:妈妈、爸爸、Sekhar、Anupam和Mausi。没有他们无私的支持和爱护,我是不可能完成任何事情的。他们曾经问我在写完这本书后是否能休假,是否能有一个“正常”的日程安排。我想说,我会的,现在就会。希望如此。
—Anmol Misra

上架指导

计算机\安全

封底文字

这本引人入胜的书使得读者可以在大小型软件开发和工程组织中构建安全的产品。本书向高管人员阐述了关于软件安全性应该做出的决策,并向经理和开发人员提供过程方面的指导。读者应用牢固的解决方案来抵制网络威胁。
——Dena Haritos Tsamitis博士,卡内基梅隆大学信息网络学院主任和CyLab教育主任
本书是软件安全专家的权威指南。Ransome、Anmol Misra和Brook Schoenfield三位博士巧妙地勾勒出把安全性整合到安全软件开发过程中的程序和策略,以及为什么安全需要以软件和相关开发人员为中心……在网络战争最前线的人(特别是软件开发人员和相关同事)必须具备安全意识。
—— Colonel Cedric Leighton,美国退役空军,Cedric Leighton Associates创始人&总裁
在云计算和移动应用程序兴起之后,软件安全问题从来没有比现在更重要。本书是安全专家、软件开发人员和软件工程师的必读书目。作者出色地提供了通用的方法,以实现强大的软件安全态势。
—— Larry Ponemon博士,Ponemon研究所主席&创始人
软件安全的根源在于软件开发人员开发的源代码。因此,安全应该以开发人员为中心,注重源代码的安全开发。本书给出了一个神奇的公式——将安全构建到整个软件开发生命周期中的方法和过程,使得软件在源头就是安全的!
—— Eric S. Yuan,Zoom视频通信有限公司创始人&CEO

作者简介

(美)詹姆斯·兰萨姆(James Ransome) 安莫尔·米斯拉(Anmol Misra)著:詹姆斯•兰萨姆(James Ransome)
产品安全的高级总监,全面负责McAfee产品安全项目。他职业生涯的特点是在私人和公共行业担任领导职务,其中包括三个首席信息安全官(CISO)和四个首席安全官(CSO)的职务。在进入企业世界前,他有23年服务于政府,包括支持美国情报界、联邦执法和国防部的各种角色。James拥有信息系统的博士学位,是多本信息安全书籍的作者。James是计算机与信息学科国际荣誉协会Upsilon Pi Epsilon的成员,同时还是注册信息安全经理(CISM)、信息系统安全认证专家(CISSP)和波耐蒙研究所(Ponemon Institute)的杰出研究员。
安莫尔•米斯拉(Anmol Misra)
作家和拥有广泛的信息安全领域经验的安全专业人士。他的专长包括移动和应用安全、漏洞管理、应用和基础设施的安全评估和安全代码审查。他在思科公司信息安全组担任项目经理,主要负责制定和实施安全策略和方案,以推动安全最佳实践纳入到思科主导的产品的各个方面。加入思科之前,Anmol是安永会计事务所的高级顾问,给予500强客户提供定义和改进信息安全计划和实践的咨询服务。他帮助企业降低IT安全风险,并通过改善其安全状况使其遵从法规。Anmol拥有卡内基-梅隆大学获得信息网络硕士学位和计算机工程工学学士学位。

译者简介

丁丽萍 卢国庆 李彦峰 穆海蓉 曹原野 译 宋宇宁 审校:暂无简介

译者序

一直以来,无论是系统软件还是应用软件,人们在其开发过程中都很少关注安全问题。总是在软件上线后,发现或者被发现了安全问题才意识到有需要解决的安全问题。于是,一个补丁接一个补丁地弥补。用一段时间以后,软件已经补丁摞补丁,而安全问题依然层出不穷。如果开发人员不了解软件安全的基本概念和问题,不了解安全设计的基本方法,不知道安全漏洞的类型有哪些,不能设计出针对安全性的测试用例,就写不出安全可靠的代码,软件的安全就无从谈起。为此,本书作者提出了软件核心安全的根本在于把安全贯穿于软件开发过程的始终,对于安全开发生命周期(Security Development Lifecycle)的概念和模型进行了详细的分析阐述。
本书旨在让软件开发人员把安全理念贯穿于软件开发过程中,对软件的安全需求进行认真分析,把安全融入软件的概要设计和详细设计中,从而写出具有安全防护功能的代码,设计包含针对常见安全漏洞的测试用例,构建安全的运行环境。最终,从源头上关注软件安全,提高软件自身的安全性,减少安全漏洞带来的损失,降低软件安全开发的成本。
由于时间仓促,本书的译文难免有错误和不足之处,恳请广大读者批评指正。

丁丽萍
2016年7月9日于北京

图书目录

出版者的话

前言
作者简介
第1章 引论 1
1.1 软件安全的重要性和相关性 1
1.2 软件安全和软件开发生命周期 4
1.3 代码的质量与安全 6
1.4 SDL三个最重要的安全目标 6
1.5 威胁建模和攻击面验证 7
1.6 本章小结:期望从本书中学到什么 8
参考文献 8
第2章 安全开发生命周期 11
2.1 克服软件安全中的挑战 11
2.2 软件安全成熟度模型 12
2.3 ISO/IEC 27034:信息技术、安全技术、应用安全 13
2.4 其他SDL最佳实践的资源 14
2.4.1 SAFECode 14
2.4.2 美国国土安全软件保障计划 14
2.4.3 美国国家标准与技术研究院 15
2.4.4 MITRE公司公共计算机漏洞和暴露 16
2.4.5 SANS研究所高级网络安全风险 17
2.4.6 美国国防部网络安全与信息系统信息分析中心 17
2.4.7 CERT、Bugtraq和SecurityFocus 17
2.5 关键工具和人才 17
2.5.1 工具 18
2.5.2 人才 19
2.6 最小特权原则 21
2.7 隐私 22
2.8 度量标准的重要性 22
2.9 把SDL映射到软件开发生命周期 24
2.10 软件开发方法 28
2.10.1 瀑布开发 28
2.10.2 敏捷开发 29
2.11 本章小结 31
参考文献 31
第3章 安全评估(A1):SDL活动与最佳实践 35
3.1 软件安全团队提早参与项目 35
3.2 软件安全团队主持发现会议 37
3.3 软件安全团队创建SDL项目计划 37
3.4 隐私影响评估计划启动 38
3.5 安全评估(A1)成功的关键因素和度量标准 41
3.5.1 成功的关键因素 41
3.5.2 可交付成果 43
3.5.3 度量标准 44
3.6  本章小结 44
参考文献 44
第4章 架构(A2):SDL活动与最佳实践 46
4.1 A2策略一致性分析 46
4.2 SDL策略评估和范围界定 48
4.3 威胁建模/架构安全性分析 48
4.3.1 威胁建模 48
4.3.2 数据流图 50
4.3.3 架构威胁分析和威胁评级 53
4.3.4 风险缓解 65
4.4 开源选择 68
4.5 隐私信息收集和分析 69
4.6 成功的关键因素和度量标准 69
4.6.1 成功的关键因素 69
4.6.2 可交付成果 70
4.6.3 度量标准 70
4.7 本章小结 71
参考文献 71
第5章 设计和开发(A3):SDL活动与最佳实践 74
5.1 A3策略一致性分析 74
5.2 安全测试计划构成 74
5.3 威胁模型更新 81
5.4 设计安全性分析和检查 81
5.5 隐私实现评估 83
5.6 成功的关键因素和度量标准 85
5.6.1 成功的关键因素 85
5.6.2 可交付成果 86
5.6.3 度量标准 87
5.7 本章小结 88
参考文献 88
第6章 设计和开发(A4):SDL活动与最佳实践 90
6.1 A4策略一致性分析 90
6.2 安全测试用例执行 92
6.3 SDLC/SDL过程中的代码审查 94
6.4 安全分析工具 97
6.4.1 静态分析 99
6.4.2 动态分析 101
6.4.3 模糊测试 103
6.4.4 人工代码审查 104
6.5 成功的关键因素 106
6.6 可交付成果 107
6.7 度量标准 107
6.8 本章小结 108
参考文献 108
第7章 发布(A5):SDL活动与最佳实践 111
7.1 A5策略一致性分析 111
7.2 漏洞扫描 113
7.3 渗透测试 114
7.4 开源许可审查 116
7.5 最终安全性审查 117
7.6 最终隐私性审查 119
7.7 成功的关键因素 120
7.8 可交付成果 121
7.9 度量标准 122
7.10 本章小结 122
参考文献 124
第8章 发布后支持(PRSA1~5) 125
8.1 合理调整软件安全组 125
8.1.1 正确的组织定位 125
8.1.2 正确的人 127
8.1.3 正确的过程 127
8.2 PRSA1:外部漏洞披露响应 130
8.2.1 发布后的PSIRT响应 130
8.2.2 发布后的隐私响应 133
8.2.3 优化发布后的第三方响应 133
8.3 PRSA2:第三方审查 134
8.4 PRSA3:发布后认证 135
8.5 PRSA4:新产品组合或云部署的内部审查 135
8.6 PRSA5:安全架构审查和基于工具评估当前、遗留以及并购的产品和解决方案 136
8.6.1 遗留代码 136
8.6.2 兼并和收购 137
8.7 成功的关键因素 138
8.8 可交付成果 139
8.9 度量标准 140
8.10 本章小结 140
参考文献 140
第9章 将SDL框架应用到现实世界中 142
9.1 引言 142
9.2 安全地构建软件 145
9.2.1 编写安全的代码 146
9.2.2 人工代码审查 149
9.2.3 静态分析 150
9.3 确定每个项目的正确行为 153
9.4 架构和设计 161
9.5 测试 167
9.5.1 功能测试 168
9.5.2 动态测试 168
9.5.3 攻击和渗透测试 171
9.5.4 独立测试 172
9.6 敏捷:冲刺 172
9.7 成功的关键因素和度量标准 175
9.7.1 安全编码培训计划 175
9.7.2 安全编码框架(API) 175
9.7.3 人工代码审查 176
9.7.4 独立代码审查和测试(专家或第三方) 176
9.7.5 静态分析 176
9.7.6 风险评估法 176
9.7.7 SDL和SDLC的集成 176
9.7.8 架构人才的发展 176
9.8 度量标准 177
9.9 本章小结 177
参考文献 178
第10章 集成:应用SDL防止现实的威胁 180
10.1 战略、战术和特定于用户的软件攻击 180
10.1.1 战略攻击 181
10.1.2 战术攻击 182
10.1.3 特定于用户的攻击 182
10.2 应用适当设计、管理和集中的SDL克服组织与业务挑战 182
10.3 软件安全组织的现状和影响力 183
10.4 通过合理的政府管理克服SDL审计和法规挑战 183
10.5 软件安全的未来预测 184
10.5.1 坏消息 184
10.5.2 好消息 185
10.6 总结 185
参考文献 186
附录 关键的成功因素、可交付成果、SDL模型每个阶段的指标 189

教学资源推荐
作者: David Challener;Kent Yoder;Ryan Catherman;David Safford;Leendert Van Doorn
作者: 沈晴霓 卿斯汉 等编著
作者: [美]理查德 E. 布拉胡特(Richard E. Blahut)著
参考读物推荐
作者: 曹玉杰 王乐 李家辉 孔韬循 编著
作者: [美] 斯拉瓦尼·巴塔查尔吉(Sravani Bhattacharjee) 著
作者: 谢兆国 张秋圆 著
作者: 吴世忠 李斌 张晓菲 梁洪亮 著