{"id":"CVE-2024-45409","aliases":["BIT-gitlab-2024-45409","DEBIAN-CVE-2024-45409","DLA-3949-1","DSA-5774-1","EUVD-2024-2828","GHSA-jw9c-mfg7-9rx2","UBUNTU-CVE-2024-45409","USN-7309-1"],"status":"published","title":"The Ruby SAML library vulnerable to a SAML authentication bypass via Incorrect XPath selector","description":"The Ruby SAML library is for implementing the client side of a SAML authorization. Ruby-SAML in \u003c= 12.2 and 1.13.0 \u003c= 1.16.0 does not properly verify the signature of the SAML Response. An unauthenticated attacker with access to any signed saml document (by the IdP) can thus forge a SAML Response/Assertion with arbitrary contents. This would allow the attacker to log in as arbitrary user within the vulnerable system. This vulnerability is fixed in 1.17.0 and 1.12.3.","severity":{"version":"3.1","score":10,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N","level":"critical","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.12454,"percentile":0.96245,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":true,"fix_available":true},"cwes":["CWE-347"],"published":"2024-09-10T18:50:12Z","modified":"2026-11-04T10:30:31Z","exploits":[{"source":"pocgithub","id":"synacktiv/CVE-2024-45409","title":"synacktiv/CVE-2024-45409","date":"2024-10-07","url":"https://github.com/synacktiv/CVE-2024-45409"},{"source":"pocgithub","id":"barkotenicholas/CVE-2024-45409","title":"barkotenicholas/CVE-2024-45409","date":"2026-10-25","url":"https://github.com/barkotenicholas/CVE-2024-45409"}],"fixes":[{"ecosystem":"RubyGems","package":"ruby-saml","fixed_in":["1.12.3","1.17.0"],"sources":["ghsa","osv"]},{"ecosystem":"Bitnami","package":"gitlab","fixed_in":["16.11.10","17.0.8","17.1.8","17.2.7","17.3.3"],"sources":["osv"]},{"ecosystem":"Debian:12","package":"ruby-saml","fixed_in":["1.13.0-1+deb12u1"],"sources":["osv"]},{"ecosystem":"Debian:11","package":"ruby-saml","fixed_in":["1.11.0-1+deb11u1"],"sources":["osv"]},{"ecosystem":"Ubuntu:Pro:16.04:LTS","package":"ruby-saml","fixed_in":["1.1.2-1ubuntu1+esm1"],"sources":["osv"]},{"ecosystem":"Ubuntu:Pro:18.04:LTS","package":"ruby-saml","fixed_in":["1.7.2-1ubuntu0.1~esm1"],"sources":["osv"]},{"ecosystem":"Ubuntu:20.04:LTS","package":"ruby-saml","fixed_in":["1.11.0-1ubuntu0.1"],"sources":["osv"]},{"ecosystem":"Ubuntu:22.04:LTS","package":"ruby-saml","fixed_in":["1.13.0-1ubuntu0.1"],"sources":["osv"]},{"ecosystem":"Ubuntu:24.04:LTS","package":"ruby-saml","fixed_in":["1.15.0-1ubuntu0.24.04.1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"RubyGems","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.12.3"}]}]},{"source":"ghsa","ecosystem":"RubyGems","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.13.0"},{"fixed":"1.17.0"}]}]},{"source":"osv","ecosystem":"Bitnami","package":"gitlab","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"16.11.10"},{"introduced":"17.0.0"},{"fixed":"17.0.8"},{"introduced":"17.1.0"},{"fixed":"17.1.8"},{"introduced":"17.2.0"},{"fixed":"17.2.7"},{"introduced":"17.3.0"},{"fixed":"17.3.3"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.13.0-1+deb12u1"}]}],"versions":["1.13.0-1"]},{"source":"osv","ecosystem":"Debian:11","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.11.0-1+deb11u1"}]}],"versions":["1.11.0-1"]},{"source":"osv","ecosystem":"Debian:12","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.13.0-1+deb12u1"}]}],"versions":["1.13.0-1"]},{"source":"osv","ecosystem":"RubyGems","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.12.3"}]}],"versions":["0.0.5","0.0.6","0.0.7","0.0.8","0.2.1","0.2.2","0.2.3","0.3.0","0.3.1","0.3.2","0.3.3","0.3.4","0.4.0","0.4.1","0.4.2","0.4.3","0.4.4","0.4.5","0.4.6","0.4.7","0.5.0","0.5.1","0.5.2","0.5.3","0.6.0","0.7.0","0.7.1","0.7.2","0.7.3","0.8.0","0.8.1","0.8.10","0.8.11","0.8.12","0.8.13","0.8.14","0.8.15","0.8.16","0.8.17","0.8.18","0.8.2","0.8.3","0.8.4","0.8.5","0.8.6","0.8.7","0.8.8","0.8.9","0.9","0.9.1","0.9.2","0.9.3","0.9.4","1.0.0","1.1.0","1.1.1","1.1.2","1.10.0","1.10.1","1.10.2","1.11.0","1.12.0","1.12.1","1.12.2","1.2.0","1.3.0","1.3.1","1.4.0","1.4.1","1.4.2","1.4.3","1.5.0","1.6.0","1.6.1","1.6.2","1.7.0","1.7.1","1.7.2","1.8.0","1.9.0"]},{"source":"osv","ecosystem":"RubyGems","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.13.0"},{"fixed":"1.17.0"}]}],"versions":["1.13.0","1.14.0","1.15.0","1.16.0"]},{"source":"osv","ecosystem":"Ubuntu:Pro:16.04:LTS","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.2-1ubuntu1+esm1"}]}],"versions":["0.9.2-1","1.0.0-1","1.1.2-1ubuntu1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:18.04:LTS","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.7.2-1ubuntu0.1~esm1"}]}],"versions":["1.4.1-1","1.7.2-1"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.11.0-1ubuntu0.1"}]}],"versions":["1.7.2-1","1.11.0-1"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.13.0-1ubuntu0.1"}]}],"versions":["1.11.0-1","1.13.0-1"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.15.0-1ubuntu0.24.04.1"}]}],"versions":["1.15.0-1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:16.04:LTS","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.2-1ubuntu1+esm1"}]}],"versions":["0.9.2-1","1.0.0-1","1.1.2-1ubuntu1"],"bundled":3},{"source":"osv","ecosystem":"Ubuntu:Pro:18.04:LTS","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.7.2-1ubuntu0.1~esm1"}]}],"versions":["1.4.1-1","1.7.2-1"],"bundled":3},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.11.0-1ubuntu0.1"}]}],"versions":["1.7.2-1","1.11.0-1"],"bundled":3},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.13.0-1ubuntu0.1"}]}],"versions":["1.11.0-1","1.13.0-1"],"bundled":3},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"ruby-saml","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.15.0-1ubuntu0.24.04.1"}]}],"versions":["1.15.0-1"],"bundled":3}],"products":[{"vendor":"gitlab","product":"gitlab"},{"vendor":"omniauth","product":"omniauth-saml"},{"vendor":"omniauth","product":"omniauth_saml"},{"vendor":"onelogin","product":"ruby-saml"},{"vendor":"saml-toolkits","product":"ruby-saml"}],"references":[{"url":"https://github.com/SAML-Toolkits/ruby-saml/security/advisories/GHSA-jw9c-mfg7-9rx2","tags":["x_refsource_CONFIRM","Vendor Advisory","advisory","web","report"]},{"url":"https://github.com/omniauth/omniauth-saml/security/advisories/GHSA-cvp8-5r8g-fhvq","tags":["x_refsource_MISC","Vendor Advisory","advisory","web"]},{"url":"https://github.com/SAML-Toolkits/ruby-saml/commit/1ec5392bc506fe43a02dbb66b68741051c5ffeae","tags":["x_refsource_MISC","Patch","fix","web"]},{"url":"https://github.com/SAML-Toolkits/ruby-saml/commit/4865d030cae9705ee5cdb12415c654c634093ae7","tags":["x_refsource_MISC","Patch","fix","web"]},{"url":"https://ssoready.com/blog/engineering/ruby-saml-pwned-by-xml-signature-wrapping-attacks/","tags":["web","article"]},{"url":"https://news.ycombinator.com/item?id=41586031","tags":["web"]},{"url":"https://security.netapp.com/advisory/ntap-20240926-0008/","tags":["web","advisory"]},{"url":"https://lists.debian.org/debian-lts-announce/2024/11/msg00006.html","tags":["web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2024-45409","tags":["web","advisory"]},{"url":"https://github.com/omniauth/omniauth-saml/commit/4274e9d57e65f2dcaae4aa3b2accf831494f2ddd","tags":["web"]},{"url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/omniauth-saml/CVE-2024-45409.yml","tags":["web"]},{"url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/ruby-saml/CVE-2024-45409.yml","tags":["web"]},{"url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/omniauth-saml/GHSA-cvp8-5r8g-fhvq.yml","tags":["web"]},{"url":"https://github.com/advisories/GHSA-jw9c-mfg7-9rx2"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/45xxx/CVE-2024-45409.json","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2024-45409","tags":["advisory"]},{"url":"https://github.com/SAML-Toolkits/ruby-saml","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2024-45409","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2024-45409","tags":["report"]},{"url":"https://ubuntu.com/security/notices/USN-7309-1","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2016-5697","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2017-11428","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2024-45409","title":"The Ruby SAML library vulnerable to a SAML authentication bypass via Incorrect XPath selector","description":"The Ruby SAML library is for implementing the client side of a SAML authorization. Ruby-SAML in \u003c= 12.2 and 1.13.0 \u003c= 1.16.0 does not properly verify the signature of the SAML Response. An unauthenticated attacker with access to any signed saml document (by the IdP) can thus forge a SAML Response/Assertion with arbitrary contents. This would allow the attacker to log in as arbitrary user within the vulnerable system. This vulnerability is fixed in 1.17.0 and 1.12.3.","status":"published","published":"2024-09-10T18:50:12.965Z","modified":"2026-11-04T00:03:35.684Z","cvss":[{"version":"3.1","score":10,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N","level":"critical","assessor":"cna"}],"cwes":["CWE-347"],"updated_at":"2026-11-04T00:47:47.540303Z"}],"euvd":[{"id":"EUVD-2024-2828","description":"The Ruby SAML library is for implementing the client side of a SAML authorization. Ruby-SAML in \u003c= 12.2 and 1.13.0 \u003c= 1.16.0 does not properly verify the signature of the SAML Response. An unauthenticated attacker with access to any signed saml document (by the IdP) can thus forge a SAML Response/Assertion with arbitrary contents. This would allow the attacker to log in as arbitrary user within the vulnerable system. This vulnerability is fixed in 1.17.0 and 1.12.3.","status":"published","published":"2024-09-10T18:50:12Z","modified":"2026-11-04T00:03:35Z","cvss":[{"version":"3.1","score":10,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N","level":"critical"}],"updated_at":"2026-11-04T01:51:27.299093Z"}],"ghsa":[{"id":"GHSA-jw9c-mfg7-9rx2","title":"SAML authentication bypass via Incorrect XPath selector","description":"Ruby-SAML in \u003c= 12.2 and 1.13.0 \u003c= 1.16.0 does not properly verify the signature of the SAML Response. An unauthenticated attacker with access to any signed saml document (by the IdP) can thus forge a SAML Response/Assertion with arbitrary contents. This would allow the attacker to log in as arbitrary user within the vulnerable system.\n\nThis vulnerability was reported by ahacker1 of SecureSAML (ahacker1@securesaml.com)","status":"published","published":"2024-09-10T19:42:03Z","modified":"2024-09-16T15:29:27Z","cvss":[{"version":"4.0","score":9.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N","level":"critical"},{"version":"3.1","score":10,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N","level":"critical"}],"cwes":["CWE-347"],"updated_at":"2026-11-02T14:38:02.773864Z"}],"nvd":[{"id":"CVE-2024-45409","description":"The Ruby SAML library is for implementing the client side of a SAML authorization. Ruby-SAML in \u003c= 12.2 and 1.13.0 \u003c= 1.16.0 does not properly verify the signature of the SAML Response. An unauthenticated attacker with access to any signed saml document (by the IdP) can thus forge a SAML Response/Assertion with arbitrary contents. This would allow the attacker to log in as arbitrary user within the vulnerable system. This vulnerability is fixed in 1.17.0 and 1.12.3.","status":"published","published":"2024-09-10T19:15:22.03Z","modified":"2026-11-04T00:17:21.247Z","cvss":[{"version":"3.1","score":10,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N","level":"critical","assessor":"secondary"},{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary"}],"cwes":["CWE-347"],"updated_at":"2026-11-04T01:48:25.983714Z"}],"osv":[{"id":"CVE-2024-45409","title":"The Ruby SAML library vulnerable to a SAML authentication bypass via Incorrect XPath selector","description":"The Ruby SAML library is for implementing the client side of a SAML authorization. Ruby-SAML in \u003c= 12.2 and 1.13.0 \u003c= 1.16.0 does not properly verify the signature of the SAML Response. An unauthenticated attacker with access to any signed saml document (by the IdP) can thus forge a SAML Response/Assertion with arbitrary contents. This would allow the attacker to log in as arbitrary user within the vulnerable system. This vulnerability is fixed in 1.17.0 and 1.12.3.","status":"published","published":"2024-09-10T18:50:12.965Z","modified":"2026-11-05T02:30:15.863918161Z","cvss":[{"version":"3.1","score":10,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N","level":"critical"}],"cwes":["CWE-347"],"updated_at":"2026-11-07T03:07:53.922111Z"},{"id":"DEBIAN-CVE-2024-45409","description":"The Ruby SAML library is for implementing the client side of a SAML authorization. Ruby-SAML in \u003c= 12.2 and 1.13.0 \u003c= 1.16.0 does not properly verify the signature of the SAML Response. An unauthenticated attacker with access to any signed saml document (by the IdP) can thus forge a SAML Response/Assertion with arbitrary contents. This would allow the attacker to log in as arbitrary user within the vulnerable system. This vulnerability is fixed in 1.17.0 and 1.12.3.","status":"published","published":"2024-09-10T19:15:22.03Z","modified":"2026-11-04T09:47:27.334965663Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-04T10:05:57.467041Z"},{"id":"GHSA-jw9c-mfg7-9rx2","title":"SAML authentication bypass via Incorrect XPath selector","description":"Ruby-SAML in \u003c= 12.2 and 1.13.0 \u003c= 1.16.0 does not properly verify the signature of the SAML Response. An unauthenticated attacker with access to any signed saml document (by the IdP) can thus forge a SAML Response/Assertion with arbitrary contents. This would allow the attacker to log in as arbitrary user within the vulnerable system.\n\nThis vulnerability was reported by ahacker1 of SecureSAML (ahacker1@securesaml.com)","status":"published","published":"2024-09-10T19:42:03Z","modified":"2026-08-07T08:11:51.793800677Z","cvss":[{"version":"3.1","score":10,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N","level":"critical"},{"version":"4.0","score":9.9,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N","level":"critical"}],"cwes":["CWE-347"],"updated_at":"2026-11-02T15:46:51.10002Z"},{"id":"UBUNTU-CVE-2024-45409","description":"The Ruby SAML library is for implementing the client side of a SAML authorization. Ruby-SAML in \u003c= 12.2 and 1.13.0 \u003c= 1.16.0 does not properly verify the signature of the SAML Response. An unauthenticated attacker with access to any signed saml document (by the IdP) can thus forge a SAML Response/Assertion with arbitrary contents. This would allow the attacker to log in as arbitrary user within the vulnerable system. This vulnerability is fixed in 1.17.0 and 1.12.3.","status":"published","published":"2024-09-10T19:15:00Z","modified":"2026-02-04T03:37:47.118384Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"},{"version":"3.1","score":10,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N","level":"critical"}],"updated_at":"2026-11-02T16:55:02.636559Z"},{"id":"BIT-gitlab-2024-45409","title":"The Ruby SAML library vulnerable to a SAML authentication bypass via Incorrect XPath selector","description":"The Ruby SAML library is for implementing the client side of a SAML authorization. Ruby-SAML in \u003c= 12.2 and 1.13.0 \u003c= 1.16.0 does not properly verify the signature of the SAML Response. An unauthenticated attacker with access to any signed saml document (by the IdP) can thus forge a SAML Response/Assertion with arbitrary contents. This would allow the attacker to log in as arbitrary user within the vulnerable system. This vulnerability is fixed in 1.17.0 and 1.12.3.","status":"published","published":"2024-09-21T07:19:08.053Z","modified":"2026-09-08T08:48:11.637574135Z","updated_at":"2026-11-02T15:28:30.405543Z"},{"id":"DLA-3949-1","title":"ruby-saml - security update","status":"published","published":"2024-11-11T00:00:00Z","modified":"2026-03-09T01:23:06.425455Z","updated_at":"2026-11-02T15:46:12.203458Z"},{"id":"DSA-5774-1","title":"ruby-saml - security update","status":"published","published":"2024-09-20T00:00:00Z","modified":"2026-03-09T02:11:40.403859Z","updated_at":"2026-11-02T15:46:17.892347Z"},{"id":"USN-7309-1","title":"Ruby SAML vulnerabilities","description":"\nIt was discovered that Ruby SAML did not properly validate SAML responses.\nAn unauthenticated attacker could use this vulnerability to log in as an \nabitrary user. This issue only affected Ubuntu 16.04 LTS. (CVE-2016-5697)\n\nIt was discovered that Ruby SAML incorrectly utilized the results of XML\nDOM traversal and canonicalization APIs. An unauthenticated attacker could\nuse this vulnerability to log in as an abitrary user. This issue only \naffected Ubuntu 16.04 LTS. (CVE-2017-11428)\n\nIt was discovered that Ruby SAML did not properly verify the signature of\nthe SAML Response, allowing multiple elements with the same ID. An \nunauthenticated attacker could use this vulnerability to log in as an \nabitrary user. (CVE-2024-45409)\n\n","status":"published","published":"2025-02-28T17:30:52Z","modified":"2026-06-25T13:31:46.082077349Z","updated_at":"2026-11-02T16:58:18.876384Z"}]}}
