CVE-2024-45614
Medium · 5.4Puma's header normalization allows for client to clobber proxy set headers
CVSS
5.4
EPSS
0.6%
Published
Sep 20, 2024
CISA due date
—
Cloudanix analysis
A web server bug can let visitors fake information normally supplied by trusted network equipment, potentially causing apps to make unsafe decisions about who connected or whether the connection was secure.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Data Exposure
- Component
- Web Framework
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The flaw is an HTTP header normalization issue in Puma where client-supplied headers containing underscores can collide with or override semantically equivalent headers containing hyphens that were set by an intermediate proxy. For example, a proxy may set a trusted header such as X-Forwarded-For, X-Forwarded-Proto, or X-Forwarded-Host, while an attacker sends X-Forwarded_For, X-Forwarded_Proto, or X-Forwarded_Host. If the application or framework trusts the resulting request environment as proxy-authoritative, attacker-controlled values may be used for client IP attribution, request scheme determination, host generation, redirect logic, or security decisions. The most likely impacts are trust-boundary bypass, incorrect scheme or host handling, forced HTTP downgrade behavior, incorrect redirects, misleading audit logs, and confidentiality exposure when combined with an additional network-positioned attacker capable of intercepting downgraded or redirected traffic.
Why it matters to the business
Applications behind reverse proxies or load balancers may make incorrect decisions about where a request came from and whether it was received securely. This can lead to broken access controls that depend on client IP, inaccurate fraud or audit records, unsafe redirects, or exposure of sensitive data if users are redirected or downgraded to insecure HTTP in combination with a separate man-in-the-middle condition. The vulnerability is not currently in the CISA Known Exploited Vulnerabilities catalog, is not associated with known ransomware use, and has a low EPSS score, so urgency is moderate; however, internet-facing Ruby applications using Puma behind trusted proxies should still remediate because proxy-header trust issues are often easy to probe remotely and can undermine security controls in application-specific ways.
How an attack unfolds
An attacker sends a crafted HTTP request directly to an application served by an affected Puma version, usually through the normal public proxy or load balancer path. The request includes an underscore variant of a proxy-controlled header, such as X-Forwarded_Proto or X-Forwarded_For, intended to collide with the hyphenated header that the proxy normally injects. When Puma processes the request, the attacker-supplied underscore header can clobber or take precedence over the value that the application expected to receive only from the trusted proxy. Downstream application code, middleware, or framework logic may then treat the attacker-controlled value as authoritative. Depending on how the application uses these headers, the attacker may spoof the perceived source IP address, alter generated absolute URLs, influence redirect destinations, make the application believe the request used HTTP instead of HTTPS, or trigger behavior that exposes data if another attacker can intercept insecure traffic. Successful exploitation depends heavily on application behavior and whether trusted proxy headers are used for security decisions.
How to fix it
Upgrade Puma to a fixed release or source revision that includes commit e867e53aa4e7df91fa97d8995a80fc2f9466a080. For deployments built from Git, ensure the Puma dependency is at or after that commit. For package-managed deployments, update the puma gem or downstream package to a vendor release that incorporates the fix, then rebuild and redeploy affected applications. As defense in depth, configure reverse proxies, ingress controllers, and load balancers to drop or reject client-supplied forwarded headers before setting their own trusted values, including underscore variants. Prefer a single normalized forwarding-header policy, disable or reject underscores in request headers where possible, and ensure applications only trust forwarded headers from explicitly trusted proxy IP ranges. Review application logic for security decisions based on X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Host, Forwarded, X-Real-IP, or similar headers.
How to confirm the fix worked
Confirm the deployed Puma version or source revision includes commit e867e53aa4e7df91fa97d8995a80fc2f9466a080 or a release containing it. Validate dependency manifests, lockfiles, container images, and runtime package inventories rather than only source repositories. In a non-production test environment, send requests containing both proxy-set hyphenated headers and client-controlled underscore variants, then verify that application-observed values cannot be overridden by the underscore form. Test representative security-sensitive behaviors, including perceived client IP, request scheme, generated absolute URLs, redirect targets, HSTS behavior, and IP-based allow or deny logic. Confirm proxy-layer controls reject or strip inbound headers such as X-Forwarded_For, X-Forwarded_Proto, and X-Forwarded_Host before the request reaches Puma.
Typical attack path
- Identify a Ruby web application or API served by Puma and positioned behind a reverse proxy, CDN, ingress controller, or load balancer.
- Determine whether the application behavior changes based on forwarded headers, such as client IP, scheme, host, or SSL indicators.
- Send requests containing underscore variants of trusted proxy headers, such as X-Forwarded_For, X-Forwarded_Proto, or X-Forwarded_Host.
- Observe whether the application uses the attacker-provided underscore header value instead of the proxy-supplied hyphenated value.
- Abuse the resulting trust confusion to spoof source IP, influence redirects, alter URL generation, bypass IP-based restrictions, or force insecure scheme handling.
- If combined with a separate man-in-the-middle capability, exploit HTTP downgrade or unsafe redirect behavior to observe or tamper with sensitive traffic.
How to detect it
Look for evidence of probing or exploitation by searching edge proxy, CDN, load balancer, ingress, web server, WAF, and application logs for inbound request headers that use underscores instead of hyphens for proxy-related fields. High-signal events include X-Forwarded_For, X-Forwarded_Proto, X-Forwarded_Host, X-Forwarded_Port, X-Real_IP, or similar headers arriving from external clients, especially when the same request also contains normal proxy-added hyphenated headers or results in redirects, scheme changes, host changes, authorization changes, or anomalous source-IP attribution. Review application logs for mismatches between edge-observed client IP and application-recorded client IP, unexpected http scheme values behind TLS-terminating proxies, redirects to unexpected hosts or HTTP URLs, and requests that appear to bypass IP-based restrictions. If full HTTP header logging is unavailable, inspect WAF events, reverse proxy debug logs, request traces, APM captures, and sampled access logs. Because exploitation may not leave a unique payload beyond crafted headers, correlate suspicious underscore-header requests with subsequent account activity, access to sensitive endpoints, failed or successful authorization attempts, and unusual redirect responses.
- X-Forwarded_For
- X-Forwarded_Proto
- X-Forwarded_Host
- X-Forwarded_Port
- X-Forwarded_Server
- X-Forwarded_Ssl
- X-Real_IP
- HTTP_X_FORWARDED_FOR
- HTTP_X_FORWARDED_PROTO
- HTTP_X_FORWARDED_HOST
- HTTP_X_FORWARDED_PORT
- HTTP_X_REAL_IP
- X-Forwarded_Proto: http
- X-Forwarded_Ssl: off
- X-Forwarded_Host:
- X-Forwarded_For: 127.0.0.1
- X-Forwarded_For: localhost
- X-Forwarded_For: 0.0.0.0
What your security team should do
- Inventory internet-facing and internal Ruby applications that use Puma behind reverse proxies, CDNs, ingress controllers, or load balancers.
- Prioritize patching applications where forwarded headers influence authentication, authorization, IP allowlists, redirect generation, URL generation, tenant routing, logging, fraud controls, or TLS enforcement.
- Upgrade Puma to a fixed version or source revision containing e867e53aa4e7df91fa97d8995a80fc2f9466a080 and redeploy all affected containers, hosts, and serverless images.
- Add proxy-layer controls to strip or reject client-supplied forwarding headers, especially underscore variants of trusted hyphenated headers.
- Search historical access logs for requests containing underscore forwarding headers and investigate matching sessions for suspicious redirects, source-IP spoofing, or unexpected HTTP scheme handling.
- Add regression tests that verify underscore header variants cannot override trusted proxy headers.
- Ensure applications trust forwarded headers only from known proxy addresses and do not use unvalidated header values for security-critical decisions.
The record
Clients could clobber values set by intermediate proxies (such as X-Forwarded-For) by providing a underscore version of the same header (X-Forwarded_For). Any users trusting headers set by their proxy may be affected. Attackers may be able to downgrade connections to HTTP (non-SSL) or redirect responses, which could cause confidentiality leaks if combined with a separate MITM attack.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| RubyGems | puma | 0 | 5.6.9 |
| RubyGems | puma | 6.0.0 | 6.4.3 |
| Chainguard | gitaly-config-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitaly-config-18.1 | 0 | 18.1.1-r1 |
| Chainguard | gitaly-config-18.1 | 0 | 18.1.2-r1 |
| Chainguard | gitaly-config-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitaly-config-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-base-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-base-18.1 | 0 | 18.1.1-r1 |
| Chainguard | gitlab-base-18.1 | 0 | 18.1.2-r1 |
| Chainguard | gitlab-base-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-base-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-certificates-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-certificates-18.1 | 0 | 18.1.1-r1 |
| Chainguard | gitlab-certificates-18.1 | 0 | 18.1.2-r1 |
| Chainguard | gitlab-certificates-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-certificates-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-cfssl-self-sign-scripts-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-cfssl-self-sign-scripts-18.1 | 0 | 18.1.1-r1 |
| Chainguard | gitlab-cfssl-self-sign-scripts-18.1 | 0 | 18.1.2-r1 |
| Chainguard | gitlab-cfssl-self-sign-scripts-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-cfssl-self-sign-scripts-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-cng-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-cng-18.1 | 0 | 18.1.1-r1 |
| Chainguard | gitlab-cng-18.1 | 0 | 18.1.2-r1 |
| Chainguard | gitlab-cng-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-cng-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-container-registry-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-container-registry-18.1 | 0 | 18.1.1-r1 |
| Chainguard | gitlab-container-registry-18.1 | 0 | 18.1.2-r1 |
| Chainguard | gitlab-container-registry-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-container-registry-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-container-registry-compat-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-container-registry-scripts-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-container-registry-scripts-18.1 | 0 | 18.1.1-r1 |
| Chainguard | gitlab-container-registry-scripts-18.1 | 0 | 18.1.2-r1 |
| Chainguard | gitlab-container-registry-scripts-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-container-registry-scripts-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-elasticsearch-indexer-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-elasticsearch-indexer-compat-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-exporter-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-exporter-18.1 | 0 | 18.1.1-r1 |
| Chainguard | gitlab-exporter-18.1 | 0 | 18.1.2-r1 |
| Chainguard | gitlab-exporter-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-exporter-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-exporter-scripts-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-exporter-scripts-18.1 | 0 | 18.1.1-r1 |
| Chainguard | gitlab-exporter-scripts-18.1 | 0 | 18.1.2-r1 |
| Chainguard | gitlab-exporter-scripts-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-exporter-scripts-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-geo-logcursor-scripts-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-gitaly-scripts-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-gitaly-scripts-18.1 | 0 | 18.1.1-r1 |
| Chainguard | gitlab-gitaly-scripts-18.1 | 0 | 18.1.2-r1 |
| Chainguard | gitlab-gitaly-scripts-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-gitaly-scripts-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-logger-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-logger-18.1 | 0 | 18.1.1-r1 |
| Chainguard | gitlab-logger-18.1 | 0 | 18.1.2-r1 |
| Chainguard | gitlab-logger-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-logger-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-logger-compat-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-logger-compat-18.1 | 0 | 18.1.1-r1 |
| Chainguard | gitlab-logger-compat-18.1 | 0 | 18.1.2-r1 |
| Chainguard | gitlab-logger-compat-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-logger-compat-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-mailroom-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-mailroom-scripts-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-pages-scripts-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-pages-scripts-18.1 | 0 | 18.1.1-r1 |
| Chainguard | gitlab-pages-scripts-18.1 | 0 | 18.1.2-r1 |
| Chainguard | gitlab-pages-scripts-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-pages-scripts-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-rails-scripts-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-rails-scripts-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-rails-scripts-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-shell-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-shell-18.1 | 0 | 18.1.1-r1 |
| Chainguard | gitlab-shell-18.1 | 0 | 18.1.2-r1 |
| Chainguard | gitlab-shell-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-shell-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-shell-scripts-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-shell-scripts-18.1 | 0 | 18.1.1-r1 |
| Chainguard | gitlab-shell-scripts-18.1 | 0 | 18.1.2-r1 |
| Chainguard | gitlab-shell-scripts-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-shell-scripts-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-shell-scripts-compat-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-shell-scripts-compat-18.1 | 0 | 18.1.1-r1 |
| Chainguard | gitlab-shell-scripts-compat-18.1 | 0 | 18.1.2-r1 |
| Chainguard | gitlab-shell-scripts-compat-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-shell-scripts-compat-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-sidekiq-ce-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-sidekiq-ce-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-sidekiq-scripts-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-toolbox-ce-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-toolbox-ce-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-toolbox-scripts-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-webservice-ce-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-webservice-ce-18.2 | 0 | 18.2.1-r1 |
| Chainguard | gitlab-webservice-config-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-webservice-scripts-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-workhorse-scripts-17.4 | 0 | 17.4.4-r0 |
| Chainguard | gitlab-workhorse-scripts-18.1 | 0 | 18.1.3-r2 |
| Chainguard | gitlab-workhorse-scripts-18.2 | 0 | 18.2.1-r1 |
| Chainguard | logstash | 0 | 8.15.2-r1 |
| Chainguard | logstash-compat | 0 | 8.15.2-r1 |
| Chainguard | logstash-env2yaml | 0 | 8.15.2-r1 |
| Chainguard | logstash-jre-bcfips | 0 | 8.15.3-r0 |
| Chainguard | logstash-jre-bcfips-compat | 0 | 8.15.3-r0 |
| Chainguard | logstash-jre-bcfips-env2yaml | 0 | 8.15.3-r0 |
| Chainguard | logstash-jre-bcfips-with-output-opensearch | 0 | 8.15.3-r0 |
| Chainguard | logstash-with-output-opensearch | 0 | 8.15.2-r1 |
| Chainguard | ruby3.2-puma | 0 | 6.4.3-r0 |
| Debian:11 | puma | 0 | No fix |
| Debian:11 | puma | 0 | 4.3.8-1+deb11u3 |
| Debian:12 | puma | 0 | No fix |
| Debian:13 | puma | 0 | No fix |
| SUSE:Linux Enterprise High Availability Extension 15 SP2 | rubygem-puma | 0 | 4.3.12-150000.3.15.1 |
| SUSE:Linux Enterprise High Availability Extension 15 SP3 | rubygem-puma | 0 | 4.3.12-150000.3.15.1 |
| SUSE:Linux Enterprise High Availability Extension 15 SP4 | rubygem-puma | 0 | 4.3.12-150000.3.15.1 |
| SUSE:Linux Enterprise High Availability Extension 15 SP5 | rubygem-puma | 0 | 4.3.12-150000.3.15.1 |
| SUSE:Linux Enterprise High Availability Extension 15 SP6 | rubygem-puma | 0 | 5.6.9-150600.18.3.1 |
| SUSE:Linux Enterprise High Availability Extension 15 SP7 | rubygem-puma | 0 | 5.6.9-150600.18.3.1 |
| Ubuntu:20.04:LTS | puma | 0 | No fix |
| Ubuntu:22.04:LTS | puma | 0 | No fix |
| Ubuntu:24.04:LTS | puma | 0 | 6.4.2-4ubuntu4.3 |
| Ubuntu:24.10 | puma | 0 | 6.4.2-5ubuntu4 |
| Ubuntu:Pro:20.04:LTS | puma | 0 | 3.12.4-1ubuntu2+esm2 |
| Ubuntu:Pro:22.04:LTS | puma | 0 | 5.5.2-2ubuntu2+esm2 |
| Wolfi | gitaly-config-18.1 | 0 | 18.1.1-r1 |
| Wolfi | gitaly-config-18.1 | 0 | 18.1.2-r1 |
| Wolfi | gitaly-config-18.1 | 0 | 18.1.3-r2 |
| Wolfi | gitaly-config-18.2 | 0 | 18.2.1-r1 |
| Wolfi | gitlab-base-18.1 | 0 | 18.1.1-r1 |
| Wolfi | gitlab-base-18.1 | 0 | 18.1.2-r1 |
| Wolfi | gitlab-base-18.1 | 0 | 18.1.3-r2 |
| Wolfi | gitlab-base-18.2 | 0 | 18.2.1-r1 |
| Wolfi | gitlab-certificates-18.1 | 0 | 18.1.1-r1 |
| Wolfi | gitlab-certificates-18.1 | 0 | 18.1.2-r1 |
| Wolfi | gitlab-certificates-18.1 | 0 | 18.1.3-r2 |
| Wolfi | gitlab-certificates-18.2 | 0 | 18.2.1-r1 |
| Wolfi | gitlab-cfssl-self-sign-scripts-18.1 | 0 | 18.1.1-r1 |
| Wolfi | gitlab-cfssl-self-sign-scripts-18.1 | 0 | 18.1.2-r1 |
| Wolfi | gitlab-cfssl-self-sign-scripts-18.1 | 0 | 18.1.3-r2 |
| Wolfi | gitlab-cfssl-self-sign-scripts-18.2 | 0 | 18.2.1-r1 |
| Wolfi | gitlab-cng-18.1 | 0 | 18.1.1-r1 |
| Wolfi | gitlab-cng-18.1 | 0 | 18.1.2-r1 |
| Wolfi | gitlab-cng-18.1 | 0 | 18.1.3-r2 |
| Wolfi | gitlab-cng-18.2 | 0 | 18.2.1-r1 |
| Wolfi | gitlab-container-registry-18.1 | 0 | 18.1.1-r1 |
| Wolfi | gitlab-container-registry-18.1 | 0 | 18.1.2-r1 |
| Wolfi | gitlab-container-registry-18.1 | 0 | 18.1.3-r2 |
| Wolfi | gitlab-container-registry-18.2 | 0 | 18.2.1-r1 |
| Wolfi | gitlab-container-registry-scripts-18.1 | 0 | 18.1.1-r1 |
| Wolfi | gitlab-container-registry-scripts-18.1 | 0 | 18.1.2-r1 |
| Wolfi | gitlab-container-registry-scripts-18.1 | 0 | 18.1.3-r2 |
| Wolfi | gitlab-container-registry-scripts-18.2 | 0 | 18.2.1-r1 |
| Wolfi | gitlab-exporter-18.1 | 0 | 18.1.1-r1 |
| Wolfi | gitlab-exporter-18.1 | 0 | 18.1.2-r1 |
| Wolfi | gitlab-exporter-18.1 | 0 | 18.1.3-r2 |
| Wolfi | gitlab-exporter-18.2 | 0 | 18.2.1-r1 |
| Wolfi | gitlab-exporter-scripts-18.1 | 0 | 18.1.1-r1 |
| Wolfi | gitlab-exporter-scripts-18.1 | 0 | 18.1.2-r1 |
| Wolfi | gitlab-exporter-scripts-18.1 | 0 | 18.1.3-r2 |
| Wolfi | gitlab-exporter-scripts-18.2 | 0 | 18.2.1-r1 |
| Wolfi | gitlab-gitaly-scripts-18.1 | 0 | 18.1.1-r1 |
| Wolfi | gitlab-gitaly-scripts-18.1 | 0 | 18.1.2-r1 |
| Wolfi | gitlab-gitaly-scripts-18.1 | 0 | 18.1.3-r2 |
| Wolfi | gitlab-gitaly-scripts-18.2 | 0 | 18.2.1-r1 |
| Wolfi | gitlab-logger-18.1 | 0 | 18.1.1-r1 |
| Wolfi | gitlab-logger-18.1 | 0 | 18.1.2-r1 |
| Wolfi | gitlab-logger-18.1 | 0 | 18.1.3-r2 |
| Wolfi | gitlab-logger-18.2 | 0 | 18.2.1-r1 |
| Wolfi | gitlab-logger-compat-18.1 | 0 | 18.1.1-r1 |
| Wolfi | gitlab-logger-compat-18.1 | 0 | 18.1.2-r1 |
| Wolfi | gitlab-logger-compat-18.1 | 0 | 18.1.3-r2 |
| Wolfi | gitlab-logger-compat-18.2 | 0 | 18.2.1-r1 |
| Wolfi | gitlab-pages-scripts-18.1 | 0 | 18.1.1-r1 |
| Wolfi | gitlab-pages-scripts-18.1 | 0 | 18.1.2-r1 |
| Wolfi | gitlab-pages-scripts-18.1 | 0 | 18.1.3-r2 |
| Wolfi | gitlab-pages-scripts-18.2 | 0 | 18.2.1-r1 |
| Wolfi | gitlab-shell-18.1 | 0 | 18.1.1-r1 |
| Wolfi | gitlab-shell-18.1 | 0 | 18.1.2-r1 |
| Wolfi | gitlab-shell-18.1 | 0 | 18.1.3-r2 |
| Wolfi | gitlab-shell-18.2 | 0 | 18.2.1-r1 |
| Wolfi | gitlab-shell-scripts-18.1 | 0 | 18.1.1-r1 |
| Wolfi | gitlab-shell-scripts-18.1 | 0 | 18.1.2-r1 |
| Wolfi | gitlab-shell-scripts-18.1 | 0 | 18.1.3-r2 |
| Wolfi | gitlab-shell-scripts-18.2 | 0 | 18.2.1-r1 |
| Wolfi | gitlab-shell-scripts-compat-18.1 | 0 | 18.1.1-r1 |
| Wolfi | gitlab-shell-scripts-compat-18.1 | 0 | 18.1.2-r1 |
| Wolfi | gitlab-shell-scripts-compat-18.1 | 0 | 18.1.3-r2 |
| Wolfi | gitlab-shell-scripts-compat-18.2 | 0 | 18.2.1-r1 |
| Wolfi | logstash | 0 | 8.15.2-r1 |
| Wolfi | logstash-compat | 0 | 8.15.2-r1 |
| Wolfi | logstash-env2yaml | 0 | 8.15.2-r1 |
| Wolfi | logstash-with-output-opensearch | 0 | 8.15.2-r1 |
| Wolfi | ruby3.2-puma | 0 | 6.4.3-r0 |
| gem | puma | 6.0.0 | 6.4.3 |
| openSUSE:Leap 15.5 | rubygem-puma | 0 | 4.3.12-150000.3.15.1 |
Related vulnerabilities
- CVE-2024-21510 Versions of the package sinatra from 0.0.0 are vulnerable to Reliance on Untrusted Inputs… Also affects gitaly-config-17.4
- CVE-2025-61770 Rack's unbounded multipart preamble buffering enables DoS (memory exhaustion) Also affects gitaly-config-18.2
- CVE-2025-61771 Rack: Multipart parser buffers large non‑file fields entirely in memory, enabling DoS… Also affects gitaly-config-18.2
- CVE-2025-61772 Rack's multipart parser buffers unbounded per-part headers, enabling DoS (memory… Also affects gitaly-config-18.2
- CVE-2024-41946 REXML is an XML toolkit for Ruby. Also affects logstash
- CVE-2024-41123 REXML is an XML toolkit for Ruby. Also affects logstash
- CVE-2024-39908 REXML is an XML toolkit for Ruby. Also affects logstash
- CVE-2024-30172 An issue was discovered in Bouncy Castle Java Cryptography APIs before 1.78. Also affects logstash