18.7 系统架构的脆弱性分析
18.7.1 概述
安全架构的设计核心是采用各种防御手段确保系统不被破坏,而系统的脆弱性分析是系统安全性的另一方面技术,即系统漏洞分析。
漏洞的来源:
1.软件设计时的瑕疵
2.软件实现中的弱点
3.软件本身的瑕疵
4.系统和网络的错误配置
18.7.2 软件脆弱性
1.软件脆弱性定义
软件脆弱性是指由软件缺陷的客观存在所形成的一个可以被 攻击者利用的实例
2.软件脆弱性的特点和分类
主要特点:
1.系统中隐藏的弱点,本身无危害,被利用后产生严重后果
2.根本来源是开发过程中引入的逻辑错误
3.系统环境差异可能导致不同的脆弱性
4.修改旧的脆弱性可能会引入新的脆弱性
典型分类:ISOS 分类法、 P A分类法、 Landwehr分类法、 Aslam 分类法、 Bishop分类法和IBM 分类法。
3.软件脆弱性的生命周期
包含 了引入、产生破坏效果、被修补和消失等阶段
4.软件脆弱性的分析方法
软件脆弱性分析可从三个方面考虑:
(1)分析软件故障现象,分析故障的技术本质、总结脆弱性模式;
(2)分析软件开发,发现安全管理和技术的薄弱环节,提高软件安全性;
(3)分析软件使用,发现其脆弱性,采取相应措施,避免脆弱性转化为安全故障。
软件脆弱性分析首先要明确分析对象,脆弱性分析对象可以分为两类:脆弱性数据 和软件系统。
常用的探测工具是扫描器,它 能够自动检测远程或本地主机安全脆弱性的程度
脆弱性扫描器采用的是基于特征的扫描方法,依据具体特征库进行判断,关键在于脆弱性特征库的规模和完善程度。
18.7.3 典型软件架构的脆弱性分析
1.分层架构
大多数分层架构模式通常包括4个层次: 即表示层、业务层、持久化层和数据库层。
脆弱性主要表现:
(1)层间的脆弱性。
(2)层间通信的脆弱性。
2.C/S 架构
C/S分为两部分:服务器部分和客户机部分
脆弱性主要表现
(1)客户端软件的脆弱性
(2)网络开放性的脆弱性。
(3)网络协议的脆弱性。
3.B/S架构
脆弱性主要表现
使用 HTTP 协议,更容易被病毒入侵
4.事件驱动架构
事件驱动架构是一种分布式异步架构,适合高扩展工程的、较流行的分布式 异构架构模式,有较高柔性,它由高度解耦、单一目的异步接收的事件处理组件和处理事件组成。
脆弱性主要表现
(1)组件的脆弱性
(2)组件间交换数据的脆弱性
(3)组件间逻辑关系的脆弱性
(4)事件驱动容易进入死循环
(5)高并发的脆弱性
(6)固定流程的脆弱性
5.MVC架构
应用可被分成三层:模型层、视图层和控制层
脆弱性主要表现
(1)MVC架构的复杂性带来脆弱性
(2)视图与控制器间紧密连接的脆弱性
(3)视图对模型数据的低效率访问的脆弱性
6.微内核架构
微内核架构是指内核的一种精简形式,通常由内核系统和插件组成
脆弱性主要表现
(1)微内核架构难以进行良好的整体化优化
(2)微内核系统的进程间通信开销大
(3)通信损失率高
7.微服务架构
微服务架构是一种架构模式,它提倡将单块架构的应用划分成一组小的服务,服务之间相 互协调、相互配合、为用户提供最终价值。
脆弱性主要表现
(1)开发人员需要处理分布式系统的复杂结构。
(2)开发人员要设计服务之间的通信机制
(3)服务管理的复杂性