第9章 安全漏洞、威胁和对策

9.1 评估和缓解安全漏洞

9.1.1硬件

(1) 处理器

中央处理单元(Central Processing Unit, CPU)通常称为处理器或微处理器,是计算机的神经中枢。

是控制所有主要操作的芯片(或多处理器系统中的芯片),直接执行或协调复杂的计算工作,从而使计算机执行其预期任务。

操作系统和编译器负责将用高级编程语言设计的软件转换为CPU能理解的简单汇编语言指令,使CPU以超快的速度执行计算和逻辑操作。

(2) 执行类型 (Execution Types)

•多任务

单核多任务系统能在任意给定时间处理多个任务或进程。

•多核

多个可以同时运行的独立执行内核的CPU或微处理器芯片。

•多处理

在多处理环境中,多处理器计算系统(即具有多个CPU 的系统)利用多个处理器的处理能力来完成多线程应用程序的执行。

最常见的多处理系统有两种类型,即SMPMMP

对称多处理(Symmetric Multiprocessing, SMP),

一台计算机包含多个处理器,这些处理器被同等对待并由单个操作系统控制。

在SMP中,处理器不仅共享通用操作系统还共享通用数据总线和内存资源。在这类设计中,系统可使用大量处理器。幸运的是,这类计算能力足以驱动大多数系统。

大规模并行处理(Massively Parallel Processing, MPP),

某些计算密集型操作,需要比单个操作系统更强大的处理能力(例如那些支持科学家和数学家研究的计算操作)。

MPP系统容纳数百甚至数于个处理器,每个处理器都有自己的操作系统和内存/总线资源。

当协调整个系统的活动并安排它们进行处理的软件遇到计算密集型任务时,会将任务的责任指派给单个处理器。

该处理器随后将任务分解为可管理的部分,并将它们分发给其他处理器执行。

那些处理器将其结果返回给协调处理器,协调处理器将结果组装并返回给提出请求的应用程序。

MPP系统非常强大(非常昂贵!)并且应用于有大量计算或基于计算的研究中。

SMP系统,擅长以极高的速率处理简单操作。

MPP系统,非常适合处理庞大、复杂和计算密集的任务,这些任务适合分解并分配到多个子任务进行处理。

•多程序

由操作系统协调,在单个处理器上模拟同时执行两个任务,达到提高操作效率的目的(相对过时,除遗留系统外目前很少使用)。

大多数情况下,多程序设计是一种批处理或序列化多个进程的方法,这样当一个进程因等待外设而停止时,其状态将被保存,并且下一个进程将开始

处理。

等到批处理中的其他所有进程都有机会执行然后因等待外设而停止时,第一个程序会返回处理。

对于任何单个程序,此方法会导致完成任务的显著延迟。但对批处理中的所有进程而言,完成所有任务的总时间缩短了。

多程序设计和多任务处理有两个主要区别:

• 多程序设计通常在大型系统(如大型机)上使用,而多任务处理则在个人计算机(PC)操作系统(如Windows 和Linux)上使用。

• 多任务通常由操作系统协调,而多程序设计需要编写专门的软件,这种软件通过操作系统协调自己的活动和执行。

•多线程

多线程允许在单一进程中执行多个并发任务。多任务处理多个任务时占用多个进程,多线程允许多个任务在单一进程中运行。

线程是一个独立的指令序列,可与属于同一父进程的其他线程并行执行。

多线程通常用于多个活动进程之间频繁上下文切换消耗过多开销且效率降低的应用程序。

在多线程中,线程之间的切换产生的开销要小得多,因此效率更高。

超线程(专有多线程技术)能将每个物理内核虚拟化为两个处理器,以便实现任务的并发调度。

(3) 处理类型

许多高安全性的系统控制着分配了不同安全级别的信息的处理工作,

例如美国政府将与国防有关的信息指定了分类级别:未分类、敏感、机密、秘密和绝密。

设计计算机时必须遵循这种分类这样它们就不会无意地向未经授权的接收者泄露信息。

计算机架构师和安全策略管理员在处理器级别以两种不同的方式解决了这个问题。

一种是通过策略机制,另一种是通过硬件解决方案。

•单一状态

单一状态系统需要使用策略机制来管理不同级别的信息。

在这种类型的方案中,安全管理员批准处理器和系统一次只能处理一个安全级别的信息。

例如,某个系统可能被标记为仅处理秘密信息。然后,该系统的所有用户必须被批准处理秘密级别的信息。

这将保护系统上正在处理的信息的责任从硬件和操作系统转移到控制访问系统的系统管理员身上。

•多状态

多状态系统能够实现更高级别的安全性。这些系统经过认证,可使用专门的安全机制同时处理多个安全级别

这些机制旨在防止信息跨越不同的安全级别

技术机制防止在两个用户之间交叉处理信息,从而防止跨越安全级别处理信息。

在实际应用中,多状态系统由于实现必要的技术机制的费用高,相对不太普及

(4) 保护机制

•保护环

从安全角度看,保护环将操作系统中的代码和组件(以及应用程序、实用程序或在操作系统控制下运行的其他代码)组织成同心环。

进入圆环内部越深,与占用特定环的代码相关的权限级别就越高。

环0作为最内层的环,具有最高的特权级别,并且基本上可访问任何资源、文件或内存位置。

操作系统中始终驻留在内存中的部分(因此可根据需要随时运行)称为内核。它占用环0并可抢占在任何其他环上运行的代码。

操作系统的其余部分——作为各种任务请求、执行的操作、进程切换等而进出内存的那些部分占用环1

环2在一定程度上也有特权,是I/O驱动程序和系统实用程序驻留的地方;

它们能访问应用程序和其他程序本身无法直接访问的外围设备、特殊文件等。应用程序和其他程序占据最外层的环3。

环模型的本质在于优先级、特权和内存分段

任何想要执行的进程都必须排队等待(挂起的进程队列)。环编号最低的进程总比环编号较高的进程提前运行。

较低编号环中的进程与较高编号环中的进程相比可访问更多资源并能更直接地与操作系统交互。

在较高编号的环中运行的进程通常必须向较低编号环中的处理程序或驱动程序请求它们所需的服务,这有时称为中介访问模型

在其最严格的实现中,每个环都有自己关联的内存段。因此,来自较高编号环中的进程对较低编号环中的地址的任何请求必须调用与该地址相关联的环中的辅助进程。

在实践中,许多现代操作系统仅将内存分为两个段:一个用于系统级访问(环0到2) ,通常称为内核模式或特权模式

另一个用于用户级的程序和应用程序(环3) ,通常称为用户模式

从安全性角度看,环模型使操作系统能够保护和隔离自己,免受用户和应用程序的影响。

它还允许在具有高特权的操作系统组件(例如内核)和操作系统的低特权部分(例如操作系统的其他部分,以及驱动程序和实用程序)之间实施严格的边界限制

在此模型中,直接访问特定资源只能在特定环内执行;同样,某些操作(例如进程切换、终止和调度)仅允许在某些环内执行。

进程占用的环决定了其对系统资源的访问级别(并决定它必须从较低编号、更高特权环中的进程请求哪种资源)。

进程可直接访问对象,只要它们位于进程自己的环内或当前边界之外的某个环中(例如,这意味着环1的进程可以直接访问自己环内的资源以及与环2和3关联的资源,但它不能访问仅与环0相关联的任何资源)。

中介访问机制即前面提到的驱动程序或处理程序请求的方法通常称为系统调用,且往往涉及调用特定系统或用于将请求传递给内环以进行服务的

编程接口。然而,在任何此类请求得到满足之前,被调用环必须检查以确保调用进程具有正确的凭据和授权,从而能访问数据和执行满足请求所涉及的操作。

•进程状态(操作状态)

进程状态是进程可能在其中运行的各种执行形式。

对操作系统而言,在任何给定时刻它都处于两种模式之一:

一、以特权、完全访问模式运行,称为监督状态;

二、与用户模式相关的所谓问题状态下运行,其权限较低并且所有的访问请求在被准许或拒绝之前必须检查授权凭据。

问题状态:用户访问的非特权性意味着可能会发生问题,系统必须采取适当的措施来保护安全性、完整性和保密性。

进程在操作系统的处理队列中排队等待执行,当处理器可用时它们将被安排执行。

由于许多操作系统允许进程仅以固定增量或块的形式占用处理器时间,因此在进程创建时,它首次进入处理队列;

如果一个进程在占用完其整个处理时间(称为时间片)仍未完成的情况下,它将返回到处理队列中等待下一轮继续执行。

进程调度程序通常选择最高优先级的进程来执行,因此到达队列的前端并不总能保证对CPU的访问(进程可能在最后一刻被另一个具有更高优先级的进程抢占)。

根据进程是否正在运行,它可能处于以下几种状态:

1.就绪状态

在就绪状态下,进程准备在被调度执行时立刻恢复或开始处理。进程在这个状态时如果CPU可用,它将直接转换到运行状态;

否则,它会处于就绪状态直到CPU可用。这总味着该进程具有立即开始执行所需的所有内存和其他资源。

2.等待状态(阻塞状态)

该过程已经准备好继续执行,但在它可以继续处理之前需要等待设备或访问请求(某种中断)提供的服务。

等待状态也称为阻塞状态,因为在某个外部事件发生前,会阻止该进程进一步执行。

3.运行状态

运行中的进程在CPU上执行并持续运行,直到完成、时间片到期或者由于某种原因而被阻塞。

如果时间片结束但是进程没有完成,则返回就绪状态并进入队列中排队;

如果进程因等待资源可用而阻塞,则进入等待状态并进入队列中排队。

4.监管状态

当进程必须执行需要大于问题状态特权集的特权操作时,才使用监督状态,包括修改系统配置、安装设备驱动程序或修改安全设置。

基本上,在用户模式(环3)或问题状态中未出现的任何功能都会在监管模式中执行。

5.停止状态

当进程完成或必须终止时(因为发生错误、需要的资源不可用或者无法满足资源请求),它将进入停止状态。

此时,操作系统将收回分配给该进程的所有内存和其他资源,并根据需要重新分配给其他进程使用。

图9.2 显示了这些不同状态如何相互关联。

新进程总是转换到就绪状态。

从那里开始,准备好的进程总是转换到运行状态。

在运行时,如果进程完成或终止,进程可以转换到停止状态;

如果等待下一个时间片就返回到就绪状态;或转移到等待状态,直到其挂起的资源请求得到满足。

当操作系统要决定下一个运行的进程时,它会检查等待队列和就绪队列,并获取最高优先级的作业准备运行(因此,等待的进程中,只有那些请求的资源已得到满足或者准备好服务的作业才会被考虑)。

第9章 安全漏洞、威胁和对策_第1张图片

•安全模式

在部署安全模式之前,必须存在三个特定元素:

• 分层的强制访问控制(MAC)环境

• 对可以访问计算机控制台的主体的完全物理控制

• 对能进入计算机控制台同一房间的主体的完全物理控制

•专用模式

专用模式系统基本上等同于单一状态系统

专用系统的用户有下列三个要求:

• 每个用户必须具有允许访问系统处理的所有信息的安全许可

• 每个用户必须拥有系统处理的所有信息的访问批准

• 每个用户必须有对系统处理的所有信息具有“知其所需“权限

•系统高级模式

系统高级模式系统中,用户必须满足这些要求:

• 每个用户必须具有允许访问系统处理的所有信息的有效安全许可

• 每个用户必须拥有系统处理的所有信息的访问批准

• 每个用户必须对系统处理的某些信息具有有效的“知其所需“权限,但不要求对系统处理的所有信息都具有有效的“知其所需“权限。

专用模式和系统高级模式之间的主要区别:

在系统高级模式中,所有用户不必对计算设备上处理的所有信息都具有“知其所需“权限。

因此,尽管同一用户既可以访问专用模式系统也可以访问系统高级模式系统,但该用户可以访问前者的所有数据,而对后者的一些

数据的访问却受到限制。

•分隔模式

分隔模式系统进一步弱化了这些要求:

• 每个用户必须具有允许访问系统处理的所有信息的有效安全许可

• 每个用户必须具有他们将在系统上访问的任何信息的访问批准

• 每个用户必须具有他们将在系统上访问的所有信息的有效的“知其所需“权限。

分隔模式系统和系统高级模式系统之间的主要区别:

分隔模式系统的用户不一定具有对系统上所有信息的访问批准。

但系统高级模式和专用系统的相同之处在于,系统的所有用户仍必须具有适当的安全许可。

在一种称为分隔模式工作站(Compartmented Mode Workstations, CMW) 的模式的特殊实现中,具有必要许可的用户可同时处理多个分隔区中的数据。

CMW要求在客体上设置两种形式的安全标签:敏感度级别和信息标签。

敏感度级别,描述了必须在什么级别保护客体。敏感度级别在所有四种模式中都很常见。

信息标签,可防止数据过度分类并将附加信息与对象相关联,这有助于正确和准确地标记与访问控制无关的数据。

•多级模式

• 某些用户不具有访问系统所处理的全部信息的有效安全许可,因此,通过检查主体的许可级别是否能控制客体的敏感性标签来控制访问。

• 每个用户必须对系统上要访问的所有信息都具有访问批准

• 每个用户必须对系统上要访问的所有信息都具有一个有效的“知其所需"权限

在查看美国联邦政府批准的各种操作模式的要求时,会注意到:

当从专用系统向下移到多级系统时,控制访问系统的用户类型的管理要求会逐步降低。

但这并没有降低限制个人访问的重要性,因此用户只能获得他们有合法权限访问的信息。

只需要将执行这些要求的负担从管理人员(他们采用物理方式限制对计算机的访问)转移到硬件和软件上(它们控制多用户系统中的每个用户可访问哪些信息)。

根据所需的安全许可、“知其所需"权限以及处理来自多个许可级别的数据(Process Data from Multiple Clearance Levels, 缩写为PDMCL) 的能力,表9.1 总结和比较了这四种安全模式。

比较所有四种安全模式时,通常认为多级模式暴露出最高级别的风险。

第9章 安全漏洞、威胁和对策_第2张图片

如果所有用户必须具有相同的安全许可,则安全许可为”相同“,否则为“不同“。

