Every CVE Search/ Get API key

CVE-2026-49283

SimpleSAMLphp HTTP-Artifact TLS validator confusion allows cross-IdP authentication bypass

8.7 HighFix available

The SimpleSAMLphp SAML2 library is a PHP library for SAML2 related functionality. Prior to versions 4.19.3, 4.20.2, 5.0.6, and 6.2.1, the HTTPArtifact::receive() flow can treat an unsigned embedded SAML Response as cryptographically valid for the wrong identity provider. SOAPClient::addSSLValidator() attaches a TLS-based validator to the outer SOAP ArtifactResponse, while the embedded Response receives a validator that delegates to the outer message and is later checked against metadata selected from the embedded response issuer rather than necessarily the artifact issuer. SOAPClient::validateSSL() returns normally when the TLS public key does not match the key being validated, and SAML2\Message::validate() treats a validator call that does not throw as successful. In a multi-IdP federation, a malicious or lower-trust IdP can therefore provide an ArtifactResponse containing an unsigned Response that claims a higher-trust victim IdP as issuer and authenticate as arbitrary users with attacker-chosen assertion attributes, NameID, and session data. This issue is fixed in versions 4.19.3, 4.20.2, 5.0.6, and 6.2.1.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
High
User interaction
None

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
None

Exploit likelihood

0.47%Up 0.1 points since Aug 20, 2026
90%50%10%1%

What each source reports

CVE List Score used 8.7

SimpleSAMLphp HTTP-Artifact TLS validator confusion allows cross-IdP authentication bypass

The SimpleSAMLphp SAML2 library is a PHP library for SAML2 related functionality. Prior to versions 4.19.3, 4.20.2, 5.0.6, and 6.2.1, the HTTPArtifact::receive() flow can treat an unsigned embedded SAML Response as cryptographically valid for the wrong identity provider. SOAPClient::addSSLValidator() attaches a TLS-based validator to the outer SOAP ArtifactResponse, while the embedded Response receives a validator that delegates to the outer message and is later checked against metadata selected from the embedded response issuer rather than necessarily the artifact issuer. SOAPClient::validateSSL() returns normally when the TLS public key does not match the key being validated, and SAML2\Message::validate() treats a validator call that does not throw as successful. In a multi-IdP federation, a malicious or lower-trust IdP can therefore provide an ArtifactResponse containing an unsigned Response that claims a higher-trust victim IdP as issuer and authenticate as arbitrary users with attacker-chosen assertion attributes, NameID, and session data. This issue is fixed in versions 4.19.3, 4.20.2, 5.0.6, and 6.2.1.

Record
CVE-2026-49283
CVSS 3.1
8.7 HighCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N
Weakness
CWE-295
Updated
2026-11-02
EUVDEUVD-2026-62502 8.7

The SimpleSAMLphp SAML2 library is a PHP library for SAML2 related functionality. Prior to versions 4.19.3, 4.20.2, 5.0.6, and 6.2.1, the HTTPArtifact::receive() flow can treat an unsigned embedded SAML Response as cryptographically valid for the wrong identity provider. SOAPClient::addSSLValidator() attaches a TLS-based validator to the outer SOAP ArtifactResponse, while the embedded Response receives a validator that delegates to the outer message and is later checked against metadata selected from the embedded response issuer rather than necessarily the artifact issuer. SOAPClient::validateSSL() returns normally when the TLS public key does not match the key being validated, and SAML2\Message::validate() treats a validator call that does not throw as successful. In a multi-IdP federation, a malicious or lower-trust IdP can therefore provide an ArtifactResponse containing an unsigned Response that claims a higher-trust victim IdP as issuer and authenticate as arbitrary users with attacker-chosen assertion attributes, NameID, and session data. This issue is fixed in versions 4.19.3, 4.20.2, 5.0.6, and 6.2.1.

Record
EUVD-2026-62502
CVSS 3.1
8.7 HighCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-6929-8p9f-26jx 8.7

