Automated Threat Modeling

Brief Summary: GitLab CE/EE CVE-2025-14870 Unauthenticated DoS in Duo Workflows API

CVE-2025-14870 is a high-severity, unauthenticated denial-of-service vulnerability in GitLab's Duo Workflows API, caused by insufficient validation of JSON input. This review covers the patch details and the affected version ranges.

CVE Analysis

6 min read

ZeroPath CVE Analysis
ZeroPath CVE Analysis

2026-05-13

Brief Summary: GitLab CE/EE CVE-2025-14870 Unauthenticated DoS in Duo Workflows API
Experimental AI-Generated Content

This CVE analysis is an experimental publication that is completely AI-generated. The content may contain errors or inaccuracies and is subject to change as more information becomes available. We are continuously refining our process.

If you have feedback, questions, or notice any errors, please reach out to us.

[email protected]

Introduction

GitLab recently patched an input validation flaw in its Duo Workflows API. The flaw lets any unauthenticated remote attacker force unbounded resource allocation on the server, which results in a complete denial of service. It has a CVSS 3.1 score of 7.5 and requires no authentication at all, so it is a meaningful risk to every internet-facing, self-managed GitLab instance running versions 18.5 through the latest unpatched releases.

Technical information

Root cause: unbounded resource allocation (CWE-770)

The vulnerability is in the Duo Workflows API, a feature GitLab first introduced in version 18.5. The API endpoint accepts incoming JSON payloads without adequately validating their size or structure, which maps directly to CWE-770: Allocation of Resources Without Limits or Throttling.

When a request arrives at the Duo Workflows API, the server parses and processes the JSON body. Before the patch there was no bounds checking and no limit on resource consumption, so an attacker could craft a JSON payload that forces the server to allocate excessive memory or CPU resources. The result is service degradation or a complete denial of service for every user of the GitLab instance.

CVSS breakdown

The full CVSS 3.1 vector string is CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H.

MetricValueWhat it means
Attack VectorNetworkThe vulnerability is exploitable remotely over the internet.
Attack ComplexityLowNo advanced exploitation techniques or specific timing conditions are required.
Privileges RequiredNoneThe attacker needs no account and no authentication of any kind.
User InteractionNoneThe exploit runs without any involvement from a legitimate user.
ScopeUnchangedThe impact stays within the vulnerable component itself.
Confidentiality / IntegrityNoneNo data is leaked or modified.
AvailabilityHighThe availability of the GitLab service can be completely compromised.

Attack flow

Based on the available advisory information, the exploitation path is straightforward:

  1. The attacker finds a GitLab instance exposed to the network. This needs no authentication and no reconnaissance of user accounts.
  2. The attacker crafts a JSON payload structured to trigger excessive resource allocation when the Duo Workflows API endpoint parses it.
  3. The attacker sends the payload to the Duo Workflows API. The endpoint does not require authentication, so it accepts and processes the request.
  4. The server starts allocating memory or processing resources to handle the malicious payload. With no cap or throttle, the allocation continues until the server's resources are exhausted.
  5. The GitLab instance becomes unresponsive or crashes, which denies service to all legitimate users.

The specific endpoint paths and proof-of-concept payloads have not been disclosed. Both the HackerOne report (#3446641) and the GitLab work item (#584490) are currently restricted from public view. Under its standard disclosure policy, GitLab will make the issue details public on its issue tracker 30 days after the patch release.

Patch information

GitLab fixed CVE-2025-14870 in a coordinated patch release published on May 13, 2026. The release shipped three fixed versions across the supported release branches: 18.11.3, 18.10.6, and 18.9.7.

The fix adds proper input validation and resource consumption limits to the Duo Workflows API endpoint. Before the patch, a specially crafted JSON payload sent to this API could force the server to allocate memory or processing resources without any cap, which led to service degradation or an outright denial of service. The new bounds checking and validation logic rejects oversized or maliciously structured JSON bodies before they can trigger excessive resource consumption.

The vulnerability was introduced in GitLab version 18.5, the release that first shipped the Duo Workflows API, and it affected every later version up to, but not including, the patched releases. The three fixed versions correspond to the three currently supported GitLab release trains:

Release branchVulnerable versionsFixed version
18.11.x18.11.0 through 18.11.218.11.3
18.10.x18.10.0 through 18.10.518.10.6
18.9.x and older18.5.0 through 18.9.618.9.7

The specific code changes are not publicly visible at this time. The associated GitLab work item remains private, and the HackerOne report is also restricted.

GitLab.com was already running the patched version at the time of disclosure, and GitLab Dedicated customers did not need to take any action. Self-managed installations should upgrade to one of the three fixed versions immediately. Security researcher a92847865 reported the vulnerability through GitLab's HackerOne bug bounty program.

Affected systems and versions

The vulnerability affects GitLab Community Edition (CE) and Enterprise Edition (EE) in the following version ranges:

  • All versions from 18.5.0 up to (but not including) 18.9.7
  • All versions from 18.10.0 up to (but not including) 18.10.6
  • All versions from 18.11.0 up to (but not including) 18.11.3

The vulnerable component is the Duo Workflows API, first introduced in version 18.5. Any self-managed GitLab instance that runs a version in these ranges and exposes the Duo Workflows API to network traffic is affected. GitLab has already patched GitLab.com (SaaS) and GitLab Dedicated instances, and they require no customer action.

Vendor security history

GitLab has run a public bug bounty program on HackerOne since 2018. It sets bounty payouts with a public CVSS calculator, and payouts reach up to $1000 for critical- and high-severity reports upon triage. General DoS attacks are typically out of scope for the program, but GitLab explicitly makes an exception for application-layer DoS vulnerabilities that cause persistent, total service disruption and can be executed through unauthenticated endpoints. Accepting and fixing CVE-2025-14870 fits this updated policy and shows that GitLab is willing to address high-impact availability threats even when they fall into a category many bounty programs exclude.

References

Detect & fix
what others miss

Works with
  • GitHub
  • GitLab
  • Bitbucket
  • Azure DevOps Services
  • Gerrit
  • CVS
  • Jira
  • Linear
  • Slack
  • Security Compass
Explore integrations
Security magnifying glass visualization