Ruby-saml 因 XML 解析器命名空间处理差异导致 SAML 认证绕过漏洞剖析

news/2025/12/10 21:40:19/文章来源:https://www.cnblogs.com/qife122/p/19333286

Ruby-saml 因命名空间处理(解析器差异)导致 SAML 认证绕过

漏洞编号:CVE-2025-66567

严重程度:严重 (CVSS 9.3)

漏洞详情

受影响的软件包:ruby-saml (RubyGems)
受影响版本:< 1.18.0
已修复版本:1.18.0

漏洞描述

摘要

在 ruby-saml 1.12.4 及更早版本中存在一个身份验证绕过漏洞。此漏洞源于对 CVE-2025-25292 的不完全修复。ReXML 和 Nokogiri 这两个 XML 解析器对同一 XML 输入会生成完全不同的文档结构,这使得攻击者能够执行签名包装(Signature Wrapping)攻击。该漏洞在 1.18.0 版本中已得到修复。

影响

此漏洞允许攻击者执行签名包装攻击,从而绕过身份验证机制。

参考信息

  • GHSA-9v8j-x534-2fx3
  • SAML-Toolkits/ruby-saml 提交记录 e9c1cdb
  • GHSA-754f-8gm6-c4r2

技术细节

漏洞根源:解析器差异

核心问题在于 Ruby 生态中常用的两个 XML 解析库——ReXML 和 Nokogiri——在处理 XML 命名空间时存在行为差异。这种差异导致它们从相同的 XML 输入构建出不同的文档对象模型结构。

攻击者可以精心构造一个 SAML 响应,利用这种解析差异来欺骗 ruby-saml 库的签名验证逻辑。即使 XML 签名本身在密码学上是有效的,但由于解析后的文档结构不同,库可能会错误地验证了一个并非实际由签名保护的 XML 节点,从而绕过了身份验证。

弱点分类

CWE 标识:CWE-347 - 加密签名验证不当
该产品未能验证或错误地验证了数据的加密签名。

CVSS v4.0 评分详情

  • 攻击向量 (AV):网络 (N)
  • 攻击复杂度 (AC):低 (L)
  • 攻击前提 (AT):无 (N)
  • 所需权限 (PR):无 (N)
  • 用户交互 (UI):无 (N)
  • 受影响系统的机密性影响 (VC):高 (H)
  • 受影响系统的完整性影响 (VI):高 (H)
  • 受影响系统的可用性影响 (VA):无 (N)
  • 后续系统的机密性影响 (SC):无 (N)
  • 后续系统的完整性影响 (SI):无 (N)
  • 后续系统的可用性影响 (SA):无 (N)

完整向量字符串:CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

修复与缓解

用户应立即将 ruby-saml 库升级到 1.18.0 或更高版本,以完全修复此漏洞。在此之前,没有已知的完整缓解措施。开发者应审查其应用程序中对 SAML 处理的依赖,并确保所有相关组件都已更新。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/997406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

按DDD领域分析Openfeign

按DDD领域分析Openfeign 请关注微信公众号:阿呆-bot 1. 入口类及说明 1.1 入口类:Feign 和 ReflectiveFeign Feign 是抽象工厂类,ReflectiveFeign 是其基于反射的实现,负责创建 HTTP API 代理实例。 public abstra…

东方博宜OJ 4567:树的根 ← 邻接表 or 链式前向星

​【题目来源】https://oj.czos.cn/p/4567【题目描述】一棵有 N 个结点的树,树上结点编号为 1 到 N。已知树上 N-1 条边,且已知每条边的父子关系。请编程求出树上根结点的编号。【输入格式】第 1 行输入一个整数 N 代…

Python threading.Lock() thread lambda

import uuid from datetime import datetime import time import threadingprint(datetime.now().strftime(%Y%m%d%H%M%S%f)) idx=0 idx_lock=threading.Lock()def get_uuid_time():global idxwith idx_lock:idx+=1cur…

准确率和召回率的平衡点

