basicsecurity.net
Proof, not just disclosure.
Threats / GitLab / CVE-2021-22205
CVE-2021-22205 · EUVD no mirror located · GCVE no mirror located Verified 2026-06-15

GitLab Community and Enterprise Editions vulnerability

GitLab Community and Enterprise Editions are vulnerable to remote code execution through improper image file validation in Workhorse when processing uploads via ExifTool.

Verdict

Today item, not a backlog item.

An unauthenticated attacker can upload a malicious image file to execute arbitrary code on the server. The vulnerability combines insufficient input validation with unsafe ExifTool processing, enabling direct system compromise and lateral movement.

CISA KEV Yes · 2021-11-033Ransomware use Flagged3EPSS 0.94467 (verify live)4Exploit Weaponized · public PoC5
01

Is it exploitable?

— the evidence, ranked above the score
Exploit available
Fully weaponized — public exploit code is cataloged for this vulnerability.We link the existence of the exploit; we do not host or redistribute payloads.
Reported exploitation
31 independent public reports of in-the-wild exploitation are cataloged.Distinct reporting sources (vendor, incident response, government); open them for the underlying claims.
Exploited in the wild
Listed in the CISA Known Exploited Vulnerabilities catalog (added 2021-11-03), flagged for known ransomware use.
CISA KEV ↗Confirmed
Probability (EPSS)
EPSS 0.94467 — modeled likelihood of exploitation activity.EPSS is a daily-changing model output — open the source for today's value.
Severity / affected
Affected: GitLab, Community and Enterprise Editions. Confirm exact fixed builds in the vendor advisory.
NVD ↗Reported
Weakness (CWE)
Mapped to CWE-20 Improper Input Validation, CWE-95 Eval Injection — weakness family: Injection.CWE assignment from the public NVD record; the weakness class drives how the flaw is exploited.
NVD ↗Reported
02

Who’s exploiting it?

— attribution turns risk into urgency
Attribution not established

No threat-actor attribution is established from the public feed for this record. Absence of a named actor is not absence of compromise — see Coverage & confidence.

03

Why it matters

— the attack path, told twice: adversary, then board
1

Front door — unauthenticated access narrative 1

Attacker
I craft a malicious image file with a crafted extension that bypasses validation checks in Workhorse.
Business
The organization's GitLab instance becomes a direct entry point for unauthorized code execution and system access.
2

Keys to the kingdom — privilege/identity takeover narrative 2

Attacker
I upload the file through GitLab's image upload functionality, which passes it to ExifTool for processing.
Business
Attackers gain execution context within the server environment, enabling data exfiltration and persistence mechanisms.
3

Lateral reach — past segmentation narrative 3

Attacker
I execute arbitrary commands on the underlying server through ExifTool's improper handling of the malicious file.
Business
Critical infrastructure and repositories are compromised, with potential for ransomware deployment and operational disruption.
04

What to do

— defensible action
  • Remediate per the vendor advisory — confirm the fixed build for your version and verify exposure.1
Say it to the boardA vulnerability with this evidence profile is a defensible budget line, not a backlog ticket — fund the change against the proof above.
05

Coverage & confidence

— what we know, and what we don’t

Established (cited)

  • KEV listing (CISA)
  • Ransomware-use flag (CISA)
  • EPSS probability (FIRST)
  • Weaponized exploit available (VulnCheck)
  • 31 reported-exploitation source(s)
  • CWE weakness mapping (NVD)
  • Public exploit availability
  • Catalogued by GitLab (CNA)
  • Named finder/reporter credit (CVE.org)
  • Coverage gaps — stated, not hidden

  • No EUVD / GCVE mirror in feed — single-authority dependency for the identifier.
  • EPSS & exposure are time-varying; verify live at the source.
  • Threat-actor attribution not established from feed data — absence of a name is not absence of compromise.
  • Disclosure & credit2
    Catalogued by GitLabCNA
    Credited with finding itThanks vakzz for reporting this vulnerability through our HackerOne bug bounty programunspecified