CVE-2026-100104 Overview
GitLab disclosed a server-side request forgery (SSRF) vulnerability affecting GitLab Community Edition (CE) and Enterprise Edition (EE). The flaw stems from a time-of-check to time-of-use (TOCTOU) race condition in URL validation during repository import operations. An authenticated user can exploit this race window to bypass validation and reach internal network resources that should remain inaccessible.
The issue affects all versions from 10.3 before 19.2.8, 19.3 before 19.3.5, and 19.4 before 19.4.2. The vulnerability is tracked under CWE-918: Server-Side Request Forgery.
Critical Impact
Authenticated attackers can coerce the GitLab server into contacting internal network resources, enabling reconnaissance of otherwise unreachable services behind the perimeter.
Affected Products
- GitLab Community Edition (CE) versions 10.3 through 19.2.7
- GitLab Enterprise Edition (EE) versions 19.3 through 19.3.4
- GitLab CE/EE versions 19.4 through 19.4.1
Discovery Timeline
- 2026-10-13 - CVE-2026-100104 published to the National Vulnerability Database
- 2026-10-14 - Last updated in NVD database
Technical Details for CVE-2026-100104
Vulnerability Analysis
The vulnerability resides in the repository import workflow, where GitLab accepts a user-supplied URL and validates it before fetching remote content. The validator checks the URL against an allowlist and rejects destinations that resolve to internal addresses. A race condition exists between the validation step and the subsequent fetch operation.
An authenticated attacker can exploit this timing gap to swap the resolved address after validation succeeds but before the HTTP client issues the request. The server then connects to an internal host while believing it contacted the originally validated endpoint. This category of flaw is cataloged as CWE-918.
Root Cause
The root cause is a classic TOCTOU pattern. GitLab resolves the hostname once for validation and again when the HTTP client dials the target. Because the two resolutions are independent, a DNS record controlled by the attacker can return a public address on the first lookup and a private RFC1918 address on the second.
Attack Vector
Exploitation requires an authenticated account with permission to initiate a repository import. The attacker hosts a DNS server that alternates responses between a benign public IP and an internal target such as a cloud metadata endpoint. Successful exploitation grants the attacker the ability to probe internal services, though confidentiality impact is limited and no integrity or availability impact is reported.
Technical details are tracked in GitLab Work Item #594194.
Detection Methods for CVE-2026-100104
Indicators of Compromise
- Outbound HTTP requests from GitLab worker processes to RFC1918 ranges, link-local addresses, or cloud metadata services such as 169.254.169.254.
- Repository import jobs referencing hostnames with abnormally low DNS time-to-live (TTL) values.
- Repeated import attempts from the same user account against identical hostnames within short time windows.
Detection Strategies
- Correlate GitLab production_json.log import events with egress firewall logs to flag imports that result in connections to internal subnets.
- Alert on DNS resolutions performed by GitLab Sidekiq workers that return private address space.
- Baseline normal import destinations per user and flag deviations toward uncommon or short-TTL hostnames.
Monitoring Recommendations
- Enable verbose logging on the GitLab Workhorse and Sidekiq components during the remediation window.
- Monitor cloud instance metadata service (IMDS) access logs for requests originating from GitLab compute instances.
- Deploy egress filtering with alerting on any denied connections sourced from GitLab application servers.
How to Mitigate CVE-2026-100104
Immediate Actions Required
- Upgrade GitLab to version 19.4.2, 19.3.5, or 19.2.8 depending on the deployed release branch.
- Audit recent repository import jobs for connections to internal address ranges.
- Restrict repository import permissions to trusted users until patching is complete.
Patch Information
GitLab released fixed versions 19.4.2, 19.3.5, and 19.2.8. Upgrade instructions and the full advisory are available in the GitLab Release Patch 19.4.2 notes.
Workarounds
- Enforce egress network policies that block GitLab application servers from reaching internal subnets and the cloud metadata endpoint.
- Disable the repository import feature from external sources in GitLab Admin settings if patching cannot occur immediately.
- Require administrator approval for all repository import operations originating from non-privileged accounts.
# Example egress restriction using iptables to block IMDS from GitLab host
iptables -A OUTPUT -d 169.254.169.254 -m owner --uid-owner git -j DROP
iptables -A OUTPUT -d 10.0.0.0/8 -m owner --uid-owner git -j DROP
iptables -A OUTPUT -d 172.16.0.0/12 -m owner --uid-owner git -j DROP
iptables -A OUTPUT -d 192.168.0.0/16 -m owner --uid-owner git -j DROP
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

