CVE-2026-55984: Gitea · Null Pointer Dereference in AddTime API Causes Authenticated Denial of Service
Affects code.gitea.io/giteaSource GCVE Database
Not known to be exploited · CVSS 2.7 Low : upgrade to 1.27.0 when convenient.
Data as of 30 Oct 2026, 11:52 UTC
- EPSS
- 0.4% chance of exploitation in 30 days – higher than 39% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
- Patch
- Available – fixed in 1.27.0
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:LExploitation evidence
t = 0 is the CVE’s publication on cve.org
Disclosed: evidence found.
CVE published 13 Aug 2026
Detectable: no evidence on record.
No public nuclei template indexed
Weaponized: evidence found.
CISA SSVC: proof of concept public
Exploited in the wildExploited: no evidence on record.
Not in CISA KEV and no source reports exploitation
Observed by OffSeq MirageSeen by Mirage: no evidence on record.
No attack traffic recorded by OffSeq Mirage sensors
Timeline
CVE ID reserved
by Gitea Limited
, 36 days before disclosure
CVE published
on cve.org
, t = 0
CISA SSVC assessment
proof of concept public
, 25 hours after disclosure
A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), CISA SSVC, the Metasploit, Exploit-DB and nuclei-templates index as of 30 Oct 2026.
What to do
Upgrade code.gitea.io/gitea to 1.27.0.
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| Gocode.gitea.io/gitea | Affected
| Fixed in
|
Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.
Description
### Summary The AddTime API handler continues execution after an error returned by `GetUserByName()`. When a repository administrator specifies a non-existent user name, an error response is generated but execution does not stop. Subsequent code dereferences a nil user pointer, resulting in a runtime panic. ### Details Affected endpoint: ```http POST /api/v1/repos/{owner}/{repo}/issues/{index}/times ``` Affected file: ```text routers/api/v1/repo/issue_tracked_time.go ``` Relevant code: ```go user, err = user_model.GetUserByName(ctx, form.User) if err != nil { ctx.APIErrorInternal(err) // missing return } ``` Execution continues to: ```go trackedTime, err := issues_model.AddTime( ctx, user, issue, form.Time, created, ) ``` When `GetUserByName()` fails, `user` is nil. The subsequent call dereferences the nil pointer and triggers a runtime panic. ### Proof of Concept Using a repository administrator account: ```http POST /api/v1/repos/owner/repo/issues/1/times Content-Type: application/json { "time": 3600, "user_name": "nonexistent_user_xyz" } ``` Result: ```text HTTP 500 runtime error: invalid memory address or nil pointer dereference ``` The stack trace indicates execution reaches the AddTime code path with a nil user object. ### Impact An authenticated repository administrator can repeatedly trigger server-side panics through the affected endpoint. Depending on deployment configuration and panic recovery behavior, this may result in request failures, stack trace disclosure, excessive log generation, or degraded service availability. ### Suggested Fix Add a return statement after the error response: ```go user, err = user_model.GetUserByName(ctx, form.User) if err != nil { ctx.APIErrorInternal(err) return } ```