VersionDrift
Product

Gitea 28.1.0 → 28.3.0

2 releases · 0 breaking changes · 0 security fixes · 29 advisories fixed

0security0breaking0deprecated5feature71fix

Vulnerabilities fixed by this upgrade

  • medium CVE-2026-119625 GET /{user}.rss / .atom leak private activity to a scope-confined API token (2nd incomplete-fix follow-up of GHSA-6cqf-375w-639g, user feed never got the scope-category check the repo feeds did)
  • 6.5 CVE-2026-112887 Gitea Actions task tokens authenticate to the REST API with no token scope, enabling instance-wide private repository enumeration via GET /api/v1/user/repos
  • medium CVE-2026-116474 Actions token can spoof instance-signed commits by adding a GPG key
  • 5.3 CVE-2026-119533 Public project boards disclose private pull request titles and repository names
  • 6.5 CVE-2026-118504 API Issue Mutation Archive Restriction Bypass
  • medium CVE-2026-117677 Helm chart upload: unbounded gzip+tar metadata parse before the package-size quota gate (CWE-409/CWE-400 decompression amplification)
  • 6.5 CVE-2026-117649 Cross-repository issue dependency and timeline read path serializes private issue title/body and attachments without the source repository access check (LoadDepIssueDetails/ToAPIIssue without ACL)
  • 4.3 CVE-2026-118395 Deprecated POST /org/{org}/repos skips rejectPublicOnly; public-only tokens can create private repositories
  • 4.3 CVE-2026-117646 Public-only tokens expose private repositories through profile and organization tabs
  • 6.5 CVE-2026-116289 Public-only PAT scope bypass via Actions runner registration leaks private repository secrets
  • 4.3 CVE-2026-114199 Contribution heatmap discloses private-repository contribution counts to public-only tokens (GetUserHeatmapData never reads ctx.PublicOnly while activity feeds do)
  • 4.3 CVE-2026-119627 Gitea web profile and feed routes bypass public-only token scope for limited-visibility users
  • 4.3 CVE-2026-118394 OIDC userinfo: the public-only token scope is not enforced when the token arrives as a query parameter (residual of CVE-2026-55982)
  • 8.7 CVE-2026-113429 Stored XSS on the Gitea origin through the v3 artifact Content-Encoding header
  • 8.1 CVE-2026-116296 Write collaborators can replace and destroy releases, milestones and labels on archived repositories (archived write-protection bypass)
  • 8.1 CVE-2026-119441 Public-Only Token Bypass on Bulk Organization Repository Deletion
  • 8.1 CVE-2026-117635 Public-only tokens bypass private-resource restrictions on the admin API
  • 7.1 CVE-2026-117685 Public-only package tokens can access private OCI blobs
  • high CVE-2026-120263 Account Takeover via OAuth2 Auto-Linking with Attacker-Controlled Username
  • 8.1 CVE-2026-118386 Actions: fork workflow gets secrets and write token via review commit_id
  • low CVE-2026-107618 Cross-Site Request Forgery on `POST /{owner}/{repo}/topics`
  • 3.5 CVE-2026-97204 DeleteLabel compares one untyped id against whichever namespace the label uses, letting a repo collaborator delete an ID-colliding organisation's labels
  • 6.5 CVE-2026-105964 Gitea Actions Artifact V4 API: unbounded request body read in parseProtobufBody enables memory-exhaustion DoS
  • 4.3 CVE-2026-110311 Draft releases include attachment metadata from other repositories
  • 5.3 CVE-2026-105661 Unauthenticated nil-pointer panic on /{username}/-/repositories for individual users
  • 6.3 CVE-2026-110494 Gitea AddReleaseAttachments missing IssueID check allows issue attachment metadata exposure and deletion via releases
  • 4.3 CVE-2026-107686 Locked issues and comments still accept reactions through the web UI
  • 8.1 CVE-2026-104627 Cross-Session OpenID Credential Linking Enables Account Takeover
  • 7.5 CVE-2026-109553 VerifyCert maps SSH certificate principals onto other users' SSH public keys

Breaking changes

None in the release notes.

Security changes

None in the release notes.

Every release in between

