{"affected":[{"product":"ruby-saml","source":"CNA: GitHub_M","vendor":"SAML-Toolkits","versions":[{"status":"affected","version":"< 1.12.3"},{"status":"affected","version":">= 1.13.0, < 1.17.0"}]},{"defaultStatus":"unknown","product":"ruby-saml","source":"ADP: CISA-ADP","vendor":"onelogin","versions":[{"lessThan":"1.12.3","status":"affected","version":"0","versionType":"custom"},{"lessThan":"1.17.0","status":"affected","version":"1.13.0","versionType":"custom"}]},{"defaultStatus":"unknown","product":"omniauth-saml","source":"ADP: CISA-ADP","vendor":"omniauth","versions":[{"lessThanOrEqual":"2.1.0","status":"affected","version":"0","versionType":"custom"}]},{"defaultStatus":"unaffected","ecosystem":"RubyGems","packageName":"ruby-saml","product":"ruby-saml","source":"OSV GHSA-jw9c-mfg7-9rx2","vendor":"","versions":[{"status":"affected","version":"0.0.5","versionType":"RubyGems"},{"status":"affected","version":"0.0.6","versionType":"RubyGems"},{"status":"affected","version":"0.0.7","versionType":"RubyGems"},{"status":"affected","version":"0.0.8","versionType":"RubyGems"},{"status":"affected","version":"0.2.1","versionType":"RubyGems"},{"status":"affected","version":"0.2.2","versionType":"RubyGems"},{"status":"affected","version":"0.2.3","versionType":"RubyGems"},{"status":"affected","version":"0.3.0","versionType":"RubyGems"},{"status":"affected","version":"0.3.1","versionType":"RubyGems"},{"status":"affected","version":"0.3.2","versionType":"RubyGems"},{"status":"affected","version":"0.3.3","versionType":"RubyGems"},{"status":"affected","version":"0.3.4","versionType":"RubyGems"},{"status":"affected","version":"0.4.0","versionType":"RubyGems"},{"status":"affected","version":"0.4.1","versionType":"RubyGems"},{"status":"affected","version":"0.4.2","versionType":"RubyGems"},{"status":"affected","version":"0.4.3","versionType":"RubyGems"},{"status":"affected","version":"0.4.4","versionType":"RubyGems"},{"status":"affected","version":"0.4.5","versionType":"RubyGems"},{"status":"affected","version":"0.4.6","versionType":"RubyGems"},{"status":"affected","version":"0.4.7","versionType":"RubyGems"},{"status":"affected","version":"0.5.0","versionType":"RubyGems"},{"status":"affected","version":"0.5.1","versionType":"RubyGems"},{"status":"affected","version":"0.5.2","versionType":"RubyGems"},{"status":"affected","version":"0.5.3","versionType":"RubyGems"},{"status":"affected","version":"0.6.0","versionType":"RubyGems"},{"status":"affected","version":"0.7.0","versionType":"RubyGems"},{"status":"affected","version":"0.7.1","versionType":"RubyGems"},{"status":"affected","version":"0.7.2","versionType":"RubyGems"},{"status":"affected","version":"0.7.3","versionType":"RubyGems"},{"status":"affected","version":"0.8.0","versionType":"RubyGems"},{"status":"affected","version":"0.8.1","versionType":"RubyGems"},{"status":"affected","version":"0.8.10","versionType":"RubyGems"},{"status":"affected","version":"0.8.11","versionType":"RubyGems"},{"status":"affected","version":"0.8.12","versionType":"RubyGems"},{"status":"affected","version":"0.8.13","versionType":"RubyGems"},{"status":"affected","version":"0.8.14","versionType":"RubyGems"},{"status":"affected","version":"0.8.15","versionType":"RubyGems"},{"status":"affected","version":"0.8.16","versionType":"RubyGems"},{"status":"affected","version":"0.8.17","versionType":"RubyGems"},{"status":"affected","version":"0.8.18","versionType":"RubyGems"},{"status":"affected","version":"0.8.2","versionType":"RubyGems"},{"status":"affected","version":"0.8.3","versionType":"RubyGems"},{"status":"affected","version":"0.8.4","versionType":"RubyGems"},{"status":"affected","version":"0.8.5","versionType":"RubyGems"},{"status":"affected","version":"0.8.6","versionType":"RubyGems"},{"status":"affected","version":"0.8.7","versionType":"RubyGems"},{"status":"affected","version":"0.8.8","versionType":"RubyGems"},{"status":"affected","version":"0.8.9","versionType":"RubyGems"},{"status":"affected","version":"0.9","versionType":"RubyGems"},{"status":"affected","version":"0.9.1","versionType":"RubyGems"},{"status":"affected","version":"0.9.2","versionType":"RubyGems"},{"status":"affected","version":"0.9.3","versionType":"RubyGems"},{"status":"affected","version":"0.9.4","versionType":"RubyGems"},{"status":"affected","version":"1.0.0","versionType":"RubyGems"},{"status":"affected","version":"1.1.0","versionType":"RubyGems"},{"status":"affected","version":"1.1.1","versionType":"RubyGems"},{"status":"affected","version":"1.1.2","versionType":"RubyGems"},{"status":"affected","version":"1.10.0","versionType":"RubyGems"},{"status":"affected","version":"1.10.1","versionType":"RubyGems"},{"status":"affected","version":"1.10.2","versionType":"RubyGems"},{"status":"affected","version":"1.11.0","versionType":"RubyGems"},{"status":"affected","version":"1.12.0","versionType":"RubyGems"},{"status":"affected","version":"1.12.1","versionType":"RubyGems"},{"status":"affected","version":"1.12.2","versionType":"RubyGems"},{"status":"affected","version":"1.2.0","versionType":"RubyGems"},{"status":"affected","version":"1.3.0","versionType":"RubyGems"},{"status":"affected","version":"1.3.1","versionType":"RubyGems"},{"status":"affected","version":"1.4.0","versionType":"RubyGems"},{"status":"affected","version":"1.4.1","versionType":"RubyGems"},{"status":"affected","version":"1.4.2","versionType":"RubyGems"},{"status":"affected","version":"1.4.3","versionType":"RubyGems"},{"status":"affected","version":"1.5.0","versionType":"RubyGems"},{"status":"affected","version":"1.6.0","versionType":"RubyGems"},{"status":"affected","version":"1.6.1","versionType":"RubyGems"},{"status":"affected","version":"1.6.2","versionType":"RubyGems"},{"status":"affected","version":"1.7.0","versionType":"RubyGems"},{"status":"affected","version":"1.7.1","versionType":"RubyGems"},{"status":"affected","version":"1.7.2","versionType":"RubyGems"},{"status":"affected","version":"1.8.0","versionType":"RubyGems"},{"status":"affected","version":"1.9.0","versionType":"RubyGems"},{"events":[{"introduced":"0"},{"fixed":"1.12.3"}],"status":"unknown","version":"0","versionType":"ECOSYSTEM"}]},{"defaultStatus":"unaffected","ecosystem":"RubyGems","packageName":"ruby-saml","product":"ruby-saml","source":"OSV GHSA-jw9c-mfg7-9rx2","vendor":"","versions":[{"status":"affected","version":"1.13.0","versionType":"RubyGems"},{"status":"affected","version":"1.14.0","versionType":"RubyGems"},{"status":"affected","version":"1.15.0","versionType":"RubyGems"},{"status":"affected","version":"1.16.0","versionType":"RubyGems"},{"events":[{"introduced":"1.13.0"},{"fixed":"1.17.0"}],"status":"unknown","version":"1.13.0","versionType":"ECOSYSTEM"}]}],"cpeConfigurations":[{"negate":false,"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:a:onelogin:ruby-saml:*:*:*:*:*:*:*:*","versionEndExcluding":"1.12.3","vulnerable":true},{"criteria":"cpe:2.3:a:onelogin:ruby-saml:*:*:*:*:*:*:*:*","versionEndExcluding":"1.17.0","versionStartIncluding":"1.13.0","vulnerable":true}],"negate":false,"operator":"OR"}],"operator":"OR"},{"negate":false,"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:a:omniauth:omniauth_saml:*:*:*:*:*:ruby:*:*","versionEndIncluding":"1.10.3","vulnerable":true},{"criteria":"cpe:2.3:a:omniauth:omniauth_saml:2.0.0:*:*:*:*:ruby:*:*","vulnerable":true},{"criteria":"cpe:2.3:a:omniauth:omniauth_saml:2.1.0:*:*:*:*:ruby:*:*","vulnerable":true}],"negate":false,"operator":"OR"}],"operator":"OR"},{"negate":false,"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:a:gitlab:gitlab:*:*:*:*:*:*:*:*","versionEndExcluding":"16.11.10","vulnerable":true},{"criteria":"cpe:2.3:a:gitlab:gitlab:*:*:*:*:*:*:*:*","versionEndExcluding":"17.0.8","versionStartIncluding":"17.0.0","vulnerable":true},{"criteria":"cpe:2.3:a:gitlab:gitlab:*:*:*:*:*:*:*:*","versionEndExcluding":"17.1.8","versionStartIncluding":"17.1.0","vulnerable":true},{"criteria":"cpe:2.3:a:gitlab:gitlab:*:*:*:*:*:*:*:*","versionEndExcluding":"17.2.7","versionStartIncluding":"17.2.0","vulnerable":true},{"criteria":"cpe:2.3:a:gitlab:gitlab:*:*:*:*:*:*:*:*","versionEndExcluding":"17.3.3","versionStartIncluding":"17.3.0","vulnerable":true}],"negate":false,"operator":"OR"}],"operator":"OR"}],"cveId":"CVE-2024-45409","cwes":["CWE-347"],"description":"The Ruby SAML library is for implementing the client side of a SAML authorization. Ruby-SAML in <= 12.2 and 1.13.0 <= 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.","epss":{"date":"2026-11-03","percentile":0.95815,"score":0.10684},"exploits":[],"kev":null,"metrics":[{"score":10,"severity":"critical","source":"CNA: GitHub_M","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N","version":"3.1"},{"score":9.8,"severity":"critical","source":"NVD: nvd@nist.gov","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","version":"3.1"},{"score":10,"severity":"critical","source":"NVD: security-advisories@github.com","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N","version":"3.1"}],"modifiedAt":1793744244013,"publishedAt":1725994212965,"references":[{"source":"CNA: GitHub_M","tags":["x_refsource_CONFIRM"],"url":"https://github.com/SAML-Toolkits/ruby-saml/security/advisories/GHSA-jw9c-mfg7-9rx2"},{"source":"CNA: GitHub_M","tags":["x_refsource_MISC"],"url":"https://github.com/omniauth/omniauth-saml/security/advisories/GHSA-cvp8-5r8g-fhvq"},{"source":"CNA: GitHub_M","tags":["x_refsource_MISC"],"url":"https://github.com/SAML-Toolkits/ruby-saml/commit/1ec5392bc506fe43a02dbb66b68741051c5ffeae"},{"source":"CNA: GitHub_M","tags":["x_refsource_MISC"],"url":"https://github.com/SAML-Toolkits/ruby-saml/commit/4865d030cae9705ee5cdb12415c654c634093ae7"},{"source":"ADP: CVE","tags":[],"url":"https://ssoready.com/blog/engineering/ruby-saml-pwned-by-xml-signature-wrapping-attacks/"},{"source":"ADP: CVE","tags":[],"url":"https://news.ycombinator.com/item?id=41586031"},{"source":"ADP: CVE","tags":[],"url":"https://security.netapp.com/advisory/ntap-20240926-0008/"},{"source":"ADP: CVE","tags":[],"url":"https://lists.debian.org/debian-lts-announce/2024/11/msg00006.html"},{"source":"security-advisories@github.com","tags":["Patch"],"url":"https://github.com/SAML-Toolkits/ruby-saml/commit/1ec5392bc506fe43a02dbb66b68741051c5ffeae"},{"source":"security-advisories@github.com","tags":["Patch"],"url":"https://github.com/SAML-Toolkits/ruby-saml/commit/4865d030cae9705ee5cdb12415c654c634093ae7"},{"source":"security-advisories@github.com","tags":["Vendor Advisory"],"url":"https://github.com/SAML-Toolkits/ruby-saml/security/advisories/GHSA-jw9c-mfg7-9rx2"},{"source":"security-advisories@github.com","tags":["Vendor Advisory"],"url":"https://github.com/omniauth/omniauth-saml/security/advisories/GHSA-cvp8-5r8g-fhvq"},{"source":"af854a3a-2127-422b-91ae-364da2661108","tags":[],"url":"https://lists.debian.org/debian-lts-announce/2024/11/msg00006.html"},{"source":"af854a3a-2127-422b-91ae-364da2661108","tags":[],"url":"https://news.ycombinator.com/item?id=41586031"},{"source":"af854a3a-2127-422b-91ae-364da2661108","tags":[],"url":"https://security.netapp.com/advisory/ntap-20240926-0008/"},{"source":"af854a3a-2127-422b-91ae-364da2661108","tags":[],"url":"https://ssoready.com/blog/engineering/ruby-saml-pwned-by-xml-signature-wrapping-attacks/"},{"source":"OSV / GitHub Security Advisories","tags":["advisory"],"url":"https://github.com/advisories/GHSA-jw9c-mfg7-9rx2"},{"source":"OSV / GitHub Security Advisories","tags":["osv"],"url":"https://osv.dev/vulnerability/GHSA-jw9c-mfg7-9rx2"}],"remediation":[{"kind":"fix","source":"security-advisories@github.com","text":"The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches.","url":"https://github.com/SAML-Toolkits/ruby-saml/commit/1ec5392bc506fe43a02dbb66b68741051c5ffeae"},{"kind":"fix","source":"security-advisories@github.com","text":"The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches.","url":"https://github.com/SAML-Toolkits/ruby-saml/commit/4865d030cae9705ee5cdb12415c654c634093ae7"},{"kind":"fix","source":"OSV GHSA-jw9c-mfg7-9rx2","text":"ruby-saml (RubyGems): OSV reports a fixed version 1.12.3. Check the advisory for supported release branches.","url":"https://github.com/advisories/GHSA-jw9c-mfg7-9rx2"},{"kind":"fix","source":"OSV GHSA-jw9c-mfg7-9rx2","text":"ruby-saml (RubyGems): OSV reports a fixed version 1.17.0. Check the advisory for supported release branches.","url":"https://github.com/advisories/GHSA-jw9c-mfg7-9rx2"}],"revision":"0a5313d1b6524a286ce6e6636f3d8bb76817382526acdd0f581e6a371ce182a6","sources":[{"modifiedAt":1793742759281,"name":"CNA: GitHub_M","retrievedAt":1793743994125,"url":"https://www.cve.org/CVERecord?id=CVE-2024-45409"},{"modifiedAt":1793744244013,"name":"NVD","retrievedAt":1793751364251,"url":"https://nvd.nist.gov/vuln/detail/CVE-2024-45409"},{"modifiedAt":1786090311793,"name":"OSV / GitHub Security Advisories (partial: 1/2 referenced advisories verified)","retrievedAt":1793743997730,"url":"https://osv.dev/vulnerability/GHSA-jw9c-mfg7-9rx2"},{"modifiedAt":null,"name":"FIRST EPSS","retrievedAt":1793743997437,"url":"https://api.first.org/data/v1/epss?cve=CVE-2024-45409"}],"ssvc":{"assessedAt":1729050912641,"automatable":"yes","exploitation":"poc","source":"ADP: CISA-ADP","technicalImpact":"total"},"status":"published","title":"The Ruby SAML library vulnerable to a SAML authentication bypass via Incorrect XPath selector","updatedAt":1793751364251}