Summary
CVE-2026-26247 is a critical (CVSS 9.1) OAuth2 authentication bypass vulnerability in Gitea, the self-hosted open-source Git service. All Gitea versions before 1.25.5 fail to correctly persist the PKCE (Proof Key for Code Exchange) S256 challenge method during the OAuth2 authorization flow, allowing an attacker to complete a token exchange without supplying the valid code verifier. The flaw is classified as CWE-284 (Improper Access Control) and is remotely exploitable with no privileges or user interaction required.
Technical details
- Root cause: During the OAuth2 authorization code flow, Gitea does not correctly persist the PKCE S256 challenge method between the authorization request and the token exchange step. This means the server-side check — which should validate that the client possesses the original code verifier matching the S256 challenge — is not reliably enforced.
- Trigger conditions: Exploitable against any Gitea instance with OAuth2 enabled, operating as an OAuth2 provider using the PKCE S256 challenge method. No authentication and no user interaction are required by the attacker.
- Attack vector: A network-based attacker who obtains an OAuth2 authorization code — for example via referrer header leakage, server-side log exposure, or an open redirect — can submit that code in a token exchange request without providing the legitimate PKCE code verifier. Because the verifier check is not correctly applied, the server issues a valid OAuth2 access token.
- Impact: Successful exploitation yields a valid OAuth2 access token on behalf of the targeted user, constituting an effective account takeover. The CVSS vector reflects high confidentiality and integrity impact (C:H/I:H), consistent with unauthorized access to the victim user’s repositories, code, secrets, and any resources governed by the issued token.
Affected software
- Gitea Open Source Git Server — all versions before 1.25.5
Severity
- CVSS v3.1 Base Score: 9.1 (Critical)
- Vector String:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Mitigation and recommended actions
- Immediate: Upgrade Gitea to version 1.25.5 or later. The fix is delivered via pull requests #36462 and #36477, which correct the persistence of the PKCE S256 challenge method during authorization.
- If immediate upgrade is not feasible: Consider temporarily disabling OAuth2 provider functionality in your Gitea configuration to remove the attack surface until patching can be completed.
- Defense in depth: Review OAuth2 application authorization logs for unexpected token issuances. Restrict inbound access to Gitea OAuth2 endpoints at the network perimeter where external OAuth2 provider use is not required.
IONIX Status
The IONIX research team is tracking ongoing exploitation attempts and recommends immediate patching. Potentially affected assets are outlined in this post.