SimpleSAMLphp HTTP-Artifact TLS validator confusion allows cross-IdP authentication bypass

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.

Record
GHSA-6929-8p9f-26jx
CVSS 3.1
8.7 HighCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N
Weakness
CWE-295
Updated
2026-11-02
NVD 8.7

The SimpleSAMLphp SAML2 library is a PHP library for SAML2 related functionality. Prior to versions 4.19.3, 4.20.2, 5.0.6, and 6.2.1, the HTTPArtifact::receive() flow can treat an unsigned embedded SAML Response as cryptographically valid for the wrong identity provider. SOAPClient::addSSLValidator() attaches a TLS-based validator to the outer SOAP ArtifactResponse, while the embedded Response receives a validator that delegates to the outer message and is later checked against metadata selected from the embedded response issuer rather than necessarily the artifact issuer. SOAPClient::validateSSL() returns normally when the TLS public key does not match the key being validated, and SAML2\Message::validate() treats a validator call that does not throw as successful. In a multi-IdP federation, a malicious or lower-trust IdP can therefore provide an ArtifactResponse containing an unsigned Response that claims a higher-trust victim IdP as issuer and authenticate as arbitrary users with attacker-chosen assertion attributes, NameID, and session data. This issue is fixed in versions 4.19.3, 4.20.2, 5.0.6, and 6.2.1.

Record
CVE-2026-49283
CVSS 3.1
8.7 HighCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N
Weakness
CWE-295
Updated
2026-11-02
OSV 8.7

SimpleSAMLphp HTTP-Artifact TLS validator confusion allows cross-IdP authentication bypass

The SimpleSAMLphp SAML2 library is a PHP library for SAML2 related functionality. Prior to versions 4.19.3, 4.20.2, 5.0.6, and 6.2.1, the HTTPArtifact::receive() flow can treat an unsigned embedded SAML Response as cryptographically valid for the wrong identity provider. SOAPClient::addSSLValidator() attaches a TLS-based validator to the outer SOAP ArtifactResponse, while the embedded Response receives a validator that delegates to the outer message and is later checked against metadata selected from the embedded response issuer rather than necessarily the artifact issuer. SOAPClient::validateSSL() returns normally when the TLS public key does not match the key being validated, and SAML2\Message::validate() treats a validator call that does not throw as successful. In a multi-IdP federation, a malicious or lower-trust IdP can therefore provide an ArtifactResponse containing an unsigned Response that claims a higher-trust victim IdP as issuer and authenticate as arbitrary users with attacker-chosen assertion attributes, NameID, and session data. This issue is fixed in versions 4.19.3, 4.20.2, 5.0.6, and 6.2.1.

Record
CVE-2026-49283
CVSS 3.1
8.7 HighCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N
Weakness
CWE-295
Updated
2026-11-04
OSVDEBIAN-CVE-2026-49283 8.7

The SimpleSAMLphp SAML2 library is a PHP library for SAML2 related functionality. Prior to versions 4.19.3, 4.20.2, 5.0.6, and 6.2.1, the HTTPArtifact::receive() flow can treat an unsigned embedded SAML Response as cryptographically valid for the wrong identity provider. SOAPClient::addSSLValidator() attaches a TLS-based validator to the outer SOAP ArtifactResponse, while the embedded Response receives a validator that delegates to the outer message and is later checked against metadata selected from the embedded response issuer rather than necessarily the artifact issuer. SOAPClient::validateSSL() returns normally when the TLS public key does not match the key being validated, and SAML2\Message::validate() treats a validator call that does not throw as successful. In a multi-IdP federation, a malicious or lower-trust IdP can therefore provide an ArtifactResponse containing an unsigned Response that claims a higher-trust victim IdP as issuer and authenticate as arbitrary users with attacker-chosen assertion attributes, NameID, and session data. This issue is fixed in versions 4.19.3, 4.20.2, 5.0.6, and 6.2.1.

