知识卡片
软件架构脆弱性:为何架构层面的缺陷危害最大
内容
软件架构脆弱性是软件设计脆弱性(或软件结构脆弱性)中层次最高的一种,指的是:架构设计存在明显或隐含的缺陷,攻击者可以利用这些缺陷攻击系统,或者系统在受到某个外部刺激时,性能、稳定性、可靠性、安全性会随之下降——具备这类缺陷的架构就被认为是脆弱的架构。它之所以比其他层次的脆弱性(模块级、接口级、实现级)更需要重视,原因在于波及范围:架构处于系统设计的最高抽象层次,几乎所有下层模块、接口和实现都要在这个架构骨架上生长出来,一旦架构本身存在缺陷,性能下降、可靠性变差、安全性降低、乃至系统整体崩溃都可能随之而来,而这些后果是局部模块或某个接口的缺陷通常波及不到的范围。软件架构脆弱性还有一个区别于其他脆弱性研究的特点:它与具体的架构风格、架构模式紧密绑定——不同风格和模式各自暴露的脆弱性表现、特点都不一样,要解决脆弱性问题时需要考虑的因素和能采取的具体措施也随之不同(比如分层架构的脆弱性体现在层间调用链的错误传播和通信开销,微服务架构的脆弱性体现在分布式系统本身的复杂性),这意味着”架构脆弱性”不存在一套脱离具体风格的通用检测和修复方法,必须结合具体采用的架构模式逐一分析——这也是本章接下来要逐一分析11种常见架构模式各自脆弱性表现的原因。
参考来源
- 位置:《软件架构理论与实践》第21章《软件架构脆弱性》"21.3 典型的软件架构脆弱性"节引言部分(源文件:_epub-src/OEBPS/text00178.html)
- 结论依据:原文说明"软件架构脆弱性是更高层次的软件结构脆弱性,也是更加重要的软件脆弱性问题,因为如果软件架构脆弱性问题处理不好,将导致系统的性能急剧下降、可靠性很差、安全性很低,甚至导致系统很容易崩溃",并指出"软件架构脆弱性通常与软件架构的风格和模式有关……解决脆弱性问题需要考虑的因素和采取的措施也有很大不同",直接支撑本卡片结论。
- 原始内容:软件(系统)架构设计存在一些明显的或者隐含的缺陷,攻击者可以利用这些缺陷攻击系统,或者当受到某个或某些外部刺激时,系统发生性能、稳定性、可靠性、安全性下降等。如果软件架构具备这类缺陷,我们认为该软件架构是脆弱的。