如果使用了CMW 实现,则PDMCL 为“是“, 否则PDMCL 为“无”。

如果不适用且未使用,或虽然使用“知所必须“,但所有用户对系统上的所有数据都具有“知其所需"权限,则“知其所需“权限为“无“,如果访问受到“知其所需“权限的限制,则“知其所需"权限为“是“。

(5) 操作模式

现代处理器和操作系统旨在支持多用户环境,在多用户环境中,单个计算机用户不会被授予访问系统的所有组件或存储在其上的所有信息的权限。

因此,处理器本身支持两种操作模式:用户模式和特权模式。

•用户模式

用户模式是CPU在执行用户应用程序时使用的基本模式。在此模式下,CPU只允许执行其全部指令集中的部分指令

这样做是为了防止用户由于执行设计不当的代码或无意误用该代码而意外损害系统。

它还可保护系统及其数据免受恶意用户的攻击,恶意用户可能尝试执行旨在绕过操作系统采取的安全措施的指令,或者可能错误地执行某些操作导致未授权访问、损害系统或有价值的信息资产。

通常,用户模式内的进程在称为虚拟机(VM)的受控环境中执行。虚拟机是由OS创建的模拟环境,为程序执行提供安全有效的运行场所。

每个VM都与其他所有VM隔离,并且每个VM都有自己的系统分配的内存地址空间,宿主应用程序可使用它们。

特权模式(即内核模式)中的模块负责创建和支持VM, 并防止一个VM中的进程于扰其他VM中的进程。

•特权模式

CPU还支持特权模式,该模式旨在使操作系统能访问CPU支持的所有指令

特权模式的几种常见名称(因 CPU制造商而异):

• 特权模式

• 监管模式

• 系统模式

• 内核模式

这种模式给在CPU 上执行的进程授予了广泛权限。因此,设计合理的操作系统不会允许任何用户应用程序在特权模式下执行。

出于安全性和系统完整性的目的,只有那些作为操作系统本身组件的进程才能在特权模式下执行。

(6) 存储器 (Memory)

存储器(Memory)是计算机用于保存需要随时可用的信息的存储库

只读存储器(ROM)

可以读取但不能更改的内存(不允许写入)。标准ROM芯片的内容在工厂里“烧入“,最终用户根本无法改变它。

ROM芯片通常包含“引导“信息,是计算机在从磁盘加载操作系统前用于启动的信息。

引导信息包括每次启动PC时都会运行大家熟悉的开机自检(Power-On Self-Test, POST)系列诊断程序。

ROM的主要优点是不能被修改,非常适合组织协调计算机中最核心的工作。用户或管理员的错误不会意外地清除或修改此类芯片的内容。

•可编程只读存储器(Programmable Read-Only Memory, PROM)

在制造过程中,PROM芯片的内容不像标准ROM芯片那样在工厂“烧入“相反,PROM包含特殊功能,允许最终用户稍后烧入芯片的内容

但烧入过程具有类似结果:一旦将数据写入PROM芯片,就再也不能更改。烧入后,PROM芯片的功能基本上和ROM芯片一样。

PROM芯片为软件开发人员提供了在高速定制内存芯片上永久存储信息的机会。

PROM通常用于需要某些定制功能的硬件应用程序,但一旦编程完成就很少改变。

-可擦除可编程只读存储器(EPROM)

由于PROM芯片较高的成本以及软件开发人员在编写代码后不可避免地需要修改代码,导致人们开发出了可擦除PROM(EPROM) 。

EPROM有两个主要的子类别,即UVEPROM和EEPROM。紫外线EPROM(UVEPROM)可以用光擦除。

这些芯片有一个小窗口,当用特殊的紫外光照射时可擦除芯片上的内容。擦除后,最终用户可将新信息烧入UVEPROM,就像以前它从未写过一样。

-电可擦除可编程只读存储器(EEPROM)

一个更灵活、更友好的UVEPROM 替代方案是电子可擦除PROM(EEPROM) ,它使用传递到芯片引脚的电压来强制擦除

闪存

闪存是EEPROM的衍生概念。它是一种非易失性存储介质,可通过电子方式擦除和重写。

EEPROM和闪存的主要区别:必须完全擦除后EEPROM才能重写,而闪存可按块或页擦除和写入。

NAND闪存是最常见的闪存类型。它广泛用于存储卡、优盘、移动设备和SSD(固态硬盘)。

•随机存取存储器(RandomAccess Memory, RAM)

随机存取存储器是可读写存储器,包含计算机在处理过程中使用的信息。

当计算机断电后,RAM中存储的所有数据都会消失(仅在持续供电时才能保留其内容)。

RAM仅适用于临时存储。关键数据不应只存储在RAM 中;

备份副本应该始终在另一个存储设备上保存,以防止在突然断电时发生数据丢失。

以下是RAM的类型:

-实际存储器

实际内存(也称为主内存)通常是计算机可用的最大RAM存储资源

它通常由许多动态RAM芯片组成,因此必须由CPU定期刷新

-高速缓存RAM

计算机系统包含许多缓存,当存在重复使用的可能时,

这些缓存通过从较慢的设备获取数据将其临时存储在更快的设备中提高性能,这就是缓存RAM。

处理器通常包含一个板载的超高速缓存,用于保存它即将运行的数据。

高速缓存RAM可称为L1、L2 、L3甚至L4缓存。

L1/L2:一些高速缓存专用于单个处理器内核

L3:内核之间共享的高速缓存。

L4:一些CPU涉及L4高速缓存,其可能位于主板/母板上或GPU(图形处理单元)上。

同样,实际存储器通常包含存储在磁性介质或SSD上的信息的高速缓存。

这个存储链继续向下经过内存/存储设备门层次结构,使计算机能够通过保存接下来可能使用的数据来提高性能(无论是CPU指令、数据提取、文件访问还是其他操作)。

许多外围设备也有板载高速缓存,以减少它们给CPU和操作系统造成的存储负担。

例如,许多高端打印机包含大量RAM缓存,因此操作系统可快速将整个作业假脱机打印到打印机。

之后,处理器可忘记打印作业;它不必被迫等待打印机实际生成所请求的输出,一次块地给打印机输入数据。

打印机可预先处理其板载缓存中的信息,从而释放CPU和操作系统以处理其他任务。

许多存储设备(如硬盘驱动器(HDD)、固态驱动器(SSD)和某些优盘)都包含缓存,以帮助提高读写速度。

但在断开连接或断电前,必须将这些高速缓存存储到永久或二级存储区域,以避免高速缓存中驻留的数据丢失。

动态RAM与静态RAM

目前主要有两种类型的RAM:动态RAM 和静态RAM。

大多数计算机包含这两种类型RAM的组合,并将它们用于不同目的。

为存储数据,动态RAM使用一系列电容器,即保待电荷的微小电子设备。这些电容器保持电荷(表示存储器中的比特1)或不保持电荷(表示比特0)。

但由于电容器会随着时间的推移自然放电,因此CPU必须花时间刷新动态RAM的内容,以确保比特1不会无意中更改为比特0,从而改变存储器中的内容。

静态RAM使用更复杂的技术,一种称为触发器的逻辑设备。

对于所有意图和目的而言,它只是一个ON/OFF开关,必须从一个位置移到另一个位置才能将比特0更改为比特1, 反之亦然。

更重要的是,只要不断电,静态存储器就会保持其内容不变,并且不会因定期刷新操作而给CPU带来开销。

因为电容器比触发器价格便宜,所以动态RAM比静态RAM便宜。但静态RAM运行速度比动态RAM快得多。

对系统设计人员来说,这是个性能与价格权衡的问题,他们将静态RAM和动态RAM模块结合起来使用,在成本与性能之间取得了适当的平衡。

寄存器(Registers)

CPU还包括数量有限的板载存储器,称为寄存器。

它为算术逻辑单元(CPU的大脑)在执行计算或处理指令时,提供可直接访问的存储位置。

实际上,ALU要操作的任何数据,除非作为指令的一部分直接提供,否则都必须加载到寄存器中。

这种类型内存的主要优点是它是ALU本身的一部分,因此它以典型的CPU速度与CPU保持同步。

存储器寻址(Memory Addressing)

使用内存资源时,处理器必须具有一些引用内存中各个位置的方法。该问题的解决方案称为寻址。

在不同情况下存在多种不同的寻址方案。以下是五种较常见的寻址方案:

-寄存器寻址

寄存器是直接集成在CPU中的较少的存储位置。

