Saml2: SimpleSAMLphp HTTP-Artifact TLS validator confusion allows cross-IdP authentication bypass (CVE-2026-49283)
## Summary SimpleSAMLphp's HTTP-Artifact receive path can treat an unsigned embedded SAML `Response` as cryptographically valid for the wrong IdP. In the `HTTPArtifact::receive()` flow, the SOAP `ArtifactResponse` receives a TLS-based validator from `SOAPClient::addSSLValidator()`. The embedded SAML `Response` then receives a validator that delegates signature validation to that outer `ArtifactResponse`. Later, the SP validates the embedded `Response` against metadata selected from the embedded response issuer, not necessarily the artifact issuer. The critical issue is that `SOAPClient::validateSSL()` returns normally when the TLS public key does not match the key currently being validated. `SAML2\Message::validate()` treats any validator call that does not throw an exception as successful. As a result, an `ArtifactResponse` obtained from one IdP can validate an unsigned embedded SAML `Response` that claims to be issued by a different IdP. In a multi-IdP/federation deployment where a malicious or lower-trust IdP can issue an HTTP-Artifact response to an SP, this can allow the attacker to authenticate to the SP as arbitrary users from a higher-trust victim IdP. ## Impact A malicious or lower-trust IdP in the same SP/federation trust set can authenticate to the SP as users from another IdP when HTTP-Artifact is used. The attacker can choose assertion attributes, `NameID`, and session data in the forged unsigned assertion. This is an authentication bypass and identity-provider impersonation issue. In realistic federations, the security boundary between IdPs matters: a compromised or low-assurance IdP should not be able to mint identities for a high-assurance IdP.
AI Analysis
Technical Summary
The vulnerability in SimpleSAMLphp's HTTP-Artifact receive flow involves the SOAP ArtifactResponse receiving a TLS-based validator that incorrectly validates an unsigned embedded SAML Response. The validation logic delegates signature checks to the outer ArtifactResponse's TLS validator, which returns success even if the TLS public key does not match the expected key. Consequently, an ArtifactResponse from one IdP can validate an unsigned SAML Response claiming to be from a different IdP. In multi-IdP federations, this flaw allows a malicious or lower-trust IdP to authenticate as arbitrary users from a higher-trust IdP, enabling authentication bypass and identity-provider impersonation.
Potential Impact
An attacker controlling a malicious or lower-trust IdP in the same federation can forge unsigned SAML assertions to authenticate to the SP as users from a different, higher-trust IdP. This compromises authentication integrity and allows impersonation of arbitrary users, including control over assertion attributes, NameID, and session data. The security boundary between IdPs is broken, undermining trust assumptions in federated identity deployments.
Mitigation Recommendations
A fix is available in SimpleSAMLphp versions 6.2.1, 5.0.6, and 4.20.2 and later. Users should upgrade to these or newer versions to remediate the vulnerability. No vendor advisory content was provided to indicate alternative mitigations or temporary fixes. Patch status is confirmed by the affected version ranges indicating fixed versions. Immediate upgrade is recommended to prevent authentication bypass.
Saml2: SimpleSAMLphp HTTP-Artifact TLS validator confusion allows cross-IdP authentication bypass (CVE-2026-49283)
Description
## Summary SimpleSAMLphp's HTTP-Artifact receive path can treat an unsigned embedded SAML `Response` as cryptographically valid for the wrong IdP. In the `HTTPArtifact::receive()` flow, the SOAP `ArtifactResponse` receives a TLS-based validator from `SOAPClient::addSSLValidator()`. The embedded SAML `Response` then receives a validator that delegates signature validation to that outer `ArtifactResponse`. Later, the SP validates the embedded `Response` against metadata selected from the embedded response issuer, not necessarily the artifact issuer. The critical issue is that `SOAPClient::validateSSL()` returns normally when the TLS public key does not match the key currently being validated. `SAML2\Message::validate()` treats any validator call that does not throw an exception as successful. As a result, an `ArtifactResponse` obtained from one IdP can validate an unsigned embedded SAML `Response` that claims to be issued by a different IdP. In a multi-IdP/federation deployment where a malicious or lower-trust IdP can issue an HTTP-Artifact response to an SP, this can allow the attacker to authenticate to the SP as arbitrary users from a higher-trust victim IdP. ## Impact A malicious or lower-trust IdP in the same SP/federation trust set can authenticate to the SP as users from another IdP when HTTP-Artifact is used. The attacker can choose assertion attributes, `NameID`, and session data in the forged unsigned assertion. This is an authentication bypass and identity-provider impersonation issue. In realistic federations, the security boundary between IdPs matters: a compromised or low-assurance IdP should not be able to mint identities for a high-assurance IdP.
CVSS v3.1
Score 8.7high
Affected software
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability in SimpleSAMLphp's HTTP-Artifact receive flow involves the SOAP ArtifactResponse receiving a TLS-based validator that incorrectly validates an unsigned embedded SAML Response. The validation logic delegates signature checks to the outer ArtifactResponse's TLS validator, which returns success even if the TLS public key does not match the expected key. Consequently, an ArtifactResponse from one IdP can validate an unsigned SAML Response claiming to be from a different IdP. In multi-IdP federations, this flaw allows a malicious or lower-trust IdP to authenticate as arbitrary users from a higher-trust IdP, enabling authentication bypass and identity-provider impersonation.
Potential Impact
An attacker controlling a malicious or lower-trust IdP in the same federation can forge unsigned SAML assertions to authenticate to the SP as users from a different, higher-trust IdP. This compromises authentication integrity and allows impersonation of arbitrary users, including control over assertion attributes, NameID, and session data. The security boundary between IdPs is broken, undermining trust assumptions in federated identity deployments.
Mitigation Recommendations
A fix is available in SimpleSAMLphp versions 6.2.1, 5.0.6, and 4.20.2 and later. Users should upgrade to these or newer versions to remediate the vulnerability. No vendor advisory content was provided to indicate alternative mitigations or temporary fixes. Patch status is confirmed by the affected version ranges indicating fixed versions. Immediate upgrade is recommended to prevent authentication bypass.
Technical Details
- Gcve Source
- db.gcve.eu
- Osv Id
- GHSA-6929-8p9f-26jx
- Osv Schema Version
- 1.4.0
- Aliases
- ["CVE-2026-49283"]
- Ecosystems
- ["Packagist"]
- Database Specific Severity
- HIGH
- Cvss Version
- 3.1
Threat ID: 6a46ecb227e9c7971943c58f
Added to database: 07/02/2026, 22:56:50 UTC
Last enriched: 07/02/2026, 23:08:16 UTC
Last updated: 07/31/2026, 12:27:30 UTC
Views: 55
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.