Record
DEBIAN-CVE-2026-49283
CVSS 3.1
8.7 HighCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N
Updated
2026-11-02
OSVGHSA-6929-8p9f-26jx 8.7

SimpleSAMLphp HTTP-Artifact TLS validator confusion allows cross-IdP authentication bypass

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.

Record
GHSA-6929-8p9f-26jx
CVSS 3.1
8.7 HighCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N
Weakness
CWE-295
Updated
2026-11-02
OSVUBUNTU-CVE-2026-49283 8.7

The SimpleSAMLphp SAML2 library is a PHP library for SAML2 related functionality. Prior to versions 4.19.3, 4.20.2, 5.0.6, and 6.2.1, the HTTPArtifact::receive() flow can treat an unsigned embedded SAML Response as cryptographically valid for the wrong identity provider. SOAPClient::addSSLValidator() attaches a TLS-based validator to the outer SOAP ArtifactResponse, while the embedded Response receives a validator that delegates to the outer message and is later checked against metadata selected from the embedded response issuer rather than necessarily the artifact issuer. SOAPClient::validateSSL() returns normally when the TLS public key does not match the key being validated, and SAML2\Message::validate() treats a validator call that does not throw as successful. In a multi-IdP federation, a malicious or lower-trust IdP can therefore provide an ArtifactResponse containing an unsigned Response that claims a higher-trust victim IdP as issuer and authenticate as arbitrary users with attacker-chosen assertion attributes, NameID, and session data. This issue is fixed in versions 4.19.3, 4.20.2, 5.0.6, and 6.2.1.