当CPU需要来自某个寄存器的信息进行操作时,它使用寄存器地址(例如,“寄存器1")来访问其内容。

-立即寻址

立即寻址本身并不是存储器寻址方案,而是一种数据引用方式,其将数据作为指令的一部分提供给CPU。

例如,CPU可能会处理命令“将寄存器1中的值加2”。这条命令使用两种寻址方案。

第一个是立即寻址:告诉CPU要添加数字2且不需要从内存某种位置检索该数值,它是作为命令的一部分提供的。

第二个是寄存器寻址:告诉CPU从寄存器1中取得数值。

直接寻址

在直接寻址中,要访问的存储器位置的实际地址会提供给CPU。此地址必须与正在执行的指令位于相同的存储器页面上。

直接寻址比立即寻址更灵活,因为存储器位置的内容的修改相对容易,而立即寻址中硬编码的数据需要重新编程才能更改。

间接寻址

间接寻址使用的方案类似于直接寻址。但作为指令的一部分提供给CPU的存储器地址并不包含CPU用作操作数的实际数值。

相反,指令中的内存地址所指内存中包含另一个内存地址(可能位于不同的页面上)。

CPU读取间接地址来确定所需数据驻留的地址,然后从该地址取得实际的操作数。

基址+偏移量寻址基址升扁移量寻址使用存储在CPU 的某个寄存器中的数值作为开始计算的基地址。

然后,CPU将随指令提供的偏移量与该基地址相加,并从计算出的内存位置取得操作数。

辅助存储器

“辅助存储器”这个术语通常指磁性、光学或基于闪存的介质,或其他存储设备,包含CPU不能直接获得的数据。

CPU 为了访问辅助存储器中的数据,必须首先由操作系统读取数据并将其存储在实际内存中。

但辅助存储器比主存储器便宜得多,并可用来存储大量信息。

这种情况下,硬盘、闪存驱动器和光学介质(像光盘(CD) 、数字通用光盘(DVD) 、蓝光光盘之类)都可以用作辅助存储器。

虚拟内存是一种特殊类型的辅助内存,由操作系统管理,可使其像真实内存一样。

最常见的虚拟内存类型是页面文件,由大多数操作系统作为其内存管理功能的一部分进行管理。

这种特殊格式的文件包含先前存储在内存中但最近未使用的数据。

当操作系统需要访问存储在页面文件中的地址时,会检查页它面是否驻留在内存中(这种情况下可立即访问)或是否已经被交换到磁盘中,这种情况下它会将数据从磁盘读回到实际内存中(此过程称为分页)。

使用虚拟内存是一种使计算机运行的廉价方式,使计算机运行时好像具有比实际安装的更多的真实内存。

它的主要缺点是:在主存储器和辅助存储器之间交换数据时进行的分页操作相对较慢(内存工作在纳秒级、磁盘系统工作在微秒级,通常这意味着差三个数量级!),并且产生大量的计算机开销,导致整个系统的速度降低。

随着更大容量实际物理RAM 的使用,对虚拟内存的需求正在减少,而且通过使用闪存卡或SSD 来存储虚拟内存分页文件也可降低虚拟内存的性能损失。

存储器的安全问题

任何可能保留敏感数据的存储设备都应在离开组织之前,进行清除。

辅助存储器和ROM、PROM、EPROM、EEPROM设备在断电后仍可保留数据。

静态和动态RAM芯片是通过使用电容和触发器来存储数据的,断电后这些电子元件在有限时段内仍可能保留一些电景。

技术经验丰富的人可针对这些组件采用电子手段,将设备上存储的部分数据读取出来(因需要大量专业知识、费用高,威胁低)。

当系统关闭或RAM被拔出主板时,有一种攻击方法会冻结内存芯片以延迟驻留数据的衰减。

甚至还有一些攻击专注于内存映像转储或系统崩溃转储以提取加密密钥。

围绕存储器的安全最重要的问题之一是:控制在计算机使用过程中谁可访问存储在存储器中的数据。

这主要是操作系统的责任,也是本章前面部分描述的各种处理模式下的主要存储器的安全问题。

如果你在多级安全环境中运行,那么特别需要注意的是:

要确保有足够的保护措施来防止安全级别之间发生不必要的存储器内容泄露,泄露可能通过直接访问存储器或隐蔽通道发生。

(7) 存储设备(Storage)

数据存储设备(Storage)用于存储计算机在写入后随时可使用的信息。

•主存储设备与辅助存储设备

主存储器(也称为主存储设备)是计算机用于在运行时保存CPU可用的必要信息的RAM。

辅助存储器(或辅助存储设备)包括所有熟悉且每天都使用的长期存储设备。

辅助存储器由磁性和光学介质组成,例如硬盘(HDD)、固态硬盘(SSD)、闪存驱动器、磁带、CD 、DVD和闪存卡等。

•易失性存储设备与非易失性存储设备

存储设备的易失性只是衡量电源关闭时其丢失数据的可能性。

非易失性设备:断电后,设计用来保留其数据的设备(例如磁性介质)。

易失性设备:断电后,设计为丢失其数据的设备(例如静态或动态RAM 模块等)。

•随机存取与顺序存取

存储设备的存取方式有两种。

随机存取存储设备,允许操作系统通过使用某种类型的寻址系统从设备内的任何位置立即读取(并且有时写入)数据。

常见的随机存取设备:

-几乎所有主存储设备。你可使用存储器地址访问存储在RAM芯片内任何位置的信息,而不必读取此位置前的物理存储的数据。

-大多数辅助存储设备。例如,硬盘驱动器使用可移动磁头系统,允许你直接移动到磁盘上的任何位置,而不会旋转通过存储在其前面磁道上存储的所有数据;

-CD和DVD设备使用光学扫描器,可将自己定位在盘片表面的任何位置。

顺序存储设备,不提供这种灵活性。它们要求在到达所需位置之前读取(或加速经过)物理存储的所有数据。

磁带驱动器是顺序存储设备的常见示例。

为存取存储在磁带中间位置的数据,磁带驱动器必须物理地扫描整个磁带,直到它到达所希望的位置。

顺序存储设备的存取速度比随机存取存储设备慢得多。

许多顺序存储设备可在相对便宜的介质上保存大量数据。特别适合与灾难恢复/业务连续性计划相关的备份任务。

顺序存储设备适用于经常需要存储大量数据,而很少需要访问存储的信息。

(8) 存储介质的安全

• 即使在数据被删除后,数据仍可保留在辅助存储设备上。这种情况称为数据残留

即使在删除文件后,也可以使用工具软件从磁盘中恢复文件。

从技术角度看,也可以从已重新格式化的磁盘中恢复数据。

如果确实想要从辅助存储设备中删除数据,则必须使用专门的实用程序来破坏设备上的所有数据痕迹,

或破坏或销毁辅助存储设备本身,并使其无法被修复(通常称为净化)。

• 固态硬盘SSD在净化方面有一个独特问题。

“SSD耗损均衡”意味着通常存在未标记为“存活”的数据块,当它被关闭复制为“降低磨损水平块”时仍然保留了数据的副本,

这意味着传统的零擦除作为SSD的数据安全措施是无效的

• 辅助存储设备还很容易被盗,机密信息的丢失会带来很大的风险。

因此,有必要使用全盘加密来降低未经授权的实体访问数据的风险。

由于其损耗均衡技术,在将任何数据存储到SSD之前对SSD进行加密是一种很好的安全措施。

这会降低将明文数据存储在休眠块中的可能性。幸运的是,许多HDD和SSD设备本身都提供加密功能。

• 访问存储在辅助存储设备上的数据,是计算机安全专业人员面临的最重要的问题之一。

硬盘:通常可通过组合操作系统的访问控制来保护数据。

可移动介质:通常需要使用加密技术来保护它们。

• 由于可用性也是安全三要素之一,因此必须选择能够在所需时间长度内保留数据的介质

例如,备份磁带可能会在数据保留期终止之前降级。此外,用于辅助存储的技术也可能过时,从而很难恢复/读取使用过时技术存储的数据。

9. 输入和输出设备

显示器

TEMPEST技术可能危害监视器上显示的数据的安全性。

通常,阴极射线管(CRT)监视器很容易产生辐射,而液晶显示器(LCD)监视器外泄的程度要小得多(有些研究声称辐射太低不足以泄露关键数据)。

TEMPEST

可从远处甚至从另一个位置读取每个监视器产生的电子辐射(称为Van Eck辐射),称为Van Eck入侵

各种实验表明:可使用停靠在街边的货车中的此类设备,轻松地读取办公楼内的显示器屏幕上的内容。

防止Van Eck辐射所需的保护控制措施实施起来很昂贵(需要大量的铜!)

任何显示器的最大风险仍然是肩窥或是相机上的长焦镜头。

肩窥的概念就是:有人可用眼睛或摄像机看到你屏幕上的内容。

记住,肩窥是桌面显示器、笔记本电脑显示器、平板电脑和手机的风险关注点。

打印机

虽然比较简单,但打印机也可能存在安全风险。

根据你组织采用的物理安全控制措施,带走打印形式的敏感信息可能比用闪存或磁性介质带走敏感信息要容易得多。

如果打印机是共享的,用户可能忘记取走打印出来的敏感信息,因而容易受到窥探。

许多现代打印机也在本地存储数据,通常存储在硬盘驱动器上,有些则无限期地保留着打印的副本。

打印机通常暴露在网络上以便访问,并且通常没有被设计成一个安全的系统。

但是,根据打印机的型号不同,有很多配置设置可用来提供一定级别的合理的安全网络打印服务。

这些配置设置包括数据加密传输以及在和打印机交互之前先进行身份验证等。

这些都是组织安全策略能很好地解决的问题。

键盘/鼠标

键盘、鼠标和类似的输入设备也容易受到TEMPEST技术的监控。

此外,键盘容易受到不太复杂的"窃听"的影响。

可将一个简单设备放在键盘内或其连接电缆旁边,以拦截所有击键操作并使用无线电信号将它们发送到远程接收器。

这与使用TEMPEST技术监测具有相同的效果,但可用更便宜的装备完成。

若使用无线的键盘和鼠标(包括蓝牙),无线电信号也可能被截获

调制解调器

调制解调器允许用户在网络中创建不受控制的接入点。

如果配置不当,会使外部人员能绕过所有网络边界保护机制并直接访问网络资源。

更糟的是,调制解调器创建了一个备用出口通道,内部人员可使用该通道把组织的数据泄露到外部。

只有当调制解调器可以连接到可操作的固定电话线上时,这个漏洞才能被利用!

认真考虑在组织的安全策略中彻底禁用调制解调器(除业务原因需要)。

•知道所有调制解调器在网络中的物理和逻辑位置

•确保配置正确;

•确保采取适当的保护措施以防止其被非法使用。

9.1.2固件

这种类型的软件很少更改(如果它存储在真正的ROM芯片,就永远不会更改),经常用来驱动计算设备的基本操作。

有两种类型的固件:主板上的BIOS以及通用的内部和外部设备固件。

1. BIOS和UEFI

•基本输入/输出系统(Basic Input/Output System, BIOS)包含独立于操作系统的原始指令,用于启动计算机并从磁盘加载操作系统。

BIOS包含在固件设备中,计算机在引导时会立即访问它。在大多数计算机中,BIOS存储在EEPROM芯片上以便于版本更新。

曾经发生过一些恶意代码被嵌入BIOS/固件的事件。

phlashing攻击,会安装官方BIOS 或固件的恶意变体版本,将远程控制或其他恶意功能引入设备。

•可扩展固件接口(Unilled Extensible FirmwareInterface, UEFI),

UEFI是一种硬件和操作系统之间更高级的接口,它保留了对传统BIOS服务的支持。

2. 设备固件

许多硬件设备(例如打印机和调制解调器)也需要一些有限的处理能力来完成其任务,同时最小化操作系统本身的负担。

在许多情况下,这些“迷你”操作系统完全包含在它们所在设备上的固件芯片中。

与计算机的BIOS一样,设备固件也常存储在EEPROM设备中,因此可以根据需要进行更新。

9.2 基于客户端的系统

客户端攻击的一个常见示例是恶意网站,它将恶意移动代码(例如applet)传输到运行在客户端且有漏洞的浏览器上。

客户端攻击可发生在任何通信协议上,而不仅是超文本传输协议(HTIP) 。

另一类基于客户端的潜在漏洞是本地缓存中毒的风险。

9.2.1 applet

代理是从用户系统发送的代码对象,用于查询和处理存储在远程系统上的数据。

applet执行相反的功能,这些代码对象由服务器发送到客户端以便执行某些操作。

applet实际上是独立的微型程序,这些程序的执行独立于发送它们的服务器。

如今applet 的使用并不普遍,但是大多数浏览器仍然支持它们(或仍然有支持它们的附加组件)。

因此,即使组织在内部或公共Web设计中没有使用applet, 你的Web浏览器也可能在浏览公共Web时遇到。

使用applet的好处:

处理压力被转移到客户端,释放Web了服务器上的资源且可以处理更多来自用户的请求。

•客户端可使用本地资源生成数据,而不必等待远程服务器的响应。许多情况下,这可更快地响应输入数据的更改

•在设计合理的applet中,Web服务器不会接收作为输入提供给小程序的任何数据,因此可维护用户财务数据的安全性和隐私性

applet安全问题:

它们允许远程系统将代码发送到本地系统运行。

安全管理员必须采取措施,确保发送到其网络上系统的代码安全并正确地屏蔽恶意活动。

此外,除非逐行分析代码,否则最终用户永远无法确定applet中是否包含特洛伊木马组件。

例如,抵押计算器确实可能在最终用户不知清或准许的清况下将敏感的财务信息发送到Web服务器。

两个常见的applet示例: Java applet和ActiveX控件。

(1)Java applet

Java applet是通过Internet传输的简短Java程序,用于在远程系统上执行各种操作。

在Java平台的设计过程中,安全性是最重要的考虑因素,Sun公司的开发团队创建了“沙箱”概念,对Java代码的特权进行限制。

沙箱将Java代码对象与操作系统的其余部分隔离开来,并对这些对象可以访问的资源实施严格的规则。

例如,沙箱会禁止Java applet从不是分配给它的内存区域中检索信息,从而阻止applet 窃取该信息。

(2)ActiveX控件

ActiveX 控件是微软对Sun Java applet的回应产品,正在逐步淘汰

它们以与javaapplet 类似的方式运行,但可使用多种语言实现,包括Visual Basic、C、C++和Java。

Java applet 和ActiveX控件之间有两个主要区别:

(1)ActiveX控件使用Microsoft公司专有的技术,因此只能在Microsoft公司浏览器的系统上运行

(2)ActiveX控件不受Java applet上的沙箱限制的约束。它们对Windows操作环境具有全部的访问权限,并可执行许多特权操作。

因此,在决定下载和执行哪些ActiveX 控件时,必须采取特殊的预防措施。

9.2.2本地缓存

本地缓存是临时存储在客户端上以供将来重复使用的任何内容。

一个典型的客户端上有许多本地缓存,

包括地址解析协议(Address Resolution Protocol, ARP)缓存、域名系统(DomainName System, DNS)缓存和Internet文件缓存。

(一)ARP缓存

•ARP缓存中毒是由攻击者响应ARP广播查询并返回伪造的回复造成的。

如果客户端在有效回复之前接收到错误回复,则使用错误回复来填充ARP缓存,并将有效回复作为外部公开的查询而丢弃。

ARP缓存的动态内容,无论是中毒还是合法,都将保留在缓存中直到超时(通常不到10分钟)。

ARP用于将互联网协议(IP)地址解析为适当的MAC地址,以便组成用于数据传输的以太网报头。

一旦一个IP到MAC的映射离开缓存,攻击者就会在客户端重新执行ARP广播查询时获得另一个毒害ARP缓存的机会。

•ARP缓存中毒的第二种形式是创建静态ARP条目。

这是通过执行ARP命令完成的而且必须在本地执行。

但这很容易通过一个脚本来实现,该脚本通过特洛伊木马、缓冲区溢出或社会工程攻击在客户端上执行。

静态ARP条目是永久性的,即使系统重新启动后也是如此。

一旦发生ARP中毒,无论是针对永久性条目还是动态条目,从客户端传输的数据流量都将被发送到非预期的系统。

这是由于IP地址被映射到错误的或不同的硬件地址(即MAC地址)造成的。

ARP缓存中毒或只是ARP中毒是建立中间人攻击的一种方法。

(二)DNS缓存

另一种执行中间人攻击的流行方法是通过DNS缓存中毒。

与ARP 缓存类似,一旦客户端收到来自DNS的响应,该响应将被缓存以备将来使用。

如果可将伪造的信息输入到DNS缓存中,那么重定向通信就非常容易。

执行DNS缓存中毒的几种方法:

•主机HOSTS中毒

HOSTS文件是静态文件并可在支持TCP/IP的系统上找到,其中包含域名及其关联IP 地址的硬编码索引。

HOSTS文件现在是在基于动态查询的DNS系统之前使用的,但它仍可作为后备措施或强制解析的手段。

管理员或黑客可向HOSTS文件添加内容,以建立FQDN(完全限定域名)与所选IP地址之间的关系。

如果攻击者能将伪造的信息存储到HOSTS文件中,那么当系统启动时, HOSTS文件的内容将被读入内存,这些伪造的信息将被优先使用。

与动态查询不同,动态查询最终将因超时而从缓存中清除, HOSTS文件中的条目是永久性的。

•授权DNS服务器攻击

授权的DNS服务器攻击的目标是改变其原始主机系统(主授权DNS 服务器)上FQDN的主记录。

主授权DNS服务器托管区域文件或域数据库。如果此原始数据集被更改,则最终这些更改将在整个Internet上传播。

但是,对授权DNS服务器的攻击通常会很快被发现,因此很少会导致大范围的漏洞利用。

•缓存DNS服务器攻击

因此,大多数攻击者都专注于缓存DNS服务器。缓存DNS服务器是用来缓存来自其他DNS服务器的DNS信息的任何DNS系统。

大多数公司和ISP为其用户提供缓存DNS服务器。缓存DNS服务器上托管的内容不会被全球的安全社区所关注,而是由本地运营者维护。

因此,对缓存DNS服务器的攻击可能会在很长一段时间后才被发现。

虽然这些攻击都集中在DNS服务器上,但它们最终会影响客户端。

客户端执行动态DNS解析后,从授权DNS服务器或缓存DNS服务器接收的信息将临时存储到客户端的本地DNS缓存中。

如果该信息是伪造的,则客户端的DNS缓存就中毒了。

•DNS查找地址更改

DNS中毒的第四个示例是向客户端发送替换过的IP地址作为DNS服务器,为客户端提供解析查询服务。

DNS 服务器地址通常通过动态主机控制协议(DHCP)分发给客户端,但也可静态分配。

即使IP 配置信息的所有其他元素都已由DHCP 分配,仍可在本地轻松地更改静态分配的DNS 服务器地址。

可通过脚本(类似于前面提到的ARP 攻击)或通过破坏DHCP 来发起更改客户端的DNS 服务器查找地址的攻击。

一旦客户端使用错误的DNS 服务器,查询就会发送到黑客控制的DNS 服务器,服务器将返回中毒的结果。

•DNS查询欺骗

发生这种攻击时,黑客能窃听客户端发送给DNS服务器的查询。

然后攻击者发回一个包含虚假信息的回复。如果客户端接受虚假回复,则会将该信息放入其本地DNS 缓存中。

当真实回复到达时,它将被丢弃,因为原始查询已经被响应。

无论执行这五种DNS 攻击手段中的哪一种,虚假条目都将写入客户端的本地DNS 缓存中。

因此,所有IP 通信都将被发送到错误的端点。

这样黑客就可以通过操纵该错误端点然后将流量转发到正确的目的地来建立中间人攻击。

(三)Internet文件缓存

这是从Internet网站下载的文件的临时存储,这些文件由客户端实用程序保存,供当前和将来使用。

大多数清况下,此缓存包含网站内容,但其他Internet服务也可使用文件缓存。

各种漏洞利用方法,例如拆分响应攻击,可能导致客户端下载内容并将其存储在缓存中,但这些内容并不是所请求网页中的预期元素。

移动代码脚本攻击也可用于在缓存中写入虚假内容。一旦缓存中的文件中毒,即使合法的Web文档调用缓存中的内容,也会激活恶意内容。

减轻或解决这些攻击并不总是那么简单或直接。没有一个简单的补丁或更新可以防止利用这些漏洞对客户端进行攻击。

这是因为这些攻击利用了内置到各种协议、服务和应用程序中的正常和适当的机制。

因此,防范这类攻击不仅要给缺陷打补丁,更要关注攻击的监测和预防

通常作为开始,应使操作系统和应用程序与各自供应商的补丁保持同步。

接下来,安装主机入侵检测和网络入侵检测工具来监视这些类型的滥用情况。

定期查看DNS和DHCP系统的日志,以及本地客户端系统日志以及可能的防火墙、交换机和路由器日志,以查找异常或可疑事件的条目。

组织应使用拆分DNS系统(也称为水平拆分DNS、视图拆分DNS 和脑拆分DNS)

拆分DNS是部署一个供公共使用的DNS服务器,另外单独部署一个供内部使用的DNS服务器。

公共DNS服务器上的区域文件中的所有数据都可由公众通过查询或探测访问。但内部DNS仅供内部使用。

只有内部系统才会被授权与内部DNS服务器进行交互。

通过阻止传输控制协议(TCP)和用户数据报协议(UDP)的入站端口53来禁止外部人员访问内部DNS服务器。

TCP53用于区域传输(其中包括大多数DNS服务器到DNS 服务器的通信),UDP53用于查询(就是任何向DNS服务器发送查询的非DNS系统)。

内部系统可配置为仅与内部DNS服务器交互,或者可允许它们向外部DNS服务器发送查询(这要求防火墙必须是状态检测防火墙,配置为允许将一个已批

准的出站查询的响应返回到内部系统)。

9.3 基于服务端的系统

基于服务端(可能也包括客户端)的系统安全,关注的重要领域是数据流控制的问题。

数据流是进程之间、设备之间、网络之间或通信通道之间的数据移动。

数据流管理不仅要确保以最小延迟或延时进行高效的传输,还要使用散列确保可靠的吞吐率、使用加密确保保密性。

数据流控制还要确保接收系统不会因流量而过载,尤其是出现连接丢失或遭受恶意(甚至是自己造成的拒绝服务的情况)。

通常通过实施数据流控制以防止数据溢出时数据丢失或损坏,或者可能触发重新传送的要求。

数据流控制可由路由器和交换机等网络设备提供,也可由网络应用和服务提供。

负载均衡器用于在多个网络链路或网络设备之间传播或分配网络流量负载。

负载均衡器可能提供对数据流的更多控制。

负载均衡的目的是获得更优化的基础设施利用率、响应时间最小化、吞吐量最大化、减少过载并消除瓶颈。

尽管可在多种场景下使用负载均衡,但常见的用途是在服务器场或集群的多个成员之间分配负载

负载均衡器可能使用各种技术来执行负载分配,包括随机选择、循环、负载/利用率监控和首选项。

拒绝服务(Denial-Of-Service, DoS)攻击可能对数据流控制造成严重危害。监控DoS攻击并实施缓解措施非常重要。

9.4 数据库系统安全

9.4.1 聚合(Aggregation)

SQL提供了许多函数,这些函数可将一个或多个表中的记录组合在一起,以生成可能有用的信息,此过程称为聚合。

聚合攻击,用来收集大量较低安全级别或较低价值数据项,并将它们组合在一起以生成具有更高安全级别或有价值的数据项。

SQL的这些功能虽然非常有用,但也会对数据库中信息的安全性造成风险。

例如,假设一名低级军事记录员负责更新基地之间的人员和设备的调配记录。

作为其职责的一部分,可向该记录员授予查询和更新人员表所需的数据库权限。

军方可能没有考虑到个人调动请求(换句话说,琼斯中士从基地X 调到基地Y)是机密信息。

记录员可访问该信息,因为他需要它来处理琼斯中士的调动。但是,通过使用聚合函数,记录

员可计算出全球每个军事基地的部队人数。这些武装力量的级别通常是被严密保护的军事机密,

但低级别的记录员可通过在大量未分类数据记录中使用聚合函数来推断出这些内容。

因此,严格控制对聚合函数的访问并充分评估它们可能向未经授权的人披露的潜在信息,

对于数据库安全管理员来说非常重要。

9.4.2 推理(Inference)

推理攻击指组合若干非敏感信息以获取本应该属于更高分类级别的信息。

然而,推理攻击利用的是人类思维的推理能力而不是现代数据库平台的原始计算能力。

推理攻击的一个常见例子是大公司的会计,他们可检索公司的工资总支出,以便在给高层

的报告中使用,但不允许查看个别员工的工资。会计通常必须使用过去的有效日期来准备报告,

因此可获得过去一年中任何一天的工资总额。假如,这位会计还必须知道各个员工的雇用和解

聘日期,并可访问这些信息。这就为推理攻击打开了大门。如果某个员工是在特定日期雇用的

唯一人员,则会计现在可检索该日期和前一天的工资总额,就可推断出该员工的工资,而这本

应该是会计不能直接访问的敏感信息。

针对推理攻击的最佳防御措施是对授予单个用户的权限始终保持警惕

此外,也可故意混淆数据来防止敏感信息的推理

例如,如果会计人员只能检索四舍五入到“百万”

位的工资信息,那么他们可能无法获得有关个别员工的任何有用信息。

最后,还可使用数据库分区来帮助阻止这些攻击

9.4.3 数据挖掘和数据仓库

许多公司使用大型数据库(称为数据仓库)来存储来自各种数据库的大量信息,以便与专门的分析技术一起使用。

由于存储限制或数据安全性问题,数据仓库常包含通常在生产数据库中不存储的详细历史信息。

数据字典通常用于存储关于数据的关键信息,包括用途、类型、来源、关系和格式。

数据库管理系统(DBMS)软件读取数据字典以确定试图访问数据的用户的访问权限。

数据挖掘技术允许分析人员搜索数据仓库并寻找潜在的相关信息。

例如,分析人员可能发现冬季时对灯泡的需求总是增加,然后使用这些信息来规划定价和促销策略。

数据挖掘技术导致了数据模型的开发,数据模型可用于预测未来的活动。

数据挖掘活动产生元数据。

元数据是关于数据的数据或关于信息的数据。元数据不仅仅是数据挖掘操作的结果;

其他功能或服务也可以生成元数据。可将数据挖掘操作中的元数据视为数据浓缩

它也可以是超集、子集或更大数据集的代表。元数据可以是数据集中重要的、有意义的、相关的、不正常的或异常的元素。

元数据的一个常见安全示例是安全事件报告。事件报告是通过使用安全审核数据挖掘工具从审核日志的数据仓库中提取的元数据。

大多数情况下,元数据的价值或敏感度(由于泄露)比数据仓库中的大量数据更高。因此,元数据存储在称为数据集市的更安全的容器中。

数据仓库和数据挖掘对安全专业人员来说意义重大,主要原因有两个。

首先,数据仓库包含大量易受聚合和推理攻击的潜在敏感信息,安全从业者必须确保有足够的访问控制和其他安全措施来保护这些数据。

其次,当数据挖掘用于开发基于统计异常的入侵检测系统的基线时,它实际上可作为安全工具使用。

数据挖掘用于“搜索”与安全相关的大量数据,以杳找司能表明正在进行攻击、损害或破坏的异常事件。

9.4.4 数据分析

数据分析是检查原始数据的科学,其重点是从大批量信息集中提取出有用信息。

数据分析的结果可能集中在与正常或标准项目相比的重要异常值或异常,所有数据项的摘要,或一些有兴趣的信息的提取和组织。

随着越来越多的组织从其客户和产品中大量收集数据,数据分析是

一个不断发展的领域。要处理的大晕信息需要一整套新的数据阵结构和分析工具。它甚至获得了“大数据"的昵称。

大数据是指数据集合已变得非常巨大,以至于传统的分析或处理方法变得无效果、效率低下且不充分。

大数据涉及许多挑战,包括收集、存储、分析、挖掘、传输、分发和结果呈现。

如此大量的数据可能揭示细微的差别和特质,而普通数据集是无法解决的。

从大数据中学习的潜力是巨大的,但处理大数据的负担同样很大。

随着数据量的增加,数据分析的复杂性也会增加。大数据分析需要在大规模并行或分布式处理系统上运行高性能的分析。

在安全性方面,组织正在努力收集更详尽的事件数据和访问数据。收集这些数据的目的是评估合规性、提高效率和检测违规行为。

9.4.5 大规模并行数据系统

并行数据系统或并行计算,是一种设计用于同时执行大量计算的计算系统,通常远超出基本的多处理能力。

它们通常包含的概念是将大型任务划分为更小的元素,然后将每个子元素分配到不同的处理子系统进行并行计算。

这种实现基于这样的想法:某些问题如果可分解成可同时工作的较小任务,则可更有效地解决。

并行数据处理可通过使用不同的CPU或多核CPU, 使用虚拟系统或它们的任意组合来完成。

大规模并行数据系统还必须关注性能、功耗和可靠性/稳定性问题。

在多处理或并行处理的领域内有几个部分。第一个部分关于非对称多处理(AMP)和对称多处理(SMP)。

在AMP中,处理器通常彼此独立地工作。通常,每个处理器都有自己的OS和/或任务指令集。

在AMP下,处理器可配置为仅执行特定代码或对特定任务进行操作(或者允许特定代码或任务仅在特定处理器上运行;在某些情况下可能称为亲和性)。

在SMP中,每个处理器共享一个公共的操作系统和内存。处理器集合还可在单一任务、代码或项目上共同工作。

AMP的一种变体是大规模并行处理(MPP),其中许多SMP系统被链接在一起,以便在多个链接系统中的多个进程上处理单一主任务。

MPP传统上涉及多个机箱,但现代MPP通常在同一芯片上实现。

大规模并行数据管理可能是管理大数据的关键工具,通常涉及云计算、网格计算或对等计算解决方案。

9.5 分布式系统和端点安全

客户端/服务器模型网络的概念也称为分布式系统或分布式体系结构

因此,安全性必须在所有地方解决,而不是只在单个集中的主机上。

分布式体系结构比完整的主机/终端系统更容易出现意想不到的漏洞。

针对分布式体系结构中的潜在漏洞,采取安全措施来实现适当的安全性,并确保消除、减轻或修复此类漏洞。

客户必须遵守对其内容和用户活动实施保护的政策。其中包括:

• 必须对电子邮件进行过滤,使其不会成为恶意软件感染的载体;电子邮件还应遵守管理正当使用且限制潜在责任的政策。

• 必须创建下载/上传策略,以便过滤传入和传出的数据并阻止可疑的内容。

• 系统必须受到可靠的访问控制约束,这可能包括多因素身份验证和/或生物识别,以限制对最终用户设备的访问并防止对服务器和服务的未授权访问。

• 应使用受限用户界面机制并安装数据库管理系统,限制和管理对关键信息的访问,这样用户对敏感资源可进行必要但最少的访问。

• 文件加密可能适用于存储在客户喘计算机上的文件和数据(实际上,驱动器级加密对于笔记本电脑和其他移动计算设备来说是一个好主意,因为这些设备可能在组织的场所之外丢失或被盗)。

• 必须分离和隔离在用户和监管模式下运行的进程,这样可防止对高权限进程和功能进行未经授权和有害的访问。

• 应该创建保护域,以便某个客户端遭受的危害不会自动危害整个网络。

• 应洁楚地标明磁盘和其他敏感材料的安全等级或组织敏感性;程序流程和系统控制应结合起来,以帮助保护敏感材料免受不必要或未授权的访问。

• 应备份桌面计算机上的文件以及服务器上的文件。理想情况下,应使用某种集中形式的备份实用程序,该实用程序与客户端代理软件一起使用以识别和捕获客户存储在安全备份存储归档中的文件。

• 桌面用户需要定期进行安全意识培训,以保待正确的安全意识;有关潜在的威胁要通知他们,并指导他们正确地处理这些威胁。

• 台式计算机及其存储介质盂要防范环境危害(如温度、湿度、断电/电压波动等)。

• 桌面计算机应该包含在灾难恢复和业务连续性计划中,是为了能让用户恢复在其他系统上工作,桌面计算机可能与组织内的其他系统和服务一样重要(或者更重要)。

• 在分布式环境中使用内置和自定义软件的开发人员也需要考虑安全性,包括使用正式的开发和部署方法,例如代码库、变更控制机制、配置管理以及补丁和更新部署。

保护分布式环境意味着要了解它们所面临的漏洞并采用适当的安全控制措施。

这些措施的范围可以从技术解决方案和控制延伸到风险管理的政策和程序,力求限制或避免损失、破坏、有害的泄露等。

在应对漏洞和威胁时,对于对策原则的正确理解是非常重要的。共同的一般性原则是纵深防御。

纵深防御是一种常见的安全策略,用于提供防止各种攻击形式的多层的保护性屏障。

纵深防御(又称多层防御和防御多样性),这种分层安全形式有助于组织避免单一的安全态势。

9.5.1 基于云的系统和云计算

云计算,指通过网络连接在其他地方(而不是本地)执行处理和存储。

云计算通常被认为是基于Internet的计算或远程虚拟化。最终,处理和存储仍然发生在某个地方的计算机上,但区别在于本地操作者不再需要在本地具有该容量或能力。

虚拟机管理程序(也称为虚拟机监视器)是创建、管理和操作虚拟机的虚拟化组件。

运行虚拟机管理程序的计算机称为主机操作系统,在虚拟机管理程序支持的虚拟机中运行的操作系统称为客户操作系统

Type-I虚拟机管理程序,是原生或裸机管理程序。

在此配置中,没有主机操作系统;相反,虚拟机管理程序直接安装到通常主机操作系统安装的硬件上。

Type-I虚拟机管理程序常用来支持服务器虚拟化。这允许最大限度地利用硬件资源,同时消除由主机OS引起的任何风险

Type-II虚拟机管理程序,是托管管理程序。

在这种配置中,在硬件上安装一个标准的常规OS, 然后将虚拟机管理程序作为一个软件应用程序安装。

Type-II虚拟机管理程序通常用于桌面部署,功能包括:客户操作系统提供安全的沙箱区域来测试新代码、允许执行遗留的应用程序、支持来自备用操作系统的应用程序以及为用户提供对主机OS功能的访问等。

云存储,概念是指使用云供应商提供的存储容最作为托管组织数据文件的方法。

云存储可当作一种备份方式或用来支持在线数据服务。

可能涉及的风险:组织的数据存储在另一个设施中的设备上并且受第三方控制。

弹性,指虚拟化和云解决方案根据需要扩展或收缩的灵活性。

主机弹性,意味着可在需要时引导其他硬件主机,然后将虚拟化服务的工作负载分布到新的可用容量上。

此处列出了云计算的一些概念:

•平台即服务(Platform as a Service, PaaS)

平台即服务的概念是将计算平台和软件解决方案提供为虚拟的或者基于云的服务。

这种类型的云解决方案提供了一个平台的所有方面(即操作系统和完整的解决方案包)。

PaaS的主要吸引力在于避免必须在本地购买和维护高端的硬件和软件。

•软件即服务(Software as a Service, Saas)

软件即服务是PaaS的衍生产品。SaaS提供对特定软件应用程序或套件的按需在线访问而不需要本地安装

•基础设施即服务(Infrastructure as a Service, IaaS)

不仅提供按需运营解决方案,还提供完整的外包选项。

这可以包括实用程序或计量计算服务、管理任务自动化、动态扩展、虚拟化服务、策略实施和管理服务以及托管/过滤的互联网连接。

IaaS允许企业通过云系统快速扩展新软件或基于数据的服务/解决方案,而不必在本地安装大量硬件。

本地部署解决方案是传统的部署概念,组织拥有硬件、购买软件许可证,在自己的建筑物内操作和维护系统。

获得硬件和软件许可证的前期初始成本以及持续的运营管理成本,可能比云服务更昂贵。

本地部署解决方案提供完全的定制化:提供本地安全控制、不而要Internet连接并且提供对更新和变更的本地控制。

需要对更新和变更进行大量的管理,需要本地备份和管理,并且扩展更具挑战性。

托管解决方案是一种部署概念,其中组织必须购买软件许可证,然后操作和维护软件。

托管服务提供商拥有、运营和维护支持组织软件的硬件。

云解决方案是一种组织与第三方云提供商签订合同的部署概念。

云提供商拥有、运营和维护硬件和软件。组织按月支付费用(通常基于每个用户计算)以使用云解决方案。

大多数本地环境都可创建或重建为仅限于云的解决方案。

可按如下以下几种方式部署云服务。

私有云(private cloud)

私有云是企业内部网络中的云服务并与Internet隔离。

私有云仅供内部使用。虚拟私有云是由公有云提供商提供的服务,该提供商提供公有云或外部云的独立子部分,供组织内部专用。

公有云(public cloud)

公有云是一种可供公众访问的云服务,通常通过Internet连接。

公有云服务可能需要某种形式的订阅或按使用次数付费,或者也可能免费提供。

虽然公有云中组织或个人的数据通常与其他客户的数据保持分离和隔离,但云的总体目的或用途对所有客户来说都是相同的。

混合云(hybrid cloud)

混合云是私有云和公有云组件的混合体。

例如,组织可以托管专用于内部使用的私有云,但会将一些资源分配到公有云,供公众、业务合作伙伴、客户、外部销售人员等使用。

社区云(community cloud)

社区云是由一组用户或组织维护、使用和支付用于利益共享的云环境,例如协作和数据交换。

与独立访问私有云或公有云相比,可节省一些成本。

快照是虚拟机的备份。它们提供一种从错误或有问题的更新中快速恢复的方法。备份整个虚拟系统而不是等效的本机硬件安装的系统通常更便捷。

虚拟化不会降低操作系统的安全管理要求。因此,补丁管理仍然是必不可少的。修补或更新虚拟化操作系统与传统硬件安装的操作系统的过程相同,还有一个好处,即你可在不关闭服务的情况下修补系统或交换活动系统。另外,不要忘记你还需要更新虚拟化主机。

当使用虚拟化系统时,保护主机的稳定性非常重要。这通常意味着避免将主机用于托管虚拟化元素之外的任何其他目的。如果主机的可用性受到损害,则虚拟系统的可用性和稳定性也会受到损害。

虚拟化系统应该进行安全测试。虚拟化操作系统的测试采用与硬件安装的操作系统相同的方式,例如漏洞评估和渗透测试。

但是,虚拟化产品可能会引入其他独特的安全问题,因此需要调整测试过程以包括这些特性。

云访问安全代理(Cloud Access Security Broker, CASB)是一种实施安全策略的解决方案,可在本地安装也可以基于云。

CASB的目标是在云解决方案和客户组织之间实施适当的安全措施。

安全即服务(Security as a Service, SECaaS)是一个云提供商概念,其中通过在线实体或由在线实体向组织提供安全性。

SECaaS解决方案的目的是降低在本地实施和管理安全性的成本和开销。

SECaaS通常实现为不需要专用本地硬件的纯软件安全组件。

SECaaS安全组件可包括各种安全产品,包括身份验证、授权、审计/记账、反恶意软件、入侵检测、合规性和漏洞扫描、渗透测试和安全事件管理。

云共享责任模型的概念是,当组织使用云解决方案时,提供商和客户之间存在安全性和稳定性责任的划分。

不同形式的云服务(例如SaaS 、PaaS 和IaaS)可能具有不同级别或划分点的共亨责任。

Saas解决方案将大部分管理负担置于云提供商的肩上,而IaaS的管理责任则更倾向于客户。

在选择使用云服务时,重要的是要考虑管理、故障排除和安全管理的细节以及如何在云提供商和客户之间分配、划分或共享这些职责。

9.5.2 网格计算

网格计算,是一种并行分布式处理形式,它将大量处理节点松散地分组,以实现特定处理目标。

网格成员可随机进入和离开网格。通常,网格成员只有在其处理能力不对本地工作造成负担时才加入网格。

当系统处于空闲状态时,它可加入网格组,下载一小部分工作,然后开始计算。

当系统离开网格时,它会保存其工作并可将完成或部分工作元素上传回网格。

已开发用途:寻找智能外星人、执行蛋白质折叠、预测天气、地震建模、规划财务决策和解决素数等众多项目。

网格计算最大的安全问题,是每个工作包的内容可能会暴露给外界。

对全世界开放,网格项目不太可能保护保密性,不适用于私有、机密或专有数据。

不稳定性:对时间敏感的项目可能没有足够的计算时间来按指定的时间截止期限内完成。

潜在风险:可利用被控制的中央网格服务器来攻击网格成员或欺骗网格成员执行恶意操作。

9.5.3对等网络(Peer to Peer, P2P)技术

对等网络是网络和分布式应用程序解决方案,可在点对点之间共享任务和工作负载。

网格计算与P2P区别:P2P没有中央管理系统,其所提供的服务通常是实时的,而不是计算能力的集合。

P2P的常见示例,包括许多VoIP 服务,例如Skype 、BitTorrent(用于数据/文件分发)和Spotify(用于流媒体音频/音乐分发)。

P2P解决方案的安全问题,包括对盗版受版权保护材料的感知诱导、窃听分布式内容的能力、缺乏集中控制/监督/管理/过滤以及服务消耗所有可用带宽的可能性。

9.6 物联网

智能设备,是一系列移动设备,通常通过安装应用程序为用户提供大量的自定义选项,并可利用设备上或云端的人工智能(AI)处理。智能设备包括:智能手机、平板电脑、音乐播放器、家庭助理、极限运动相机和健身追踪器。

物联网(IOT),是一个新的子类别,甚至是一类新的智能设备,它们通过互联网连接,以便为家庭或办公室环境中的传统或新装置或设备提供自动化、远程控制或AI处理。

物联网安全实施方案是将物联网设备部署在单独划分的网络中,且该网络与主网络保持独立和隔离。

9.7 工业控制系统(Industrial Control System, ICS)

工业控制系统是一种控制工业过程和机器的计算机管理设备。

ICS 广泛用于各行各业,包括制造、加工、发电和配电、供水、污水处理和炼油。

分布式控制系统(DCS)

DCS单元通常存在于工业过程计划中,其中从单个位置收集数据并实施对大规模环境的控制的需求是必不可少的。

DCS的一个重要方面是控制元件分布在受监控的环境中,例如生产车间或生产线,并且集中监控位置在收集状态和性能数据的同时也从这些局部控制器发送命令。

DCS本质上是模拟的或数字的,这取决于正在执行的任务或被控制的设备。例如,液体流量值DCS会是模拟系统,而电压调节器DCS可能是数字系统。

可编程逻辑控制器(PLC)

PLC单元实际上是高效的单用途或专用数字计算机。

它们通常用于各种工业机电操作的管理和自动化,例如控制装配线上的系统或大型数字灯显示器(例如体育场内或拉斯维加斯大道的巨型显示系统)。

监控和数据采集(SCADA)

SCADA系统可作为独立设备运行,也可与其他SCADA系统联网,或与传统IT系统联网。

大多数SCADA系统都设计成只有很少的人机界面。通常,它们使用机械按钮和旋钮或简单的LCD屏幕界面(类似于在商用打印机或GPS导航设备上可能看到的)。

联网的SCADA设备可能具有更复杂的远程控制软件接口。

安全性差、易受攻击、不常更新

9.8 评估和缓解基于Web 系统的漏洞

OWASP是一个非营利性安全项目,专注于提高在线或基于Web的应用程序的安全性。

注入攻击,指允许攻击者向目标系统提交代码以便修改其操作和/或损害并破坏其数据集。

注入示例包括:SQL 注入、LDAP 注入、XML 注入、命令注入、HTML注入、代码注入和文件注入。

SQL注入攻击的目标是组织资产,而XSS攻击的目标是网站的客户或访问者。

SQL注入攻击,使用意外的输入来更改或危害Web应用程序。SQL注入攻击不是使用此输入来欺骗用户,而是使用它来获取对底层数据库和相关资产的未授权访问。

可使用两种技术来保护Web应用程序免受SQL注入攻击。

(1)执行输入验证输

入验证允许你限制用户在表单中输入的数据类型。

(2)限制账户权

Web服务器使用的数据库账户应具有可能的最小特权集。如果Web应用程

序只需要检索数据,那么它应该只具有该能力。

元字符是已赋予特殊编程含义的字符。

‘ “ [ ] \ ; & ^ $ . I ? * + { } ( )

转义元字符是将元字符标记为普通字符或常用字符(如字母或数字)的过程,从而消除了它们的特殊编程功能。

通过在字符前添加反斜杠(\&)来实现。

SQL注入 是用于处理前端(通常是Web服务器)和后端数据库之间交互的脚本的一个漏洞。

如果脚本是防御性的,并且包含要转义(作废或拒绝)元字符的代码,将无法进行SQL注入。

LDAP注入 是输入注入攻击的一种变体;但攻击重点是LDAP目录服务的后端而不是数据库服务器。

如果Web 服务器前端使用脚本根据用户的输入来生成LDAP 语句,则LDAP 注入可能是一种威胁。

输入净化和防御性编码对于消除这种威胁至关重要。

XML注入 是SQL注入的另一种变体,其中后端目标是XML应用程序。

同样,输入净化是消除这种威胁所必需的。

XML利用 是一种编程攻击的形式,用于伪造发送给访问者的信息,或者导致他们的系统在未经授权的情况下泄露信息。

安全关联标记语言(SAML) 是一种基于XML的约定,用来组织和交换在安全域之间的用于认证与授权通信的详细信息,通常使用Web协议。

SAML滥用通常集中在基于Web的身份验证方面。SAML通常用来提供基于Web的SSO(单点登录)解决方案。

如果攻击者可以伪造SAML通信或窃取访问者的访问令牌,他们可能会绕过身份验证并获得对站点的未授权访问。

跨站脚本(XSS) 是一种恶意代码注入攻击形式,攻击者可攻击Web服务器并将自己的恶意代码注入发送给其他访问者的内容中。

攻击方法:通过公共网关接口(CGI)脚本、Web服务器软件漏洞、SQL注入攻击、帧利用、DNS重定向、cookie劫持以及许多其他形式的攻击将恶意代码注入网站。

成功的XSS攻击可能导致身份盗窃、凭据盗窃、数据盗窃、经济损失或在来访的客户端上植入远程控制软件。

跨站请求伪造(Cross-Site Request Forgery, XSRF) 与XSS类似。但是,使用XSRF攻击的重点是来访用户的Web浏览器,而不是要访问的网站。

XSRF的主要目的是欺骗用户或用户的浏览器执行超出预期或不会被授权的操作。

这可能包括退出会话、上传网站cookie、更改账户信息、下载账户详细信息、进行购买等。

有一种形式的XSRF感染受害者的系统其恶意软件一直处于休眠状态,直到访问特定的网站时才激活。

然后,恶意软件伪造用户的请求,以欺骗Web服务器并对Web服务器和/或客户端执行恶意操作。

预防措施:

网站管理员可通过在连接的客户端请求敏感或有风险的操作时,要求确认或重新认证来实施针对XSRF的预防措施。

这可能包括要求用户重新输入密码、通过短信或电子邮件向用户发送代码,这些代码然后必须返回给网站、触发基于电话呼叫的验证,或者解答CAPTCHA 。

CAPTCHA(Completely Automated Public Turing Test to Tell Computers and Humans Apart)是一种区分人类和软件机器人的机制。

另一种潜在的保护机制是向每个URL请求和会话建立添加随机化字符串(称为nonce),并检查客户端HTTP请求头引用来防止欺骗。

最终用户可形成更安全的习惯,例如运行反恶意软件扫描程序、使用HIDS、运行防火墙、避免非主流网站、始终从站点注销(而不是关闭浏览器或关闭选项卡或转到另一个URL) 、给浏览器打补丁以及定期清除临时文件(和缓存的cookie) 。

9.9 评估和缓解移动系统的漏洞

9.9.1 设备安全

1. 全设备加密

一些移动设备,包括便携式计算机、平板电脑和移动电话,可提供设备加密。

如果设备的大多数或所有存储介质都可被加密,这通常是一个值得启用的功能。

但加密并不能保证数据的安全,特别是如果设备在已解锁时被盗或者系统本身具有已知的后门攻击漏洞。

当使用网络电话(VoIP)服务时,可在移动设备上进行语音加密。

与到传统固定电话或典型的移动电话的VoIP连接相比,在计算机类设备之间的VoIP服务更可能提供加密选项。

当语音对话被加密时,窃听将变得毫无价值,因为对话的内容是无法解密的。

2. 远程擦除

当设备丢失或被盗后,执行设备远程擦除或远程清除变得越来越普遍。

通过远程擦除,你可远程删除设备中的所有数据(甚至包括配置设置)。

擦除过程可通过移动电话服务或有时通过任何互联网连接触发。

但远程擦除不能保证数据的安全。窃贼可能很聪明,可阻止设备联网而触发擦除功能,然后就可将数据导出。

另外,远程擦除主要是删除操作。使用反删除或数据恢复工具通常可恢复已擦除设备上的数据。

为确保远程擦除能破坏数据而无法恢复,应该对设备进行加密。

这样,反删除操作只能恢复出加密数据,而攻击者将无法解密这些数据。

3. 锁定(Lockout)

移动设备上的锁定类似于公司工作站上的账户锁定。

当用户在重复尝试后未能提供其凭据时,账户或设备将被禁用(锁定)一段时间或直到管理员清除锁定标志。

移动设备可能提供锁定功能,但仅在设置了屏幕锁定时才会启用。

另外,通过简单的屏幕滑动来访问设备不能提供足够的安全性,因为这并没有进行身份验证过程。

随着身份验证失败次数的增加,某些设备会触发更长的延迟。

某些设备在触发持续几分钟的锁定之前允许一定次数的尝试(例如三次)。

其他设备会触发持久锁定,并需要使用其他账户或主密码/代码才能重新获得对设备的访问权限。

4. 锁屏

锁屏旨在防止有人随意拿起来就能使用你的手机或移动设备。

但大多数锁屏都可通过在键盘显示屏上滑动图案或键入数字来解锁。

这些都不是真正的安全操作。屏幕锁定可能有绕过的方法,例如通过紧急呼叫功能访问电话应用程序。

如果黑客通过蓝牙、无线或USB电缆连接到设备,锁屏也不一定能保护设备。

锁屏通常在闲置超过一定时间后触发。

如果系统闲置几分钟,大多数PC会自动触发受密码保护的屏幕保护程序。

同样,许多平板电脑和手机会在30~ 60 秒后触发锁屏并调暗或关闭显示屏。

锁屏功能可确保设备处于无人看管状态或丢失或被盗时,其他任何人都无法访问你的数据或应用程序。

要解锁设备,必须输入密码(或PIN 码)、绘制图案、使用眼球或面部识别、扫描你的指纹或使用接近设备环或片。

NFC(Near-Field Communication, 近场通信)或RFID(Radio-Frequency IDentification, 射频识别)都属于接近设备。

近场通信(NFC) 是在邻近的设备之间建立元线电通信的标准。

它允许你通过将设备接触在一起或将它们放在彼此相距几英寸的范围内来执行设备之间的自动同步和关联。

NFC通常出现在智能手机和许多移动设备配件上。

它通常用来执行设备到设备数据交换、建立直接通信,或访问更复杂的服务,例如通过NFC与无线接入点链接来访问WPA2(WiFi Protected Access 2)加密元线网络。

NFC 是一种基于元线电的技术,因此存在漏洞。针对NFC的攻击包括中间人、窃听、数据操纵和重放攻击。

5. GPS全球定位系统(Global Positioning System, GPS)

许多移动设备包括GPS芯片,以支持定位服务(例如导航)并从中受益,因此可以跟踪这些设备。

GPS芯片本身通常只是轨道GPS卫星信号的接收器。但移动设备上的应用程序可记录设备的GPS位置,然后将其报告给在线服务。

你可使用GPS跟踪来监控自己的移动,跟踪其他人(例如未成年人或送货人员)的移动,或追踪被盗设备。

但要使GPS跟踪能工作,移动设备必须能连接到互联网或无线电话服务,并通过该服务来传送其位置信息。

6. 应用程序控制

应用程序控制是一种设备管理解决方案,能够限制可将哪些应用程序安装到设备上。

它还可用于强制安装特定应用程序或强制执行某些应用程序的设置,以支持安全基线或维护其他形式的合规性。

应用程序控制限制了用户安装来自未知来源或提供与工作无关功能的应用程序的能力,它可减少设备对恶意应用程序的暴露。

7. 存储分隔

存储分隔用于人为地在存储介质上划分各种类型或数据值。

在移动设备上,设备制造商和/或服务提供商可使用存储分隔将设备的OS和预装的应用与用户安装的应用和用户数据隔离。

一些移动设备管理系统进一步强制存储分隔,以便将公司数据和应用与用户数据和应用隔离。

8. 资产跟踪

资产跟踪是用于维护对库存(例如已部署的移动设备)监督的管理过程。

资产跟踪系统可以是被动的或主动的。

被动系统依靠资产本身定期向管理服务签到,或者每当员工到达工作岗位时,设备被检测到位于办公室中。

主动系统使用轮询或推送技术向设备发送查询以引发响应。

你可使用资产跟踪来验证设备是否仍由指定的授权用户拥有。一些资产跟踪解决方案可以定位丢失或被盗的设备。

一些资产跟踪解决方案扩展到硬件库存管理之外,可以监控设备上已安装的应用程序、应用程序使用情况、存储的数据和数据访问。

你可使用此类监控来验证是否符合安全准则,或检查机密信息是否暴露给未经授权的实体。

9. 库存控制

术语“库存控制”可描述硬件资产跟踪(如前一主题中所讨论的)。

然而,它也可以指使用移动设备跟踪仓库或存储柜中的库存。大多数移动设备都有摄像头。

使用移动设备的相机,应用程序可拍摄照片或扫描条形码来跟踪实物商品。

这些具有RFID(Radio-Frequency IDentification, 射频识别)或近场通信(NFC)功能的移动设备能与使用电子标记的对象或其容器进行交互。

10. 移动设备管理(Mobile Device Management, MDM)

移动设备管理是一种软件解决方案,用来完成一个充满挑战的任务,即管理员工用于访问公司资源的无数移动设备。

MDM的目标是提高安全性、提供监控、启用远程管理以及支持故障排除。

很多MDM解决方案支持各种设备,并可跨多个服务提供商进行操作。

你可使用MDM借助无线连接(通过运营商网络)和Wi-Fi连接推送或删除应用程序、管理数据以及强制执行配置设置。

MDM可用于管理公司拥有的设备以及个人拥有的设备(例如,在自带设备[Bring Your Own Device, BYOD]环境中)。

11. 设备访问控制

如果锁定手机能提供真正的安全性,在手机或其他移动设备上设置一个强大的密码将是一个好主意。

但是许多移动设备并不安全,因为即使使用强密码,设备仍可通过蓝牙、无线或USB电缆访问。

如果特定的移动设备在启用系统锁定时阻止对设备的访问,则这是一个值得设置的功能,可设置为在空闲一段时间后自动触发或者手动触发。

当你同时启用设备密码和存储加密时,通常会更有优势。

你应该考虑减少未经授权访问移动设备的任何方法。许多MDM解决方案可以强制锁屏配置并防止用户禁用该功能。

12. 可移动存储

很多移动设备支持可移动存储。某些设备支持MicroSD卡,可用于扩展移动设备上的可用存储空间。

然而,大多数移动电话需要移除背板并且有时需要移除电池才能添加或移除存储卡。

较大的移动电话、平板电脑和笔记本电脑可能支持位于设备侧面易于访问的卡槽。

许多移动设备还支持外部USB存储设备,例如闪存驱动器和外部硬盘驱动器。

这些可能需要特殊的OTG(on-the-go) 电缆。

此外,还有移动存储设备可以通过板载无线接口,基于蓝牙或Wi-Fi提供对存储数据的访问。

13. 关闭不使用的功能

虽然启用安全功能至关重要,但删除应用程序和禁用与业务任务或个人使用无关的功能也很重要。

启用的功能和已安装应用程序的范围越广,攻击或软件缺陷对设备和/或其包含的数据造成损害的可能性越大。

遵循常见的安全措施(例如加固)可减少移动设备的攻击面。

9.9.2 应用安全

1. 密钥管理

在涉及密码技术时,密钥管理始终是一个问题。大多数密码系统的失败都是由于密钥管理而不是因为算法。

好的密钥选择取决于随机数的质量和可用性。

大多数移动设备必须依赖于本地较差的随机数生产机制或通过无线链路访问更强大的随机数生成器(Random Number Generator, RNG) 。

一旦创建密钥,就需要以尽量减少丢失或损害的方式来存储密钥。

密钥存储的最佳选择通常是可移动硬件或使用可信平台模块(Trusted Platform Module, TPM),但这些在手机和平板电脑上都很少见。

2. 凭据管理

在中心位置存储凭据称为凭据管理。

鉴于各种互联网站点和服务的广泛性,每个站点和服务都有自己特定的登录要求,使用唯一的名称和密码可能是一种负担。

凭据管理解决方案提供了一种安全存储大量凭据集的方法。当需要解锁数据集时,这些工具通常使用主凭据集(首选多因素)。

某些凭据管理选项甚至可为应用和网站提供自动登录选项。

3. 身份验证

移动设备或移动设备上的身份验证通常相当简单,尤其是对于移动电话和平板电脑。

但是,滑屏或模式访问不应被视为真正的身份验证。

只要可能,请使用密码、个人身份识别码(PIN) 、眼球或面部识别、扫描指纹或使用接近设备(NFC 或RFID 环或卡)等进行身份验证。

如果能正确实施,这些设备验证手段对于小偷来说是很难绕过的。

如前所述,谨慎的做法是将设备验证与设备加密结合起来以阻止通过连接电缆访问存储的信息。

4. 地理位置标记

具有GPS 支持的移动设备在拍照时,能将地理位置以纬度和经度的形式嵌入照片中,还可嵌入拍摄照片的日期/时间信息。

这允许潜在的攻击者(或愤怒的前任)查看来自社交网络或类似网站的照片,并确定拍摄照片的时间和地点。

这种地理标记也可用于恶意目的,例如确定一个人什么时候进行正常的日常活动。

一旦标有地理标记的照片上传到互联网上,潜在的网络跟踪者可能会获得比上传者预期的更多的信息。

5. 加密

加密通常是防止未经授权访问数据的有效保护机制,无论是存储中还是在传输中。

大多数移动设备提供某种形式的存储加密。如果可用,则应启用它。

一些移动设备提供对通信加密的本地支持,大多数移动设备可运行附加软件(应用程序)为数据会话、语音呼叫和/或视频会议加密。

6. 应用白名单

应用程序白名单是一种安全选项,可禁止未经授权的软件执行。白名单也称为默认拒绝或隐式拒绝。

在应用程序安全中,白名单会阻止任何和所有软件(包括恶意软件)执行,除非它位于预先批准的例外列表(白名单)中。

这与典型的设备安全立场有很大的不同,即默认情况下允许执行,通过例外列表(也称为黑名单)拒绝执行。

由于恶意软件的增长,应用程序白名单方法是保留下来的少数选项之一,它可切实保护设备和数据。

但包括白名单在内的任何安全解决方案都是不完美的。所有已知的白名单解决方案都可通过内核级漏洞和应用程序配置问题来绕过。

9.9.3 BYOD 关注点

BYOD(Bring Your Own Device, 自带设备)是一项策略,允许员工将自己的个人移动设备投入工作,并使用这些设备连接,经由公司网络连接到业务资源和房迈:联网。

BYOD策略替代方案
1.公司拥有个人启用(Company-Owned,Personally Enabled,COPE)
指组织购买设备并将其提供给员工。

然后,每个用户都可自定义设备并将其用于工作活动和个人活动。

COPE 使组织可以准确选择组织网络上允许的设备一特别是可以配置为符合安全策略的设备。

2.自选设备(Choose Your Own Device,CYOD)指为用户提供已获准设备的列表,可从中选择要使用的设备。

如果实施CYOD, 则员工可从已获准的列表(BYOD 的变体)购买自己的设备,

或者公司可以为员工购买设备(COPE 的变体)。

3.企业拥有移动设备的战略是指公司购买符合安全策略的合规移动设备。

这些设备将专门用于公司用途,并且用户不应该在设备上执行任何个人任务。这通常要求员工携带第二个设备以

供个人使用。

4.虚拟桌面基础设施(Virtual Desktop Infrastructure, VD I)是一种降低终端设备的安全风险和性能要求的方法,通过由用户远程访问托管在中央服务器上的虚拟机来实现。

VDI已被应用到移动设备中,并已广泛应用于平板电脑和笔记本电脑。

它是一种在中央服务器上保留存储控制、获得访问更高级别的系统处理和其他资源的手段,并允许低端设备超越其硬件限制获得软件支持和服务。

用户需要了解在工作中使用自己的设备的好处、限制和后果。

1. 数据所有权

当个人设备用于业务工作时,可能将个人数据和业务数据混为一体。

有些设备支持存储分隔,但并非所有设备都能提供按数据类型隔离的功能。

建立数据所有权可能很复杂。例如,如果设备丢失或被盗,公司可能希望触发远程擦除,清除设备中的所有有价值信息。

但是,员工通常会对此产生抵触情绪,尤其是在有希望找到或归还设备的情况下。

擦除可以删除所有业务和个人数据,这对个人可能是个重大损失——特别是如果设备最终找回,因为擦除似乎是一个过度反应。

应建立明确的数据所有权策略。某些MDM解决方案可提供数据隔离/分隔,也支持业务数据清理,而不会影响个人数据。

有关数据所有权的移动设备策略应该解决移动设备的备份问题。

业务数据和个人数据应该受到备份解决方案的保护——可以是设备上所有数据的单一解决方案,也可以是每类数据的单独解决方案。

这可以降低远程擦除事件以及设备故障或损坏时数据丢失的风险。

2. 所有权支持

当员工的移动设备出现失败、故障或损坏时,谁负责设备的维修、更换或技术支持?

移动设备策略应该定义公司将提供哪些支持,哪些留给个人支持,并且如果涉及服务供应商,还要考虑哪些由供应商支持。

3. 补丁管理

移动设备策略应该定义个人拥有的移动设备的补丁管理手段和机制。用户是否负责安装更

新?用户应该安装所有可用的更新吗?组织是否应该在设备安装之前测试更新?是通过服务提

供商更新还是通过Wi-Fi 处理更新?是否有不能使用的移动操作系统版本?需要什么补丁或更

新级别?

4. 反病毒管理

移动设备策略应规定是否要在移动设备上安装反病毒、防恶意软件和反间谍软件扫描程序。

该策略应指明建议使用哪些产品/应用,以及这些解决方案的设置。

5. 取证

移动设备策略应解决与移动设备相关的取证(forensics)和调查问题。

用户需要知道,如果发生安全违规或犯罪活动,他们的设备可能也会被涉及。

策略要求将从这些设备收集证据。一些证据收集过程可能具有破坏性,而且一些法律调查要求没收设备。

6. 隐私

移动设备策略应该涉及隐私和监控。

当个人设备用于商业任务时,用户经常会失去在工作中使用他们的移动设备之前所享有的部分或全部隐私。

员工可能需要同意对他们的移动设备进行跟踪和监控,即使不在公司财产范围和工作时间之内。

在BYOD 下使用的个人设备应被个人视为准公司财产。

7. 入职璃职(On-boarding/Off-boarding)

移动设备策略应解决个人移动设备入职和离职程序问题。

移动设备入职程序包括安装安全、管理和生产应用程序,以及实施安全和高效的配置。

移动设备离职程序包括正式擦除业务数据以及删除任何特定业务的应用程序。

某些清况下,可以规定完整的设备擦除和恢复出厂设置。

8. 遵守公司策略

移动设备策略应明确指出:使用个人移动设备进行业务活动时,员工也要遵守公司策略。

员工应将移动设备视为公司财产,因此即使在非办公场所和非工作时间也要遵守所有限制。

9. 用户接受度

移动设备策略中关于工作中使用个人设备的所有要素都需要明确和具体。

对于许多用户而言,在公司政策下实施的限制、安全设置和MDM 跟踪要比他们预期的更复杂。

因此,在允许个人设备进入生产环境前,组织应该努力充分地解释移动设备策略的细节。

只有在员工表示同意和接受后(通常需要签名),才允许他们的设备进入生产环境。

10. 架构/基础设施考虑

在实施移动设备策略时,组织应评估其网络和安全设计、体系结构和基础设施。

如果每个员工都携带个人设备,那么网络上的设备数量可能会翻倍。

这需要计划处理IP分配、通信隔离、数据优先级管理、增强的入侵检测系统(IDS)/入侵预防系统(IPS)监控负载、在内部和任何互联网链路上增加的带宽消耗。

大多数移动设备都支持无线,因此这可能需要一个更健壮的无线网络来处理Wi-Fi 拥塞和干扰。

移动设备策略需要考虑由此触发的额外基础设施成本。

11. 法律问题

公司律师应评估移动设备的法律问题。

在执行业务任务时使用个人设备可能意味着增加了责任负担和数据泄露风险。

移动设备可以让员工满意,但对组织而言,这可能不是一项有价值或具有成本效益的事情。

12. 可接受使用策略

移动设备策略应该参考公司的可接受使用策略,或者包括专注于独特问题的移动设备特定版本。

随着个人移动设备在工作中的使用,信息泄露、分散注意力以及访问不适当内容的风险在不断增加。

员工应该注意,工作中的主要目标是完成生产任务。

13. 机载摄像头/视频

移动设备策略需要解决带有相机的移动设备的问题。

某些环境禁用任何类型的相机。这将要求移动设备不能有相机。

如果允许使用相机,则应明确记录并向员工解释何时可使用和不可使用相机。

移动设备可当作存储设备,向外部提供商或服务提供备用的无线连接路径,还可用于收集泄露机密信息或装备的图像和视频。

9.10 评估和缓解嵌入式设备和信息物理系统的漏洞

嵌入式系统是作为大系统的一部分而实现的计算机系统。

嵌入式系统通常是围绕一组有限的特定功能设计的,这些特定功能与将其作为组件的较大产品相关。

它的组件可与构成典型计算机系统的组件相同,也可能是微控制器(具有板载内存和外围端口的集成芯片)。

嵌入式系统的示例包括联网的打印机、智能电视、HVAC 控制、智能电器、智能恒温器、车辆娱乐/驾驶员辅助/自动驾驶系统和医疗设备。

静态系统(又称静态环境),是一组不变的条件、事件和环境。

静态IT环境是任何旨在保持不被用户和管理员改变的系统。

目标是防止(或至少减少)用户变更降低安全性或影响功能操作的可能性。

在技术方面,静态环境是为特定需求、能力或功能配置的应用程序、操作系统、硬件集或网络,然后设置为保持不变。

9.10.2保护嵌入式和静态系统的方法

静态环境、嵌入式系统和其他有限或单一用途的计算环境的安全治理:

1. 网络分段

网络分段涉及控制联网设备之间的流量。

完整(或物理)的网络分段是指当网络与所有外部通信隔离时,因此只能在分段网络内的设备之间进行事务处理。

你可使用虚拟局域网(VLAN)或通过其他流量控制手段对交换机强制执行逻辑网络分段,

包括MAC地址、IP地址、物理端口、TCP端口、UDP端口、协议或应用程序筛选、路由和访问控制管理。

网络分段可用于隔离静态环境,以防止更改和/或漏洞影响静态环境。

2. 安全层

当具有不同分类或敏感级别的设备被组合在一起并与其他具有不同级别的组隔离时,就存在安全层。

这种隔离可以是绝对的或单向的。

例如,较低级别可能不能启动与较高级别的通信,但较高级别可启动与较低级别的通信。

隔离也可以是逻辑的或物理的。

逻辑隔离要求在数据和数据包上使用分类标签,这必须得到网络管理、操作系统和应用程序的慎重对待和强制执行。

物理隔离需要在不同安全级别的网络之间实现网络分段或空间隔断。

3. 应用防火墙

应用程序防火墙是一种设备、服务器附件、虚拟服务或系统过滤器,它为服务和所有用户定义了一组严格的通信规则。

它的目的是作为一个特定于应用程厅的服务器端防火墙,以防止特定于应用程序的协议和有效负载攻击。

网络防火墙是一种硬件设备,通常称为装置,专为通用网络过滤而设计。

网络防火墙旨在为整个网络提供广泛保护。

许多应用服务器需要应用防火墙。但是,使用应用程序防火墙通常不会否定对网络防火墙的需求。

应该结合使用这两个防火墙,让它们相互补充。

4. 手动更新

应该在静态环境中使用手动更新,以确保仅执行经过测试和授权的更改。

使用自动更新系统将允许未经测试的更新引入未知的安全性降低。

5. 固件版本控制

严格控制静态环境中的固件非常重要。固件更新应该仅在测试和评审后手动,降低实施。

对固件版本控制的监督应侧重于维护稳定的操作平台,同时最大限度地减少停机时间或损害的风险。

6. 包装器(Wrappers)

包装器用于封装或包含其他内容在安全社区中,包装器与特洛伊木马恶意软件有关是众所周知的。

这种包装器用于将一个良性的主机与恶总负载组合在一起。

包装器也用作封装解决方案。某些静态环境可能配置为拒绝更新、更改或安装软件,除非它们是通过受控通道引入的。

这个受控通道可以是特定的包装器。

包装器可以包括完整性和身份验证特性,以确保仅将预期的和已授权的更新应用于系统。

7. 监控

即使是嵌入式和静态系统,也应监控性能、违规、合规性和运行状态。

其中一些类型的设备可以执行设备自身的监视、审计和日志记录,而其他设备可能需要外部系统来收集活动数据。

应该监控组织内的所有设备、装备和计算机,以确保高性能、最短的岩机时间以及检测和阻止违规和滥用行为。

8. 控制冗余和多样性

纵深防御在文字上或理论上的同心圆或层中使用多种类型的访问控制。

这种分层安全形式有助于组织避免单一的安全状态。

通过具有安全控制的冗余性和多样性,静态环境可避免单个安全功能失败的陷阱;

9.11 基本安全保护机制

9.11.1 技术机制

技术机制是系统设计人员在其构建系统时可使用的控件。

1. 分层

通过分层过程,可实现与用于操作模式的环模型类似的结构,并将其应用于每个操作系统进程。

它将过程中最敏感的功能置于核心,由一系列逐渐扩大的同心圆所包围,这些圆带有相应的逐渐降低的敏感度级别(使用稍微不同的方法解释,有时也会使用术语“上层',

和“下层“,其中从下层上升到上层时,安全性和特权会降低)。

在OS 体系结构的讨论中,受保护环的概念很常见,但它并不是唯一的。

还有其他方法可以表示相同的基本思想,用”级别”来代替“环”。

在这样的系统中,最高级别的特权最高,而最低级别的特权最低。

层与层之间的通信只能通过定义明确的特定接口进行,以提供必要的安全性。所有来自外

部(不太敏感)层的入站请求在被允许之前都要经过严格的身份验证和授权检查(如果未通过此类

检查,则会被拒绝)。使用安全分层类似于使用安全域和基于格的安全模型,因为对特定主体和

客体的安全和访问控制是与特定层和特权关联的,当从外层向内层移动时,访问权限会增加。

事实上,单独的层只能通过旨在维护系统安全性和完整性的特定接口相互通信。尽管不太

安全的外层依赖于来自更安全内层的服务和数据,但它们只知道这些层的接口,并不知道这些

内层的内部结构、特征或其他细节。这样层的完整性得以保持,内层既不知道也不依赖于外层。

在任何一对层之间无论存在何种安全关系,都不能篡改另一层(这样可以保护每一层免受任何其

他层的篡改)。最后,外层不能违反或覆盖内层强制执行的任何安全策略。

2. 抽象

抽象是面向对象编程领域的基本原则之一。正如“黑箱“理论所说:对象(或操作系统组件)

的用户不一定需要知道对象如何工作的细节;用户只需要知道使用对象的正确语法以及作为结

果返回的数据类型(即如何发送输入和接收输出)。这往往涉及对数据或服务的中介访问,例如

用户模式应用程序使用系统调用来请求管理员模式的服务或数据(根据请求者的凭据和权限可

以授予或拒绝此类请求)而不是获得直接无中介的访问。

抽象应用于安全性的另一种方式是引入对象组,有时称为类,其中访问控制和操作权限被

分配给对象组而不是基于每个对象。这种方法允许安全管理员轻松地定义和命名组(名称通常与

工作角色或职责相关),并有助于简化权限和特权的管理(当向类添加对象时,就已经赋予对象

权限和特权,而不必分别管理每个对象的权限和特权)。

3. 数据隐藏

数据隐藏是多级安全系统中的一个重要特征。它确保在一个安全级别存在的数据对于以不

同安全级别运行的进程是不可见的。数据隐藏背后的关键概念是,希望确保那些不需要知道在

一个级别访问和处理数据所涉及细节的人,无法秘密或非法地了解和查看这些细节。从安全角

度看,数据隐藏依赖于将客体放在安全容器中,该容器与主体占用的安全容器不同,对不需要

了解它们的容器隐藏客体的详细信息。

4. 进程隔离

进程隔离要求操作系统为每个进程的指令和数据提供单独的内存空间。它还要求操作系统

强制执行这些边界,从而阻止一个进程读取或写入属于另一个进程的数据。使用这种技术有两

个主要优点:

• 它可防止未经授权的数据访问。进程隔离是多级安全模式系统的基本要求之一。

• 它保护进程的完整性。如果没有这样的控制,设计不佳的进程可能出现混乱并将数据

写入分配给其他进程的内存空间,从而导致整个系统变得不稳定,而不仅仅影响错误

进程的执行。在更具恶意的情况下,进程可尝试(甚至可能成功)读取或写入其范围之外

的内存空间,侵入或攻击其他进程。

许多现代操作系统通过在每个用户或每个进程的基础上实现虚拟机来满足进程隔离的需

求。虚拟机向用户或进程提供处理环境,包括内存、地址空间和其他关键系统资源和服务,允

许该用户或进程表现得好像具有对整个计算机的唯一独占访问权一样。这允许每个用户或进程

独立操作,而不需要识别可能在同一机器上同时活动的其他用户或进程。作为对操作系统提供

的系统中介访问的一部分,它以用户模式映射虚拟资源和访问,以便使用监督模式调用来访问

相应的实际资源。这不仅使程序员更轻松,还保护个人用户和进程不受其他用户和进程影响。

5. 硬件分隔

硬件分隔的目的与进程隔离类似,它阻止了对属于不同进程/安全级别的信息的访问。主要

区别在于硬件分隔通过使用物理硬件控制,而不是操作系统强加的逻辑进程隔离控制来满足这

些要求。这种实现很少,并且它们通常仅限于国家安全实施,其中额外的成本和复杂性被所涉

及信息的敏感性和未授权访问或泄露的固有风险所抵消。

9.11.2 安全策略和计算机架构

安全策略,指导组织中的日常安全运营、流程和过程,也在设计和实现系统时发挥着重要作用。

安全策略的作用是告知和指导特定系统的设计、开发、实现、测试和维护。

对于系统开发人员,安全策略最好以文档的形式出现,该文档定义了一组描述系统应该如何管理、保护和分发敏感信息的规则、实践和过程。

阻止信息从较高安全级别流向较低安全级别的安全策略称为多级安全策略。

9.11.3 策略机制

1. 最小特权原则

第13 章讨论最小特权的一般安全原则以及它如何应用于计算系统的用户。

该原理对于计算机和操作系统的设计也很重要,尤其是将其应用于系统模式时。

在设计操作系统进程时,应该始终确保它们尽可能以用户模式运行。

在特权模式下执行的进程数量越多,恶意个人可利用以获得对系统的监督访问的潜在漏洞数量就越多。

通常,最好使用API 来请求监督模式服务,或者当用户模式应用请求时将控制权交给可信、受到良好保护的监督模式进程,而不是将这些程序或进程也一起提升到监督校式。

2. 特权分离

特权分离原则建立在最小特权原则之上。它需要使用粒度化的访问权限;也就是说,每种类型的特权操作都有不同的权限。

这允许设计者授予一些进程来执行某些监督功能的权限,而不允许它们不受限制地访问系统。

它还允许对照访问控制来检查对服务或资源访问的各个请求,并基于发出请求的用户的身份或用户所属的组或用户的安全角色,授予或拒绝这些请求。

可将职责分离视为对管理员应用最小特权原则。在大多数中型到大荆组织中,有许多管理员,每个管理员都有不同的指定任务。

因此,通常很少或没有个人管理员需要所有环境或者基础设施的完全访问权限。

例如,用户管理员不必具有重新配置网络路由、格式化存储设备或执行备份功能的权限。,

职责分离也是用于防止在分配访问权限和工作任务时发生利益冲突的工具。

例如,那些负责编码的人员不应该同时负贞测试和编写代码。

同样,那些负责账户支付工作的人员不能同时负责账户的收款工作。

有许多这样的工作或任务冲突,可以通过适当的职贞分离来实现安全的管理。

3. 问责制(accountability)

问责制是任何安全设计的重要组成部分。许多高安全性系统包含强制对特权功能进行个人问责的物理设备(例如纸和笔记录的访问者日志和不可修改的审计踪迹)。

但是,一般而言,此类功能依赖于系统监视资源和配置数据的活动和交互的能力,并保护生成的日志免受不必要的访问或更改,以便它们提供该系统上的每个用户(包括具有高级别权限的管理员或其他可信任的个人)准确可靠的活动和交互的历史记录。

除了需要可靠的审计和监控系统来支持问责制外,还必须有一个灵活的授权系统和无懈可击的身份验证系统。

9.12 常见的架构缺陷和安全问题

与安全体系结构漏洞相关的影响计算机系统的一些常见安全问题:

9.12.1 隐蔽通道

隐蔽通道,是一种用于在通常不用于通信的路径上传递信息的方法。

由于此路径通常不用于通信,因此它可能不受系统正常安全控制的保护。使用隐蔽通道提供了一种违反、绕过或损害安全策略且不会被检测到的手段。隐蔽通道是安全架构漏洞的重要示例之一。

隐蔽通道与公开通道相反。公开通道是已知的、预期的、已授权的、经过设计的、受监视的和受监控的通信方法。

有两种基本类型的隐蔽通道:

时间隐蔽通道

时间隐蔽通道通过改变系统组件的性能或以可预测的方式修改资源的时间来传达信息。

使用时间隐蔽通道通常是秘密地传输数据的方法,并且非常难以检测。

存储隐蔽通道

存储隐蔽通道通过将数据写入公共存储区域来传送信息,其中另一个进程可以读取它。

在评估软件的安全性时,请努力寻找那些写入其他进程可以读取的任何内存区域的进程。

两种类型的隐蔽通道都依赖于使用通信技术与其他未经授权的主体交换信息。

因为隐蔽通道超出了正常数据传输环境,所以检测它可能很困难。

对任何隐蔽通道活动最好的防御措施就是实施审核和分析日志文件。

9.12.2 基于设计或编码缺陷的攻击和安全问题

1. 可信恢复

当一个未预料的系统崩溃发生并随后恢复时,可能会有两个危及其安全控制的机会。许多

系统将安全控制卸载作为其关闭过程的一部分。可信恢复可确保在发生崩溃时所有安全控制保

待完整无缺。在可信恢复期间,系统确保在禁用安全控制情况下不会有访问的机会。即使是恢

复运行阶段,所有控件都完好无损时也不会有访问的机会。

例如,假设一个系统崩溃了,而数据库事务正在往磁盘中写数据,而且这个数据库分类为

最高机密。一个未受保护的系统可能允许未经授权的用户在将临时数据写入磁盘之前访问该临

时数据。而支持可信恢复的系统可确保即使在崩溃期间也不会发生数据保密性违规。这个过程

需要仔细规划,处理系统故障的过程也应当就详明的。虽然自动恢复程序可能构成整个恢复的

一部分,但仍可能需要人工干预。显然,如果需要这样的人工操作,对执行恢复的人员进行适

当的识别和身份验证同样重要。

2. 输入和参数检查

最臭名昭著的安全漏洞之一是缓冲区溢出。当程序员未能充分验证输入数据时,尤其是当

他们没有对软件接受的输入数据侬施加限制时,就会发生这种涌洞。山于此类数据通常存储在

输入缓冲区中,因此当超出缓冲区的正常最大尺寸时,额外的数据就称为溢出。因此,当有人

试图提供恶意指令或代码作为程序输入的一部分时产生的攻击类型称为缓冲区溢出。遗憾的是,

在许多系统中,这种溢出数据通常由处于高特权级别的遭受攻击的系统直接执行,或者在接受

这个输入的进程具有的任何特权级别上执行。对于几乎所有类型的操作系统,包括Windows、

Unix、Linux 和其他操作系统,缓冲区溢出都会暴露出一些最明显和最深刻的机会,可以对任

何已知安全漏洞进行破坏和攻击。

负责缓冲区溢出漏洞的责任方始终是程序员,其代码允许未净化或非净化的输入。尽职尽

责的程序员可以完全消除缓冲区溢出,但前提是程序员在将所有输入和参数存储到任何数据结

构之前检查所有输入和参数(J1 限制可以提供多少数据作为输入)。正确的数据验证是泊除缓冲

区溢出的唯一方法。否则,发现缓冲区溢出会导致常见的关键安全更新模式,必须应用于受影

响的系统以关闭攻击点。

3. 维护钩子和特权程序

维护钩子是进入系统的入口点,只有系统开发人员才知道。这样的入口点也称为后门。虽

然维护钩子的存在明显违反了安全策略,但它们仍然在许多系统中出现。后门的最初目的是为

了维护原囚或者当常规访问被蔥外地禁用时,可保证提供对系统的访问。问题是这种类型的访

问绕过了所有安全控制,并且知道后门存在的任何人都可以自由地访问。必须明确禁止此类入

口点并监视审核日志,以发现可能表明未经授权的管理员访问的任何活动。

另一个常见的系统漏洞是执行程序的实践,其执行期间的安全级别进行了提升。必须仔细

编写和测试此类程序,以便它们不允许任何退出和/或入口点存在,以防主体具有更高的安全等

级。确保所有在高安全级别运行的程序只能由适当的用户访问,并且对他们进行加固以防止滥

用。一个很好的例子是Unix/Linux OS 环境中的root 所有的可写可执行脚本。这个重大的安全

漏洞经常被忽视;任何人都可以修改脚本,它将在root 用户上下文中执行,允许创建用户,从

而导致后门访问。

4. 增量攻击

某些形式的攻击以缓慢、渐进的增量发生,而不是通过明显或可识别的尝试来破坏系统安

全性或完整性。两种这样的攻击形式是数据欺骗(data diddling)和salami 攻击。

当攻击者获得对系统的访问权并在存储、处理、输入、输出或事务期间对数据进行小的、

随机的或增量的更改,而不是明显地更改文件内容或损坏或删除整个文件时,就会发生数据欺

骗。除非文件和数据受加密保护,或者除非每次读取或写入文件时例行地执行和应用某种完整

性检查(例如校验和或消息摘要),否则很难检测到这些更改。加密文件系统、文件级加密技术

或某种形式的文件监控(包括由应用程序执行的完整性检查,例如Tripwire 和其他文件完整性监

控[FIM]工具等)通常可提供足够的保证,确保没有数据欺骗正在进行。通常认为由内部人员发

起的数据欺骗攻击比外部人员(即外部入侵者)更频繁。显而易见的是,由于数据欺骗是一种改

变数据的攻击,因此它被认为是主动攻击。

所有已发表的报道都说, salami 攻击更神秘。salami 攻击是指对账户中的资产或具有财务

价值的其他记录系统性地进行削减,其中非常小的金额会定期和例行地从余额中扣除。比方说,

这种攻击可能被解释为每次将香肠放入切片机时,只要付费客户访问,就会从香肠上偷取一个

非常薄的切片。实际上,尽管没有关于此类攻击的文档示例,但大多数安全专家承认salami 攻

击是可能的,特别是当组织内部人员可能参与时。只有通过适当的职责分离和对代码的适当控制,

组织才能完全防止或消除这种攻击。设置金融交易监控器以跟踪非常小的资金或其他有价物品的

转移,应该对检测此类活动有帮助;定期向员工通报的做法应该有助于阻止这种攻击的尝试。

9.12.3 编程

编程中最大的缺陷:缓冲区溢出。

如果程序员未能检查或净化输入数据的格式和/或大小,就会发生缓冲区溢出。

任何不能正常处理任何异常的程序都有进入不稳定状态的危险。

在程序提高安全级别以执行正常任务后,可以巧妙地使程序崩溃。如果攻击者成功地使程序在正确的时间崩溃,他们可以获得更高的安全级别并导致对系统的保密性、完整性和可用性的破坏。

所有直接或间接执行的程序必须经过全面测试,以符合安全模型。

确保安装了所有软件的最新版本,并了解任何已知的安全漏洞。由于每种安全模型和每种安全策略都不同,因此必须确保你执行的软件不超过你允许的权限。

编写安全代码很困难,但它肯定是可能的。确保你使用的所有程序在设计时都考虑了安全问题。

9.12.4 计时、状态改变和通信中断

计算机系统以严格的精度执行任务。计算机擅长执行可重复的任务。

攻击者可以根据任务执行的可预测性来开展攻击。

一个算法的常见事件顺序是检查资源是否可用,然后在允许的情况下访问它。

检查时间(Time Of Check, TOC)是主体检查客体状态的时间。

在返回客体进行访问之前,可能需要做出几个决定。当决定访问该客体时,该过程在使用时间(Time Of Use, TOU)访问它。TOC和TOU之间的差异有时足够大,以至于攻击者可以根据自己的需要用另一个客体替换原始客体。检查时间到使用时间(Time Of Check to Time Of Use, TOCTTOU)攻击通常称为竞争条件,因为在使用之前攻击者正在与合法进程竞争以替换客体。

一个经典的TOCTTOU 攻击是:数据文件在其身份被验证之后且在读取数据之前被替换了。

通过将一个真实的数据文件替换为攻击者选择和设计的另一个文件,攻击者可采用多种方式控

制程序的执行。当然,攻击者必须深入了解受攻击的程序和系统。

同样,当资源状态或整个系统发生变化时,攻击者可以尝试在两个已知状态之间采取行动。

通信中断也给攻击者提供了可能试图攻击的短暂时间窗口。每当对资源进行操作前都要先检查

资源的状态时,在检查和操作之间的短暂间隔中都存在着潜在攻击的机会窗口。这些攻击必须

在安全策略和安全模型中予以解决。

TOCTTOU攻击、竞争条件攻击和通信中断被称为状态攻击,攻击针对的是时间、数据流控制和从一个系统状态到另一个系统状态的转换。

9.12.5 技术和过程集成

评估和理解系统架构中的漏洞非常重要,尤其是在技术和过程集成方面。

由于在制作新的和独特的业务功能的过程中,多种技术和复杂流程相互交织在一起,因此经常出现新的问题和安全隐患。

随着系统的集成,应该关注潜在的单点故障以及面向服务的体系结构(SOA)中浮现出的弱点。

SOA使用现有独立的且不同的软件服务构建新的应用程序或功能。

最终的应用程序通常是个新应用;因此,它的安全问题是未知的、未经测试的和未保护的。

所有新的部署,特别是新的应用程序或功能,在被允许进入生产网络或公共互联网之前,需要进行彻底审查。

9.12.6 电磁辐射(Emit Electromagnetic, EM)

因为计算机硬件是由各种电子元件构成的,许多计算机硬件设备在正常操作期间都会发射电磁辐射

与其他计算机或外围设备通信的过程中产生的电磁波可以被拦截。

通过拦截和处理来自键盘和计算机监视器的电磁辐射,甚至可重新创建键盘输入或监视器输出的数据。

你还可在数据通过网段时被动地检测和读取网络数据包(即实际上不用电缆连接)。

这些辐射泄漏可能会导致严重的安全问题,但通常很容易解决。

消除电磁辐射拦截的最简单方法是通过电缆屏蔽或导管减少辐射,并通过应用物理安全控制来阻止未经授权的人员和设备过于靠近设备或电缆。通过降低信号强度并增加敏感设备周围的物理缓冲区,可以大大降低信号拦截的风险。

如前所述有几种TEMPEST技术可防止EM辐射窃听。

这些包括法拉第笼、干扰或噪音发生器和控制区。

1.法拉第笼,是一种特殊外壳,可用作EM容器。当使用法拉第笼时,没有EM信号可以进入或离开封闭区域。

2.干扰或噪声发生器的思想是:当干扰太大时很难或不可能检索到某个信号。

因此,通过广播自己的干扰,可以防止不希望的EM拦截。

此概念的唯一问题是你必须确保干扰不会影响你自己设备的正常运行。

3.确保这一点的一种方法是使用控制区,这就是用于阻止故意广播干扰的法拉第笼。

例如,如果你想在办公室的几个房间内使用无线网络但不允许在其他地方使用无线网络,则可将这些房间封装在一个法拉第笼中,然后在控制区外部放置几个噪声发生器。这将允许指定房间内进行正常的无线网络连接,但完全阻止在指定区域之外的任何地方正常使用和窃听。

你可能感兴趣的:(#,OSG8,安全)