Page 47 - 《软件学报》2025年第7期
P. 47
2968 软件学报 2025 年第 36 卷第 7 期
常见的系统配置层面缺陷包括: 1) 配置不一致性, 即分布式系统配置项处理逻辑错误, 导致实现代码与语义设
计不一致; 2) 配置更新失败, 系统运行过程中配置更新失败, 可能导致系统无法响应新的配置或配置回退错误;
3) 系统配置兼容错误, 不同系统配置项组合出现兼容性冲突, 导致系统错误; 4) 权限配置错误, 权限设置不当, 可
能导致安全漏洞或访问控制失效; 5) 依赖配置错误, 配置项之间的依赖关系处理错误, 导致服务无法正确启动或依
赖服务不可用; 6) 冗余配置项, 不必要的配置项增加了代码复杂性和错误的可能性.
1.2.2 用户请求层面缺陷
用户请求 (client requests) 指的是用户通过服务接口向系统发送的操作请求, 如数据查询、事务处理或执行特
定服务的请求. 它是分布式系统交互的基础, 影响系统设计、资源分配和性能优化. 随着业务功能的扩展, 复杂的
业务逻辑容易在实现过程中引入缺陷. 由于大多数服务接口对外开放, 用户请求层面的缺陷可能被攻击者利用, 通
过构造大量恶意请求触发系统缺陷, 严重威胁系统的可用性和安全性. 例如, 2018 年 2 月, GitHub 遭遇了一次峰值
达 1.35 Tb/s、包发送速率达 1.269 亿个/s 的 DDoS 攻击, 导致服务瘫痪数小时 [41] .
常见的用户请求层面缺陷有: 1) 请求处理缺陷: 不正确的代码实现导致请求处理过程中发生错误的行为或返
回错误的处理结果. 2) 请求超时缺陷: 请求超时处理代码缺陷导致系统处理错误. 3) 并发处理错误: 多个并发请求
导致的数据竞争、死锁或其他并发控制问题. 4) 负载均衡失效: 负载均衡机制失效, 导致某些节点过载而其他节点
闲置. 5) 服务降级失败: 在高负载或故障情况下, 服务降级策略未能有效执行, 导致用户体验下降. 6) 权限控制错
误: 用户权限控制不当, 导致能够访问不应有的资源或操作.
1.2.3 节点消息层面缺陷
在分布式系统中, 节点间协同消息 (node messages) 用于实现系统组件间的通信与协调, 使其能统一运作并处
理用户请求和内部事件 [42,43] . 因此, 节点消息处理中的代码缺陷可能危害系统的一致性和正确性. 此外, 在支持拜
占庭容错 (Byzantine fault tolerance) 的系统中, 攻击者可伪装成正常节点, 发送恶意消息, 若代码存在缺陷, 可能破
坏分布式系统的共识机制, 威胁数据一致性和系统安全 [44–46] . 例如, Go-Ethereum 中的共识缺陷可能导致网络分区,
攻击者可利用此漏洞通过发送恶意共识消息包控制部分网络, 进行双花攻击, 从而破坏区块链的不可逆性并造成
严重经济损失 [47,48] .
常见的节点消息层面缺陷有: 1) 消息返回错误: 节点收到不符合预期的消息包, 导致处理行为异常. 2) 消息丢
失: 节点消息丢失后重试处理机制代码缺陷, 导致协同失败. 3) 通信 IO 错误: 节点间通信网络 IO 处理缺陷导致消
息持续阻塞, 分布式协同无法进行. 4) 共识不一致: 攻击者发送恶意消息, 利用节点共识逻辑中的缺陷破坏系统一
致性. 5) 网络错误分区: 网络连接逻辑代码缺陷导致错误的分布式分区, 影响系统一致性. 6) 消息处理死锁: 消息
处理过程中出现死锁, 导致系统停滞.
1.2.4 环境交互层面缺陷
在分布式系统中, 环境交互指系统与其运行环境的相互作用, 包括物理环境 (如硬件、网络设施) 和软件环境
(如操作系统、中间件) 的交互 [49] . 良好的容灾机制能够保障系统在各种条件下稳定运行, 提高适应性和鲁棒性. 然
而, 分布式环境复杂多变, 系统与环境交互中可能遇到延迟、丢包、磁盘崩溃、CPU 故障等问题, 若错误处理代
码存在缺陷, 可能导致性能下降、数据不一致或服务中断等. 例如, 2017 年 Amazon Web Services (AWS) 的 S3 服
务中断 [50] , 由一次小的网络延迟引发服务器子系统崩溃, 导致大范围互联网服务中断. Facebook 平台的节点故障
恢复错误 [4] , 导致其自身服务及使用 Facebook 身份验证的第三方网站长时间中断, 造成巨大经济损失.
常见的环境交互层面缺陷包括: 1) 节点重启错误: 节点重启逻辑处理不当, 导致分布式节点大面积瘫痪且无
法恢复; 2) 服务恢复缺陷: 故障处理代码中的缺陷导致系统服务长时间挂起, 无法处理正常业务; 3) 部分服务故障:
部分服务出现故障而无法响应, 而非整个系统服务; 4) 数据恢复失败: 系统故障后的数据恢复机制不完善, 导致数
据丢失或无法访问; 5) 冗余策略失效: 冗余机制代码缺陷, 导致在故障时无法提供备份支持; 6) 多故障协调错误:
系统在面对多故障同时发生时, 未能有效协调处理, 导致系统失效.

