CVE-2020-10953

7.5 HIGH

📋 TL;DR

This vulnerability in GitLab EE allows attackers to perform path traversal attacks through the NPM feature, potentially accessing files outside the intended directory. It affects GitLab EE versions 11.7 through 12.9. Organizations using these versions with NPM package registry enabled are at risk.

💻 Affected Systems

Products:
  • GitLab Enterprise Edition
Versions: 11.7 through 12.9
Operating Systems: All supported platforms
Default Config Vulnerable: ⚠️ Yes
Notes: Requires NPM package registry feature to be enabled. GitLab Community Edition is not affected.

📦 What is this software?

Gitlab by Gitlab

GitLab is a complete DevOps platform providing source code management, CI/CD pipelines, security scanning, container registry, and collaboration tools used by millions of developers and thousands of enterprises worldwide. As both a cloud-hosted SaaS offering (GitLab.com) and self-managed software, G...

Learn more about Gitlab →

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could read sensitive files like configuration files, source code, or credentials stored on the GitLab server, potentially leading to complete system compromise.

🟠

Likely Case

Unauthorized access to internal files, potentially exposing sensitive configuration data or source code repositories.

🟢

If Mitigated

Limited impact with proper network segmentation and access controls, potentially only exposing non-sensitive files.

🌐 Internet-Facing: HIGH - GitLab instances exposed to the internet are directly vulnerable to external attackers.
🏢 Internal Only: MEDIUM - Internal attackers or compromised accounts could exploit this vulnerability.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires access to the NPM registry feature. The vulnerability is well-documented in the security advisory.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 12.9.1 and later

Vendor Advisory: https://about.gitlab.com/releases/2020/03/26/security-release-12-dot-9-dot-1-released/

Restart Required: Yes

Instructions:

1. Backup your GitLab instance. 2. Update to GitLab EE 12.9.1 or later using your package manager. 3. Run 'gitlab-ctl reconfigure'. 4. Restart GitLab services.

🔧 Temporary Workarounds

Disable NPM Registry

linux

Temporarily disable the NPM package registry feature to prevent exploitation

Edit /etc/gitlab/gitlab.rb
Set 'gitlab_rails["packages_enabled"] = false'
Run 'gitlab-ctl reconfigure'

🧯 If You Can't Patch

  • Implement strict network access controls to limit who can access the GitLab NPM registry
  • Enable detailed logging and monitoring for NPM registry access patterns

🔍 How to Verify

Check if Vulnerable:

Check GitLab version: if running EE 11.7-12.9 with NPM registry enabled, you are vulnerable.

Check Version:

sudo gitlab-rake gitlab:env:info | grep 'Version:'

Verify Fix Applied:

Verify version is 12.9.1 or later and test NPM registry functionality for path traversal attempts.

📡 Detection & Monitoring

Log Indicators:

  • Unusual NPM package requests with '../' patterns
  • Failed path traversal attempts in application logs

Network Indicators:

  • Multiple failed NPM package download attempts
  • Unusual patterns in NPM registry API calls

SIEM Query:

source="gitlab" AND ("npm" OR "package") AND ("..\/" OR "%2e%2e%2f")

🔗 References

📤 Share & Export