Gitea: Null Pointer Dereference in AddTime API Causes Authenticated Denial of Service
위협 신호 · CVSS · EPSS · KEV
이론적 심각도 점수
예측 데이터 없음
실측 악용 기록 없음
계획된 패치 주기 내 조치(60일 이내)
CVSS 벡터 · 메트릭
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:L상세 설명
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:
1POST /api/v1/repos/{owner}/{repo}/issues/{index}/timesAffected file:
1routers/api/v1/repo/issue_tracked_time.goRelevant code:
1user, err = user_model.GetUserByName(ctx, form.User) 2if err != nil { 3 ctx.APIErrorInternal(err) 4 // missing return 5}Execution continues to:
1trackedTime, err := issues_model.AddTime( 2 ctx, 3 user, 4 issue, 5 form.Time, 6 created, 7)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:
1POST /api/v1/repos/owner/repo/issues/1/times 2Content-Type: application/json 3 4{ 5 "time": 3600, 6 "user_name": "nonexistent_user_xyz" 7}Result:
1HTTP 500 2runtime error: invalid memory address or nil pointer dereferenceThe 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:
1user, err = user_model.GetUserByName(ctx, form.User) 2if err != nil { 3 ctx.APIErrorInternal(err) 4 return 5}AI 심층 분석
공격 시나리오 · 재현 가능한 PoC 페이로드 · 즉시 적용 가능한 차단 패치를 한 번에 받아 보세요. 보안 운영팀이 그대로 점검·티켓팅에 쓸 수 있는 형태로 정리해 드립니다.