Cloudanix VulnDB

CVE-2024-45409

None

CVSS

—

EPSS

10.7%

Published

Sep 10, 2024

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A flaw in how some applications check digital signatures on login messages lets attackers pretend to be any user and gain access without knowing passwords.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Privilege Gain
Component
Library
Class
Authentication Bypass
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The Ruby SAML library fails to properly validate the XML signature on SAML Response and Assertion documents, allowing an attacker who possesses any legitimately signed document from the identity provider to substitute arbitrary content while preserving a valid signature.

Why it matters to the business

Attackers can obtain unauthorized access to any user account in affected applications, leading to account takeover, data exposure, and potential lateral movement within integrated systems; the vulnerability has been public for over two years with a moderate and stable exploit probability.

How an attack unfolds

An attacker first obtains a signed SAML Response or Assertion issued by the trusted IdP, then modifies the NameID, attributes, or other claims to impersonate any user, re-signs the document using the original signature value, and submits the forged response to the service provider, which accepts it due to the missing or incomplete signature verification check.

How to fix it

Upgrade ruby-saml to version 1.17.0 or 1.12.3; for GitLab installations, apply the commit f2789346710c02e9dae2b74802f4b9397538129e or later releases that incorporate the patched library. Validate that signature verification is enabled and strict after the upgrade.

How to confirm the fix worked

Confirm the installed ruby-saml gem version meets or exceeds 1.17.0 or 1.12.3, review application logs for successful SAML authentications after the upgrade, and test by replaying a legitimately signed document with modified claims to ensure rejection.

Typical attack path

  1. Obtain a valid signed SAML document from the target identity provider through normal authentication or interception
  2. Parse and alter the SAML Response or Assertion to change the subject identifier and any authorization attributes
  3. Submit the modified document to the vulnerable service provider endpoint without triggering signature validation failure
  4. Receive an authenticated session for the impersonated user account

How to detect it

Review web server and application logs for SAML Response submissions that result in authentication success shortly after the vulnerable library was in use; look for repeated or unusual NameID values that do not match expected user provisioning patterns.

What your security team should do

  • Immediately upgrade all instances of ruby-saml and dependent applications such as GitLab to the fixed versions listed
  • Audit recent authentication logs for any anomalous SAML logins that occurred before remediation
  • Enforce strict signature and certificate validation settings in all SAML integrations
  • Monitor EPSS score and any new exploit publications given the two-year public disclosure window

The record

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.

Affected packages

Ecosystem Package Introduced Fixed
RubyGems omniauth-saml 0 1.10.5
RubyGems omniauth-saml 0 2.1.1
RubyGems omniauth-saml 2.0.0 2.1.2
RubyGems omniauth-saml 2.2.0 2.2.1
RubyGems ruby-saml 0 1.12.3
RubyGems ruby-saml 1.13.0 1.17.0
Bitnami gitlab 0 16.11.10
Chainguard gitlab-rails-ee-17.1 0 17.1.8-r0
Chainguard gitlab-rails-ee-17.2 0 17.2.6-r0
Chainguard gitlab-rails-ee-17.3 0 17.3.3-r0
Chainguard gitlab-rails-ee-assets-17.2 0 17.2.6-r0
Chainguard gitlab-rails-ee-assets-17.3 0 17.3.3-r0
Chainguard gitlab-rails-ee-assets-fips-17.2 0 17.2.6-r0
Chainguard gitlab-rails-ee-assets-fips-17.3 0 17.3.3-r0
Chainguard gitlab-rails-ee-doc-17.2 0 17.2.6-r0
Chainguard gitlab-rails-ee-doc-17.3 0 17.3.3-r0
Chainguard gitlab-rails-ee-doc-fips-17.2 0 17.2.6-r0
Chainguard gitlab-rails-ee-doc-fips-17.3 0 17.3.3-r0
Chainguard gitlab-rails-ee-fips-17.1 0 17.1.8-r0
Chainguard gitlab-rails-ee-fips-17.2 0 17.2.6-r0
Chainguard gitlab-rails-ee-fips-17.3 0 17.3.3-r0
Debian:11 ruby-saml 0 No fix
Debian:11 ruby-saml 0 1.11.0-1+deb11u1
Debian:12 ruby-saml 0 1.13.0-1+deb12u1
Debian:13 ruby-saml 0 No fix
Ubuntu:20.04:LTS ruby-saml 0 No fix
Ubuntu:20.04:LTS ruby-saml 0 1.11.0-1ubuntu0.1
Ubuntu:22.04:LTS ruby-saml 0 No fix
Ubuntu:22.04:LTS ruby-saml 0 1.13.0-1ubuntu0.1
Ubuntu:24.04:LTS ruby-saml 0 No fix
Ubuntu:24.04:LTS ruby-saml 0 1.15.0-1ubuntu0.24.04.1
Ubuntu:24.10 ruby-saml 0 No fix
Ubuntu:Pro:16.04:LTS ruby-saml 0 No fix
Ubuntu:Pro:16.04:LTS ruby-saml 0 1.1.2-1ubuntu1+esm1
Ubuntu:Pro:18.04:LTS ruby-saml 0 No fix
Ubuntu:Pro:18.04:LTS ruby-saml 0 1.7.2-1ubuntu0.1~esm1
gem omniauth-saml 2.0.0 2.1.2
gem omniauth-saml 2.2.0 2.2.1
gem ruby-saml 1.13.0 1.17.0

Related vulnerabilities