《软件安全》简介
《软件安全》这本书是由.徐国胜,张淼,徐国爱编著创作的,《软件安全》共有148章节
1
序
作为最新的国家一级学科,由于其罕见的特殊性,网络空间安全真可谓是典型的“在游泳中学游泳”。一方面,蜂拥而至的现实人才需求和紧迫的技术挑战,促使我们必须以超常规手...
2
前言
随着信息通信技术及其相关产业的发展,人们的工作、学习与生活越来越依赖于计算机技术及网络空间的软硬件系统,但网络空间安全事件层出不穷,网络攻击造成的损失也与日俱增...
3
目录
目 录 序 前言 第1章 软件安全概述 1.1 软件与软件安全 1.2 软件安全威胁 第2章 软件漏洞 2.1 漏洞的概念 2.1.1 经典安全事件 2.1.2...
4
第1章 软件安全概述
本章从软件与软件安全的概念入手,介绍软件安全的背景信息和面临的安全威胁情况。...
5
1.1 软件与软件安全
软件,简单来说是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为系统软件、应用软件和支撑软件。系统软件为计算机使用提供最基本的功能,例如操作...
6
1.2 软件安全威胁
在软件开发中的不同阶段,会遇到不同的安全威胁。在软件代码编写阶段,不注意一些安全编码规范,将应用的敏感信息不加密就写在发布版本易于被黑客读取的文件中,会导致该软...
7
第2章 软件漏洞
本章分别从软件漏洞的概念、漏洞产生原因、漏洞的分类和漏洞的利用方式几个方面全面介绍软件漏洞的基本情况。...
8
2.1 漏洞的概念
...
9
2.1.1 经典安全事件
2003年8月11日爆发的W32.Blaster.Worm蠕虫病毒很好地例证了软件中的安全缺陷是如何让我们变得易受攻击的。Blaster可以在毫无用户参与的情况...
10
2.1.2 漏洞的定义
通过上面的典型事件,可以看到漏洞是计算机系统在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷和不足。漏洞一旦被发现,攻击者就可利用这个漏洞获得计算机系统的...
11
2.2 漏洞的产生
软件或产品漏洞是软件在需求、设计、开发、部署或维护阶段,由于开发者或者使用者有意或无意产生的缺陷所造成的。而信息系统漏洞产生的原因主要是由于构成系统的元素,如硬...
12
2.2.1 漏洞产生因素
1.技术因素 关键点:软件规模复杂度增大、开源的流行。 随着信息化技术和应用领域的不断发展和深入,人们对软件的依赖越来越大,对其功能和性能的要求也越来越高,因此...
13
2.2.2 漏洞产生条件
漏洞和安全缺陷密不可分。软件系统的不同开发阶段会产生不同的安全缺陷,其中一些安全缺陷在一定条件下可转化为安全漏洞。 1.安全缺陷的定义 安全缺陷是指软件、硬件或...
14
2.3 漏洞的分类
...
15
2.3.1 漏洞分类依据
1.漏洞五大属性,也是漏洞分类的依据 (1)所属相关属性:生产厂商、软件种类、消息来源和漏洞位置。 (2)攻击相关属性:攻击来源、攻击手段和攻击复杂度。 (3)...
16
2.3.2 典型的漏洞库及其分类
1.国外的漏洞库 (1)NVD 2006年8月,为配合布什政府的国家网络安全战略,美国加强国家互联网和计算机基础设施建设,在原有“互联网可搜查漏洞索引ICAT”...
17
2.4 漏洞的利用方式
...
18
2.4.1 本地攻击模式
本地攻击模式的攻击者是本地合法用户或已经通过其他攻击方法获得了本地权限的非法用户,它要求攻击者必须在本机拥有访问权限,才能发起攻击,攻击模式如图2.4所示。例如...
19
2.4.2 远程主动攻击模式
一个典型的远程主动攻击模式如图2.5所示。若目标主机上的某个网络程序存在漏洞,则攻击者可能通过利用该漏洞获得目标主机的额外访问权或控制权。 图2.5 远程主机...
20
2.4.3 远程被动攻击模式
当一个用户访问网络上的一台恶意主机(如Web服务器),他就可能遭到目标主机发动的针对自己的恶意攻击。如图2.6所示,用户使用存在漏洞的浏览器去浏览被攻击者挂马的...
21
第3章 典型的软件漏洞
本章介绍缓冲区溢出、Web应用程序、由竞争条件等引发的典型漏洞。...
22
3.1 缓冲区溢出漏洞
在计算机操作系统中,“缓冲区”是指内存空间中用来存储程序运行时临时数据的大小有限并且连续的内存区域。根据程序中内存的分配方式和使用目的,一般可分为栈缓冲区和堆缓...
23
3.1.1 缓冲区的工作原理
1.进程内存组织 进程是已载入内存并受操作系统管理的程序实例的名字。如图3-1(a)所示,进程的内存一般分为代码段(Code Segment)、数据段(Data...
24
3.1.2 受影响的编程语言
1.C语言 C语言是一种灵活、可移植的高级编程语言,已经被广泛使用,但在安全社区中它却是灾星。C语言的一些特性使其易于导致安全缺陷。 首先是C语言的可移植性。高...
25
3.1.3 栈溢出案例及分析
1.栈溢出原理 由于栈是向低地址方向增长的(如图3.5所示),因此将数据复制到局部数组缓冲区就有可能导致超过缓冲区区域的高地址部分数据会“淹没”原本的其他栈帧的...
26
3.1.4 堆溢出案例及分析
1.堆 和栈不同,堆的数据结构并不是由系统(无论是机器系统还是操作系统)支持的,而是由函数库提供的。基本的malloc/realloc/free函数维护了一套内...
27
3.1.5 格式化串漏洞案例及分析
1.格式化字符串漏洞简史 格式化字符串(Format string)漏洞最早是在1999年被Tymm tillman发现的,他在著名的Bugtraq邮件列表(一...
28
3.1.6 弥补及防御措施
1.预防 预防策略可以根据其如何分配空间,进一步分为静态预防策略和动态预防策略。 静态分配的缓冲区会假设一个固定的大小,这就意味着一旦缓冲区被填满,就无法再向其...
29
3.2 Web应用程序漏洞
随着传统互联网的普及,云服务和新型移动互联网的兴起,基于Web的应用已成为个人工作、生活和企业业务管理中重要的一部分。Web应用程序的目的是执行可以在线完成的任...
30
3.2.1 受影响的编程语言
1.按编程语言分类 (1)注入解释型语言 解释型语言(interpreted language)是一种在运行时由一个运行时组件(runtime componen...