目录🚪 决策阈值和 Agent 的“信心”1. 追求高准确率(Precision)2. 追求高召回率(Recall)总结:二者间的权衡曲线 您的问题非常关键,这是理解所有分类模型(包括智能体 Agent)性能评估时最核心的逻辑之一:准确…

Python 面向对象编程 (OOP) 核心:类、封装与继承

如果说函数式编程像是按照食谱一步步做菜,那么面向对象编程 (Object-Oriented Programming, OOP) 就像是管理一个餐厅。你需要设计不同的角色(厨师、服务员、经理),赋予他们职责,并让他们协同工作。 在 Python 中…

12/10

今天无事,就两节课,明天篮球课考试

完整教程:分享一个基于服务端地图服务裁剪的方法

完整教程:分享一个基于服务端地图服务裁剪的方法pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…

并发编程的三大基石:从底层逻辑聊透“同步、互斥与分工”

并发编程的三大基石:从底层逻辑聊透“同步、互斥与分工”当单核性能的狂飙突进时代缓缓落幕,多核架构已成为算力增长的主旋律。然而,更多的核心并不天然等同于更强的性能。这就像将一条单行道拓宽为多车道高速公路,…

个人电脑本地私有知识库解决方案:访答知识库全面解析

个人电脑本地私有知识库解决方案:访答知识库全面解析 什么是本地私有知识库 本地私有知识库是一种安装在个人电脑上的知识管理软件,所有数据都存储在本地设备而非云端。这种解决方案特别适合注重数据隐私和安全性的用…

【Agent】MemOS 源码笔记---(4)---KV Cache

【Agent】MemOS 源码笔记---(4)---KV Cache 目录【Agent】MemOS 源码笔记---(4)---KV Cache0x00 概要0x01 原理1.1 技术路径1.2 对比1.3 协同工作0x02 定义2.1 KV Cache的记忆结构2.2 API总结 (KVCacheMemory)2.3 KVCa…

2025.12.10

做四级题,吃烤肉然后来学校换衣服,开会

大数据存储新范式:RustFS与Hadoop生态无缝集成实战指南

大数据存储新范式:RustFS与Hadoop生态无缝集成实战指南在数据量爆炸式增长的今天,我们团队面临一个现实问题:原有HDFS集群在成本、性能和运维复杂度上的三重压力。经过半年的探索实践,我们成功用RustFS替代HDFS作为…

Ai元人文构想:黑箱之渡,白箱之锚——大行为模型践行意义行为原生

Ai元人文构想:黑箱之渡,白箱之锚——大行为模型践行意义行为原生 引言:从意义通胀到意义行为 我们正身处一场深刻的“意义通胀”。大型语言模型(LLM)的“黑箱”以前所未有的规模吞吐符号、编织叙事,生产出海量流…

在 .Net 8 WEBAPI 中实现实体框架的 Code First 办法

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

60

所学时间:10小时

Coppersmith 学习笔记

基础不牢 地动山摇我咋到现在了才会这玩意 Coppersmith:求解 \(f(x) \equiv 0 \pmod p\),其中 \(p | N\) 是 N 的某个因子。 我们可以构造若干新的多项式,使得它的根与原多项式是相同的。例如,可以构造 \(f(x)^2, …

python —— 树的遍历 —— 深度优先遍历(先序、中序、后序) —— 非递归方式(使用栈数据结构进行辅助)

python —— 树的遍历 —— 深度优先遍历(先序、中序、后序) —— 非递归方式(使用栈数据结构进行辅助)代码:(以下示例使用先序遍历) # 2**n - 1 # 全二叉树 # n=4 2**4 - 1 = 15 import random node_v = [2,…

【SQL技术】不同数据库引擎 SQL 优化方案剖析 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

C++ 循环结构:控制程序重复执行的核心机制 - 教程

C++ 循环结构:控制程序重复执行的核心机制 - 教程2025-12-10 21:08 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displ…

ASP.NET 实战:用 CSS 选择器打造一个可搜索、响应式的书籍管理系统 - 教程

ASP.NET 实战:用 CSS 选择器打造一个可搜索、响应式的书籍管理系统 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-famil…