{"id":"CVE-2026-49284","aliases":["DEBIAN-CVE-2026-49284","EUVD-2026-45284","GHSA-q8r6-xj3f-wrrm","UBUNTU-CVE-2026-49284"],"status":"published","title":"SimpleSAMLphp SP accepts a response from an unexpected IdP when unsigned `Response/InResponseTo` is combined with a signed assertion lacking `SubjectConfirmationData/InResponseTo`","description":"SimpleSAMLphp versions before 1.18.6 contain an information disclosure vulnerability. Prior to 2.4.7 and 2.5.2, SimpleSAMLphp's SAML SP ACS path does not enforce the IdP selected for an SP-initiated login when unsigned Response/InResponseTo is combined with a signed assertion lacking SubjectConfirmationData/InResponseTo, allowing a response issued by one trusted IdP to be bound to SP state created for another IdP and bypass flows that route users to a specific IdP, including deployments that set enable_unsolicited to false. This issue is fixed in versions 2.4.7 and 2.5.2.","severity":{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.00222,"percentile":0.12914,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-345"],"published":"2026-07-02T20:47:21Z","modified":"2026-10-28T02:31:08Z","fixes":[{"ecosystem":"Packagist","package":"simplesamlphp/simplesamlphp","fixed_in":["2.5.2","2.4.7"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:14","package":"simplesamlphp","fixed_in":["2.4.8-1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"Packagist","package":"simplesamlphp/simplesamlphp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.5.0"},{"last_affected":"2.5.1"},{"fixed":"2.5.2"}]}]},{"source":"ghsa","ecosystem":"Packagist","package":"simplesamlphp/simplesamlphp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"2.4.6"},{"fixed":"2.4.7"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"simplesamlphp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.19.7-1","1.19.7-1+deb12u1","1.19.7-1+deb12u2","1.19.7-2","2.1.8-0.1","2.2.6-1","2.3.11-1","2.3.11-2","2.4.8-1","2.5.3.1-1"]},{"source":"osv","ecosystem":"Debian:14","package":"simplesamlphp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.4.8-1"}]}],"versions":["1.10.0-1","1.11.0-1","1.12.0-1","1.12.0~rc1-1","1.12.0~rc2-1","1.13.0-1","1.13.1-1","1.13.1-2","1.13.2-1","1.14.0-1","1.14.1-1","1.14.10-1","1.14.11-1","1.14.15-1","1.14.2-1","1.14.2-2","1.14.3-1","1.14.4-1","1.14.5-1","1.14.6-1","1.14.7-1","1.14.8-1","1.14.9-1","1.15.0-1","1.15.1-1","1.15.2-1","1.15.3-1","1.15.4-1","1.16.0-1","1.16.1-1","1.16.2-1","1.16.3-1","1.17.0-1","1.17.1-1","1.17.2-1","1.17.2-2","1.17.3-1","1.17.4-1","1.17.5-1","1.17.6-1","1.17.6-2","1.18.1-1","1.18.4-1","1.18.5-1","1.18.6-1","1.18.7-1","1.18.8-1","1.19.0-1","1.19.1-1","1.19.1-1.1","1.19.6-1","1.19.7-1","1.19.7-2","1.6.0-1","1.6.1-1","1.6.2-1","1.6.3-1","1.6.3-2","1.6.3-3","1.7.0-1","1.7.0-2","1.8.0-1","1.8.1-1","1.8.2-1","1.9.0-1","1.9.0~rc1-1","1.9.0~rc2-1","1.9.1-1","1.9.2-1","2.1.8-0.1","2.2.6-1","2.3.11-1","2.3.11-2"]},{"source":"osv","ecosystem":"Packagist","package":"simplesamlphp/simplesamlphp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.5.0"},{"fixed":"2.5.2"}]}],"versions":["v2.5.0","v2.5.1"]},{"source":"osv","ecosystem":"Packagist","package":"simplesamlphp/simplesamlphp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.4.7"}]}],"versions":["1.16.0","1.16.0-rc1","1.16.1","1.16.2","1.16.3","1.19.8","1.19.9","2.0.2","2.0.3","2.0.4","2.0.4-alpha.1","2.0.5","2.1.0","2.1.0-rc1","v1.12.0","v1.13.0","v1.13.0-rc1","v1.13.0-rc2","v1.13.1","v1.13.2","v1.14.0","v1.14.0-rc1","v1.14.1","v1.14.10","v1.14.11","v1.14.12","v1.14.13","v1.14.14","v1.14.15","v1.14.16","v1.14.17","v1.14.2","v1.14.3","v1.14.4","v1.14.5","v1.14.6","v1.14.7","v1.14.8","v1.14.9","v1.15.0","v1.15.0-rc1","v1.15.0-rc2","v1.15.0-rc3","v1.15.1","v1.15.2","v1.15.3","v1.15.4","v1.17.0","v1.17.0-rc1","v1.17.0-rc2","v1.17.0-rc3","v1.17.1","v1.17.2","v1.17.3","v1.17.4","v1.17.5","v1.17.6","v1.17.7","v1.17.8","v1.18.0","v1.18.0-rc1","v1.18.0-rc2","v1.18.1","v1.18.2","v1.18.3","v1.18.4","v1.18.5","v1.18.6","v1.18.7","v1.18.8","v1.19.0","v1.19.0-rc1","v1.19.1","v1.19.2","v1.19.3","v1.19.4","v1.19.5","v1.19.6","v1.19.7","v2.0.0","v2.0.0-beta.1","v2.0.0-beta.11","v2.0.0-beta.2","v2.0.0-beta.3","v2.0.0-beta.4","v2.0.0-beta99","v2.0.0-rc1","v2.0.0-rc2","v2.0.0-rc3","v2.0.1","v2.0.10","v2.0.11","v2.0.12","v2.0.13","v2.0.14","v2.0.15","v2.0.6","v2.0.7","v2.0.8","v2.0.9","v2.1.1","v2.1.2","v2.1.3","v2.1.4","v2.1.5","v2.1.6","v2.1.7","v2.1.8","v2.2.0","v2.2.1","v2.2.2","v2.2.3","v2.2.4","v2.2.5","v2.2.6","v2.3.0","v2.3.1","v2.3.10","v2.3.11","v2.3.2","v2.3.3","v2.3.4","v2.3.5","v2.3.6","v2.3.7","v2.3.8","v2.3.9","v2.4.0","v2.4.1","v2.4.2","v2.4.3","v2.4.4","v2.4.5","v2.4.6"]},{"source":"osv","ecosystem":"Ubuntu:Pro:16.04:LTS","package":"simplesamlphp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.13.2-1","1.14.0-1","1.14.0-1ubuntu2","1.14.0-1ubuntu2+esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:18.04:LTS","package":"simplesamlphp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.14.15-1","1.15.0-1","1.15.1-1","1.15.2-1","1.15.3-1","1.15.3-1ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:20.04:LTS","package":"simplesamlphp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.17.5-1","1.17.6-1","1.17.6-2","1.18.1-1","1.18.4-1","1.18.4-1ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:22.04:LTS","package":"simplesamlphp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.19.1-1","1.19.1-1.1","1.19.1-1.1ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"simplesamlphp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.19.7-1","1.19.7-1+deb12u1ubuntu0.1"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"simplesamlphp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.19.7-2","2.1.8-0.1","2.2.6-1","2.3.11-1","2.3.11-2","2.4.8-1","2.5.3.1-1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"simplesamlphp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.19.7-2"]}],"products":[{"vendor":"simplesamlphp","product":"simplesamlphp"}],"references":[{"url":"https://github.com/simplesamlphp/simplesamlphp/security/advisories/GHSA-q8r6-xj3f-wrrm","tags":["x_refsource_CONFIRM","Vendor Advisory","advisory","web","report"]},{"url":"https://github.com/simplesamlphp/simplesamlphp/releases/tag/v2.4.7","tags":["x_refsource_MISC","Product","Release Notes","web"]},{"url":"https://github.com/simplesamlphp/simplesamlphp/releases/tag/v2.5.2","tags":["x_refsource_MISC","Product","Release Notes","web"]},{"url":"https://github.com/advisories/GHSA-q8r6-xj3f-wrrm"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/49xxx/CVE-2026-49284.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-49284","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-49284","tags":["advisory"]},{"url":"https://github.com/simplesamlphp/simplesamlphp","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2026-49284","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-49284","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-49284","title":"SimpleSAMLphp SP accepts a response from an unexpected IdP when unsigned `Response/InResponseTo` is combined with a signed assertion lacking `SubjectConfirmationData/InResponseTo`","description":"SimpleSAMLphp versions before 1.18.6 contain an information disclosure vulnerability. Prior to 2.4.7 and 2.5.2, SimpleSAMLphp's SAML SP ACS path does not enforce the IdP selected for an SP-initiated login when unsigned Response/InResponseTo is combined with a signed assertion lacking SubjectConfirmationData/InResponseTo, allowing a response issued by one trusted IdP to be bound to SP state created for another IdP and bypass flows that route users to a specific IdP, including deployments that set enable_unsolicited to false. This issue is fixed in versions 2.4.7 and 2.5.2.","status":"published","published":"2026-07-17T19:17:23.897Z","modified":"2026-07-20T19:22:12.247Z","cvss":[{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N","level":"high","assessor":"cna"}],"cwes":["CWE-345"],"updated_at":"2026-11-02T13:34:59.78118Z"}],"euvd":[{"id":"EUVD-2026-45284","description":"SimpleSAMLphp versions before 1.18.6 contain an information disclosure vulnerability. Prior to 2.4.7 and 2.5.2, SimpleSAMLphp's SAML SP ACS path does not enforce the IdP selected for an SP-initiated login when unsigned Response/InResponseTo is combined with a signed assertion lacking SubjectConfirmationData/InResponseTo, allowing a response issued by one trusted IdP to be bound to SP state created for another IdP and bypass flows that route users to a specific IdP, including deployments that set enable_unsolicited to false. This issue is fixed in versions 2.4.7 and 2.5.2.","status":"published","published":"2026-07-17T19:17:23Z","modified":"2026-07-20T19:22:12Z","cvss":[{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T18:19:47.959089Z"}],"ghsa":[{"id":"GHSA-q8r6-xj3f-wrrm","title":"SimpleSAMLphp SP accepts a response from an unexpected IdP when unsigned `Response/InResponseTo` is combined with a signed assertion lacking `SubjectConfirmationData/InResponseTo`","description":"## Summary\n\nSimpleSAMLphp's SAML SP ACS path does not enforce the IdP selected for an SP-initiated login. If a saved SP state contains `ExpectedIssuer = IdP A`, but the ACS receives a valid response from `IdP B`, the code logs a warning and continues processing instead of rejecting the response.\n\nThat behavior becomes security-relevant when combined with the response-processing rule that accepts an unsigned `samlp:Response/@InResponseTo` outside the signed assertion whenever the signed assertion's `SubjectConfirmationData` does not carry its own `InResponseTo`. A response issued by one trusted IdP can therefore be bound to SP state created for another IdP.\n\n## Impact\n\nIn a multi-IdP deployment, a lower-trust IdP can satisfy SP state created for a different expected IdP. This can bypass an SP flow that intentionally routes the user to a specific IdP, including deployments that set `enable_unsolicited` to `false` to prevent IdP-initiated logins.\n\nThe impact is highest when the SP trusts multiple IdPs with different assurance levels, tenant boundaries, or attribute namespaces, and application authorization depends on the selected/expected IdP. In those deployments this is an authentication/authorization bypass candidate. Impact strongly depends on whether an attacker can obtain a signed IdP-initiated assertion from a lower-trust trusted IdP and whether the downstream application maps identifiers globally.","status":"published","published":"2026-07-02T20:47:21Z","modified":"2026-07-02T20:47:21Z","cvss":[{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N","level":"high"}],"cwes":["CWE-345"],"updated_at":"2026-11-02T14:40:38.48196Z"}],"nvd":[{"id":"CVE-2026-49284","description":"SimpleSAMLphp versions before 1.18.6 contain an information disclosure vulnerability. Prior to 2.4.7 and 2.5.2, SimpleSAMLphp's SAML SP ACS path does not enforce the IdP selected for an SP-initiated login when unsigned Response/InResponseTo is combined with a signed assertion lacking SubjectConfirmationData/InResponseTo, allowing a response issued by one trusted IdP to be bound to SP state created for another IdP and bypass flows that route users to a specific IdP, including deployments that set enable_unsolicited to false. This issue is fixed in versions 2.4.7 and 2.5.2.","status":"published","published":"2026-07-17T20:17:21.83Z","modified":"2026-07-30T13:39:25.117Z","cvss":[{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N","level":"high","assessor":"secondary"}],"cwes":["CWE-345"],"updated_at":"2026-11-02T14:12:30.250437Z"}],"osv":[{"id":"CVE-2026-49284","title":"SimpleSAMLphp SP accepts a response from an unexpected IdP when unsigned `Response/InResponseTo` is combined with a signed assertion lacking `SubjectConfirmationData/InResponseTo`","description":"SimpleSAMLphp versions before 1.18.6 contain an information disclosure vulnerability. Prior to 2.4.7 and 2.5.2, SimpleSAMLphp's SAML SP ACS path does not enforce the IdP selected for an SP-initiated login when unsigned Response/InResponseTo is combined with a signed assertion lacking SubjectConfirmationData/InResponseTo, allowing a response issued by one trusted IdP to be bound to SP state created for another IdP and bypass flows that route users to a specific IdP, including deployments that set enable_unsolicited to false. This issue is fixed in versions 2.4.7 and 2.5.2.","status":"published","published":"2026-07-17T19:17:23.897Z","modified":"2026-10-28T02:31:08.004687348Z","cvss":[{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N","level":"high"}],"cwes":["CWE-345"],"updated_at":"2026-11-02T15:45:07.060148Z"},{"id":"DEBIAN-CVE-2026-49284","description":"SimpleSAMLphp versions before 1.18.6 contain an information disclosure vulnerability. Prior to 2.4.7 and 2.5.2, SimpleSAMLphp's SAML SP ACS path does not enforce the IdP selected for an SP-initiated login when unsigned Response/InResponseTo is combined with a signed assertion lacking SubjectConfirmationData/InResponseTo, allowing a response issued by one trusted IdP to be bound to SP state created for another IdP and bypass flows that route users to a specific IdP, including deployments that set enable_unsolicited to false. This issue is fixed in versions 2.4.7 and 2.5.2.","status":"published","published":"2026-07-17T20:17:21.83Z","modified":"2026-10-01T03:03:24.666028109Z","cvss":[{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T15:45:56.444225Z"},{"id":"GHSA-q8r6-xj3f-wrrm","title":"SimpleSAMLphp SP accepts a response from an unexpected IdP when unsigned `Response/InResponseTo` is combined with a signed assertion lacking `SubjectConfirmationData/InResponseTo`","description":"## Summary\n\nSimpleSAMLphp's SAML SP ACS path does not enforce the IdP selected for an SP-initiated login. If a saved SP state contains `ExpectedIssuer = IdP A`, but the ACS receives a valid response from `IdP B`, the code logs a warning and continues processing instead of rejecting the response.\n\nThat behavior becomes security-relevant when combined with the response-processing rule that accepts an unsigned `samlp:Response/@InResponseTo` outside the signed assertion whenever the signed assertion's `SubjectConfirmationData` does not carry its own `InResponseTo`. A response issued by one trusted IdP can therefore be bound to SP state created for another IdP.\n\n## Impact\n\nIn a multi-IdP deployment, a lower-trust IdP can satisfy SP state created for a different expected IdP. This can bypass an SP flow that intentionally routes the user to a specific IdP, including deployments that set `enable_unsolicited` to `false` to prevent IdP-initiated logins.\n\nThe impact is highest when the SP trusts multiple IdPs with different assurance levels, tenant boundaries, or attribute namespaces, and application authorization depends on the selected/expected IdP. In those deployments this is an authentication/authorization bypass candidate. Impact strongly depends on whether an attacker can obtain a signed IdP-initiated assertion from a lower-trust trusted IdP and whether the downstream application maps identifiers globally.","status":"published","published":"2026-07-02T20:47:21Z","modified":"2026-09-10T03:50:52.943966319Z","cvss":[{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N","level":"high"}],"cwes":["CWE-345"],"updated_at":"2026-11-02T15:46:54.40888Z"},{"id":"UBUNTU-CVE-2026-49284","description":"SimpleSAMLphp versions before 1.18.6 contain an information disclosure vulnerability. Prior to 2.4.7 and 2.5.2, SimpleSAMLphp's SAML SP ACS path does not enforce the IdP selected for an SP-initiated login when unsigned Response/InResponseTo is combined with a signed assertion lacking SubjectConfirmationData/InResponseTo, allowing a response issued by one trusted IdP to be bound to SP state created for another IdP and bypass flows that route users to a specific IdP, including deployments that set enable_unsolicited to false. This issue is fixed in versions 2.4.7 and 2.5.2.","status":"published","published":"2026-07-17T20:17:00Z","modified":"2026-10-17T12:58:32.511770108Z","cvss":[{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T16:56:33.391918Z"}]}}