featureImprove hover border of colored button groups (#39861) (#39899)
feature(webhook) Mention release assets in notifications (#39631) (#39912)
feature(project) Filter project milestones by linked issues (#39958) (#39984)
fix(pulls) Tolerate invalid stored review commit_id (#39849) (#39857)
fix(api) Skip label lookup in ListIssues when no labels filter given (#39890) (#39893)
fixPrevent system users from watching a repository (#39886) (#39895)
fixOff-by-one errors in code comment patches (#39887) (#39904)
fixUse clear error message when failed to parse git version (#39898) (#39903)
fix(packages) Reject newline-bearing rubygems dependency metadata (#39782) (#39900)
fixEnforce public-only token scope on more routes (#39690) (#39853)
fix(api) Return 4xx for invalid fork repository names (#39909) (#39919)
fix(lfs) Send the default branch as ref in batch download requests (#39891) (#39920)
fix(api) Keep milestone due date when it is omitted in edit request (#39869) (#39921)
fix(oauth2) Decode form-encoded client credentials in HTTP Basic auth (#39926) (#39931)
fix(issues) Keep one row per issue when sorting by exclusive label order (#39364) (#39928)
fix(api) Check unit read permission in issue sub-resource endpoints (#39885) (#39938)
fix(migrations) Use cursor pagination for GitHub issue migration too (#39888) (#39941)
fix(feed) Hide release notes in tags feed without releases access (#39944) (#39949)
fix(api) Adding issue labels by name attaches both the repo and the org label (#39873) (#39951)
fix(actions) Bound requested artifact retention (#39894) (#39946)
fix(actions) Drop untrusted Content-Encoding from v1 artifact uploads (#39855) (#39996)
fixGet valid UTF-8 for diff_hunk and composer readme (#39932) (#40000)
fix(diff) Load both blobs of renamed files for diff rendering (#39969) (#39992)
fix(migrations) Update gitea sdk to fix nil pointer panic (#39999)
fixFix OneDev migration with OneDev 16.8 and newer (#40017) (#40026)
fix(git) Default to the gc maintenance strategy (#40022) (#40029)
fixReplace null char with space for issue/comment content (#40014) (#40034)
fix(issue) Prevent redirect to external tracker when built-in tracker is enabled (#39997) (#40031)
fix(markup) Keep commit title emoji inside links (#39986) (#40032)
fix(repo) Use the viewed ref's editorconfig in file view, blame and editor (#39973) (#40019)
fix(deps) Update module golang.org/x/net to v0.62.0 [security] (#40050) (#40051)
fixSize mermaid iframe by the diagram's aspect ratio (#40046) (#40052)
fix(feed) Require code read access for the repo home branch feed (#39964) (#40067)
fixAdd missing access checks and size limits (#39942) (#40085)
fix(user) Answer the follow of a bot user with the profile card (#39980) (#40086)
fix(repo) Honor ALLOW_FORK_INTO_SAME_OWNER for organizations (#40025) (#40094)
fix(ui) Ignore code line anchors below 1, show JS errors in vite dev mode (#39432) (#40087)
fix(pull) Refuse review comments on locked pull requests (#39960) (#40084)
fix(api) Answer 409 when repository files already exist on disk (#40095) (#40098)
fix(mail) Preserve outer spacing in notification emails (#40104) (#40111)
+16 more items in the release notes
feature(oauth) Pre-register a builtin OAuth2 application for gitea-vscode (#39785) (#39801)
featureAllow custom watches to bypass on-mention email restriction (#39652) (#39837)
fixVarious bugs (#39661) (#39667)
fix(markup) Display MathML has no space below it (#39663) (#39668)
fixCorrect websocket notification for change password page (#39671) (#39670)
fix(webhook) Keep line breaks in Telegram rich messages (#39650) (#39677)
fixCorrect "go get" URL ssh scheme, fix form binding (#39674, #39528) (#39676)
fixOIDC discovery advertises unsupported id_token response_type (#39498) (#39689)
fix(deps) Update module golang.org/x/net to v0.60.0 [security] (#39695) (#39701)
fix(git) Leave reflog expiry to git's defaults (#39703) (#39711)
fix(actions) Settle cancelled reusable workflow runs stuck in cancelling (#39706) (#39717)
fix(git) Match git config values exactly when syncing (#39728) (#39729)
fix(actions) Harden log cursor, activity type and actor filter handling (#39721) (#39731)
fix(packages) Copy selected Debian installation values (#39718) (#39734)
fix(auth) Prevent competing remember-me token rotations (#39686) (#39688)
fix(packages/npm) Restore former tarball URLs (#39681) (#39749)
fix(issues) Allow selecting a tag in the issue Branch/Tag dropdown (#39747) (#39753)
fixValidate "state" for OpenID (#39642) (#39744)
fixCorrect label deletion and release attachment load (#39743) (#39752)
fix(markup) Resolve and proxy srcset links of elements (#39708) (#39756)
fix(lfs) Validate OID before building filesystem object path (#39762) (#39766)
fix(markup) Restore code copy newline strip and fix copying rendered blocks (#39755) (#39765)
fix(user) Don't match a commit with an empty author email to a user (#39777) (#39780)
fix(gitdiff) Unquote C-quoted paths from git diff-tree --raw (#39781) (#39783)
fix(actions) Fix schedule cleanup and default branch switch (#39740) (#39786)
fixSkip commit-graph write when fetching remote commits (#39798)
fix(webauthn) Accept unsolicited client extension outputs from WebKit clients (#39792) (#39806)
fix(pull) Fix code context of review comments on unchanged lines (#39799) (#39805)
fix(pull) Don't auto-detect empty pull requests as manually merged (#39807) (#39812)
fix(actions) Keep folded block scalars intact across serialization (#39787) (#39817)
fix(actions) Bound request body size in artifacts v4 twirp handlers (#39818) (#39822)
fixPrevent Gitea from crashing by notification panic (#39835)
fix(pull) Recover PRs whose recorded merge commit never reached the base repo (#39831) (#39840)
fixUse correct template variable on milestone page (#39834) (#39843)
fix(mailer) Reject incoming email tokens of users who cannot sign in (#39833) (#39841)
fixAdd missing checks to several handlers and models (#39839) (#39847)
See how far your stack has drifted from upstream. Release data from vendors’ own sources · feed under CC BY 4.0 · Code under AGPL-3.0 Settings Feed status