Record
UBUNTU-CVE-2026-49283
CVSS 3.1
8.7 HighCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
simplesamlphp/saml2
Packagist
6.0.0 up to 6.2.1
6.2.1
simplesamlphp/saml2
Packagist
5.0.0 up to 5.0.6
5.0.6
simplesamlphp/saml2
Packagist
4.20.0 up to 4.20.2
4.20.2
simplesamlphp/saml2-legacy
Packagist
4.20.0 up to 4.20.2
4.20.2
simplesamlphp/saml2
Packagist
before 4.19.3
4.19.3
simplesamlphp/saml2-legacy
Packagist
before 4.19.3
4.19.3
simplesamlphp
Debian:12
All versions, plus listed versions
1.19.7-11.19.7-1+deb12u11.19.7-1+deb12u21.19.7-22.1.8-0.1
Show 5 moreShow less
2.2.6-12.3.11-12.3.11-22.4.8-12.5.3.1-1
None known
simplesamlphp
Debian:14
All versions, plus listed versions
1.10.0-11.11.0-11.12.0-11.12.0~rc1-11.12.0~rc2-1
Show 45 moreShow less
1.13.0-11.13.1-11.13.1-21.13.2-11.14.0-11.14.1-11.14.10-11.14.11-11.14.15-11.14.2-11.14.2-21.14.3-11.14.4-11.14.5-11.14.6-11.14.7-11.14.8-11.14.9-11.15.0-11.15.1-11.15.2-11.15.3-11.15.4-11.16.0-11.16.1-11.16.2-11.16.3-11.17.0-11.17.1-11.17.2-11.17.2-21.17.3-11.17.4-11.17.5-11.17.6-11.17.6-21.18.1-11.18.4-11.18.5-11.18.6-11.18.7-11.18.8-11.19.0-11.19.1-11.19.1-1.1
None known
simplesamlphp/saml2
Packagist
6.0.0 up to 6.2.1, plus listed versions
v6.0.0v6.0.1v6.1.0v6.1.1v6.1.2
Show 5 moreShow less
v6.1.3v6.1.4v6.1.5v6.1.6v6.2.0
6.2.1
simplesamlphp/saml2
Packagist
5.0.0 up to 5.0.6, plus listed versions
v5.0.0v5.0.1v5.0.2v5.0.3v5.0.4v5.0.5
5.0.6
Show 11 moreShow less
Affected packages
PackageAffectedFixed
simplesamlphp/saml2
Packagist
4.20.0 up to 4.20.2, plus listed versions
v4.20.0v4.20.1
4.20.2
simplesamlphp/saml2-legacy
Packagist
4.20.0 up to 4.20.2, plus listed versions
v4.20.0v4.20.1
4.20.2
simplesamlphp/saml2
Packagist
before 4.19.3, plus listed versions
4.6.9v0.1.0v0.1.0-alphav0.3.0v0.4.0
Show 45 moreShow less
v0.4.1v0.4.2v0.5.0v0.6.0v0.6.1v0.6.2v0.6.3v0.6.4v0.7.0v0.7.1v0.8.0v0.8.1v1.0.0v1.1.0v1.10v1.10.1v1.10.2v1.10.3v1.10.4v1.10.5v1.10.6v1.2.0v1.3.0v1.3.1v1.3.2v1.4.0v1.5.0v1.5.1v1.5.2v1.5.3v1.5.4v1.6.0v1.6.1v1.7.0v1.7.1v1.7.2v1.8v1.8.1v1.8.2v1.9v1.9.1v1.9.2v2.0.0v2.0.1v2.1
4.19.3
simplesamlphp/saml2-legacy
Packagist
before 4.19.3, plus listed versions
4.6.9v0.1.0v0.1.0-alphav0.3.0v0.4.0
Show 45 moreShow less
v0.4.1v0.4.2v0.5.0v0.6.0v0.6.1v0.6.2v0.6.3v0.6.4v0.7.0v0.7.1v0.8.0v0.8.1v1.0.0v1.1.0v1.10v1.10.1v1.10.2v1.10.3v1.10.4v1.10.5v1.10.6v1.2.0v1.3.0v1.3.1v1.3.2v1.4.0v1.5.0v1.5.1v1.5.2v1.5.3v1.5.4v1.6.0v1.6.1v1.7.0v1.7.1v1.7.2v1.8v1.8.1v1.8.2v1.9v1.9.1v1.9.2v2.0.0v2.0.1v2.1
4.19.3
simplesamlphp
Ubuntu:Pro:16.04:LTS
All versions, plus listed versions
1.13.2-11.14.0-11.14.0-1ubuntu21.14.0-1ubuntu2+esm1
None known
simplesamlphp
Ubuntu:Pro:18.04:LTS
All versions, plus listed versions
1.14.15-11.15.0-11.15.1-11.15.2-11.15.3-11.15.3-1ubuntu0.1~esm1
None known
simplesamlphp
Ubuntu:Pro:20.04:LTS
All versions, plus listed versions
1.17.5-11.17.6-11.17.6-21.18.1-11.18.4-11.18.4-1ubuntu0.1~esm1
None known
simplesamlphp
Ubuntu:Pro:22.04:LTS
All versions, plus listed versions
1.19.1-11.19.1-1.11.19.1-1.1ubuntu0.1~esm1
None known
simplesamlphp
Ubuntu:24.04:LTS
All versions, plus listed versions
1.19.7-11.19.7-1+deb12u1ubuntu0.1
None known
simplesamlphp
Ubuntu:26.10
All versions, plus listed versions
1.19.7-22.1.8-0.12.2.6-12.3.11-12.3.11-22.4.8-12.5.3.1-1
None known
simplesamlphp
Ubuntu:26.04:LTS
All versions, plus listed versions
1.19.7-2
None known

History

History
RecordedChangedSources
factsOSV
aliasesEUVD
first indexedCVE List, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-49283 is a high vulnerability (CVSS 8.7) in Simplesamlphp Saml2, published July 2, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.47%, the 41st percentile. Fixed in simplesamlphp/saml2 6.2.1.

References

Show 6 moreShow less
This page doesn't list everything

Left out here: 227 versions. The JSON record has them.

MoveEnter Open