Gitea

Lightweight self-hosted git platform, written in Go.

Open Source

Gitea Source Code

Author

go-gitea

Description

Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD

#bitbucket#cicd#devops#docker-registry-v2#git#git-gui#git-lfs#git-server#gitea#github#github-actions#gitlab#go#golang#hacktoberfest#maven-server#npm-registry#self-hosted#typescript#vue

Homepage

https://gitea.com

Repository

  • LicenseMIT
  • Created01 Nov 16
  • Primary languageGo
  • Size368,794 KB
  • Stars58,681
  • Forks7,308
  • Watchers58,681

Language Usage

Language Usage

Project Health

  • Last commit5 days ago
  • Open issues2,183
  • Latest releasev29.0.0-dev

Recent Commits

  • silverwind(24 Oct 26)

    docs: update AGENTS.md and dev docs (#39976) Agents rarely read the `docs` guides when AGENTS.md only asks for relevant ones. AGENTS.md now names the guide for each area, and rules agents kept missing go into those guides. - AGENTS.md maps Go, TS, CSS, Vue, templates, tests, config options, migrations and refactors to their guide - The backend guide lists XORM pitfalls behind recent bugs (https://gitea.com/xorm/xorm/issues/2615): zero-valued struct conditions, `Cols` and `updated` columns on updates, soft-delete values, index drops by `SyncAllTables`, MSSQL limits and pagination order - The development guide requires a `WIP:` companion docs PR copying the ini text verbatim for `app.example.ini` changes, and says to avoid migrations unless the alternative is a workaround

  • silverwind(24 Oct 26)

    test: consolidate Go tests (#39962) Consolidate all Go tests. Coverage is identical to before. Go tests are around 5% faster while being 7% smaller. No non-test code is touched.

  • fixfon(24 Oct 26)

    fix: get valid UTF-8 for diff_hunk and composer readme (#39932) * Fixes #39929 * Fixes #39994 Co-authored-by: silverwind <[email protected]> Co-authored-by: wxiaoguang <[email protected]>

  • Basavaraj S m(24 Oct 26)

    fix(actions): drop untrusted Content-Encoding from v1 artifact uploads (#39855) Legacy (v1 to v3) artifact uploads stored the request's `Content-Encoding` header in the column that v4 artifacts read as their `Content-Type`. - Store only the `gzip` marker on legacy uploads, the only encoding their clients send - Pick the PDF and audio/video serve headers only for content types that `mime.ParseMediaType` accepts --------- Co-authored-by: silverwind <[email protected]>

  • schop-rob(24 Oct 26)

    fix(diff): load both blobs of renamed files for diff rendering (#39969) When opening a pull request that renamed a CSV file: the compare page fails with a 500. Fix: load the left blob for every file that was not added, and the right blob (from `Name`) for every file that was not deleted. That matches what the templates did before #38517. Co-authored-by: Claude Opus 5.5 <[email protected]> Co-authored-by: wxiaoguang <[email protected]>

  • wxiaoguang(24 Oct 26)

    refactor: username sub route (#39967) Remove the workaround for chi router, do as much as possible in middlewares --------- Co-authored-by: silverwind <[email protected]> Co-authored-by: Giteabot <[email protected]>

  • silverwind(24 Oct 26)

    feat: Improve Gitea-compatible forge migrations, fix many migration bugs (#39424) Supports migrating from Gitea-compatible forges like Forgejo and fixes many migration bugs. 1. Pre-release and `+gitea-` suffixed server versions no longer drop reviews, reactions and pagination. 2. Review states, dismissals, scoped and archived labels and merge bases are migrated. 3. Disabled units, external trackers, unavailable release assets, and GitLab confidential issues and internal notes are skipped. 4. Credentials are only sent to the source host, and `Retry-After` rate limits are waited out. 5. GitHub migrations of only issues or pull requests, basic auth clones and dismissed reviews work again. 6. The API returns 404 for releases of a disabled unit and shows migrated authors as mannequins, replacing the never populated `original_author` and `original_author_id` fields. Fixes: https://github.com/go-gitea/gitea/issues/19533 Fixes: https://github.com/go-gitea/gitea/issues/35885 Fixes: https://github.com/go-gitea/gitea/issues/18275 Fixes: https://github.com/go-gitea/gitea/issues/35069 Fixes: https://github.com/go-gitea/gitea/issues/17763 Fixes: https://github.com/go-gitea/gitea/issues/39548 Co-authored-by: bircni <[email protected]>

  • GiteaBot(24 Oct 26)

    [skip ci] Updated translations via Crowdin

  • Mitrahsoft(24 Oct 26)

    feat(api): add REST API endpoints for repository webhook delivery history (#38775) Webhook delivery history (request/response, status, timestamp) was only reachable through the repo settings UI, which shows the last ~10 deliveries with no filtering. There was no way to fetch this data programmatically for debugging integrations or auditing webhook activity. This adds two read endpoints at the repository level: - `GET /repos/{owner}/{repo}/hooks/{id}/deliveries` — paginated list of a hook's deliveries, most recent first - `GET /repos/{owner}/{repo}/hooks/{id}/deliveries/{uuid}` — a single delivery, including request/response headers, body, and status Both reuse the existing `hook_task` storage and retention policy (the `CleanupHookTaskTable` cron job) that already back the "Recent Deliveries" web UI, and are gated by the same `reqAdmin()` + `reqWebhooksEnabled()` guard as the existing hook endpoints. Org, user, and admin/system-level webhooks are intentionally out of scope for this PR to keep it reviewable; they can follow as separate PRs using the same pattern. ## Usage ```bash curl -H "Authorization: token $TOKEN" \ https://gitea.example.com/api/v1/repos/{owner}/{repo}/hooks/{id}/deliveries curl -H "Authorization: token $TOKEN" \ https://gitea.example.com/api/v1/repos/{owner}/{repo}/hooks/{id}/deliveries/{uuid} ``` ## Testing - Unit tests for the new model-layer query functions (`ListHookTasks`, `GetHookTaskByUUID`) - Integration tests covering: list + get, an undelivered task's response is `null`, a hook/delivery UUID from another repository 404s instead of leaking across repos, and pagination (`page`/`limit`, `Link` and `X-Total-Count` headers, correct ordering/no overlap across pages) - `make lint-go`, `make generate-swagger` Fixes: https://github.com/go-gitea/gitea/issues/38463. Co-authored-by: bircni <[email protected]> Co-authored-by: silverwind <[email protected]>

  • Shivansh Garg(23 Oct 26)

    enhance(project): filter project milestones by linked issues (#39958) The project milestone filter listed every milestone of the repo, or of all accessible org repos for org projects, including ones with no issue in the project. That made the dropdown noisy and unhelpful. Both repo and org projects now list only milestones that have at least one issue linked to the project, via a new `ProjectID` option on `FindMilestoneOptions`. Fixes: https://github.com/go-gitea/gitea/issues/39150 Co-authored-by: silverwind <[email protected]>

  • Léon Simmons(23 Oct 26)

    docs: fix typos in code comments (#39968) - `models/asymkey/error.go`: `IsErrGPGKeyIDAlreadyUsed` doc named the wrong type (`ErrKeyNameAlreadyUsed` → `ErrGPGKeyIDAlreadyUsed`) - `modules/lfs/http_client.go`: `batchs` → `batches` - `routers/web/repo/milestone.go`: `edting` → `editing` (x2), `for change` → `for changing` Signed-off-by: Léon Avic Simmons <[email protected]>

  • Lunny Xiao(23 Oct 26)

    feat(migrations): add migration from Bitbucket Server (Data Center) (#39913) Add migration from Bitbucket Server (Data Center). It has no issues, wiki, milestones or releases, so those are not offered. Migrated: git data with tags and LFS, and pull requests with state, draft flag, merge commit/base, comments, approvals and inline code comments including resolved threads. Multi-line ranges become a `Lines a-b:` text prefix, as Gitea anchors code comments to one line. Auth is an HTTP access token (personal, project or repository) or username/password; 429 responses are retried. Changes outside the downloader: - `ReviewComment.Resolved`, applied by the uploader. - The uploader creates a fork PR's head branch from its head commit when already in the repository, instead of fetching the fork (Bitbucket keeps it in `refs/pull-requests/<id>/from`; private forks need credentials). Tested with unit tests, responses recorded from Bitbucket 10.5.1, and an end-to-end migration. Independent of https://github.com/go-gitea/gitea/pull/38607 (Bitbucket Cloud); the service type enum value needs adjusting for whichever lands second. --------- Co-authored-by: bircni <[email protected]>

  • silverwind(23 Oct 26)

    ci(release): stop creating deployments for release tags (#39966) Each `release-create-tag` run created a deployment record, which makes GitHub show a useless "This branch has not been deployed" box on every PR: <img width="819" height="113" alt="image" src="https://github.com/user-attachments/assets/129c8348-1d70-46b9-8996-8872c84a11f2" /> With `deployment: false`, the `release-signing` approval and branch policy still apply.

  • silverwind(23 Oct 26)

    fix: correctly parse and validate forwarded client IPs and remove unmaintained `chi-middleware/proxy` (#39190) Replace the unmaintained `chi-middleware/proxy` with an in-tree handler that detects client IPs correctly behind common reverse proxies. 1. Handle repeated header lines and comma-separated proxy hops. 2. Accept and normalize IPs, including `ip:port`. 3. Keep the client port from the header value or `X-Real-Port` instead of logging port 0. 4. Prefer the last `X-Real-IP` line. 5. Keep the proxy's address when the selected value is invalid. 6. Read `Forwarded` only when `X-Forwarded-For` is absent. Docs PR: https://gitea.com/gitea/docs/pulls/560 Fixes: https://github.com/go-gitea/gitea/issues/35682 Fixes: https://github.com/go-gitea/gitea/issues/36814 Co-authored-by: bircni <[email protected]>

  • Lunny Xiao(23 Oct 26)

    perf(actions): cache successful runner token verification (#39934) Every Actions runner RPC (`FetchTask` polling, `UpdateTask`, `UpdateLog`, ...) goes through the `withRunner` interceptor, which verifies the runner token with PBKDF2 (`auth_model.HashToken`, ~2 ms). In a 60s CPU profile of a production instance with many runners, this accounted for ~49% of all CPU samples. - Cache successful verifications in a dedicated LRU of up to 10000 runners, keyed by the stored salt and hash and holding only a SHA-256 digest of the token. A hit costs ~100 ns. - The runner is still loaded from the DB on every RPC and failures are never cached, so deleted runners and wrong tokens never pass. - The shared `auth_model.TokenCache` is not used because its default 20 entries miss on every poll once more runners poll in turn. --------- Co-authored-by: silverwind <[email protected]>

  • David Lovas(23 Oct 26)

    feat(migrations): GraphQL fast path for GitHub migration + rate-limit resilience (#38694) Adds a batched GraphQL path for GitHub migrations that fetches each issue or pull request together with its comments, reviews, reactions and timeline events instead of the REST N+1 pattern, sharply reducing rate-limit pressure on large repositories. - GraphQL is used for authenticated migrations with issues or pull requests and falls back to REST automatically when it fails - timeline events (close/reopen, lock, rename, label, milestone, merge, branch deletion, pin, auto-merge) are imported as typed comments showing their GitHub author - GitBucket issue migrations no longer stop after the first page, GitBucket sends no Link header Fixes: https://github.com/go-gitea/gitea/issues/13243 Fixes: https://github.com/go-gitea/gitea/issues/31856 Signed-off-by: David E. Lovas <[email protected]> Co-authored-by: bircni <[email protected]> Co-authored-by: silverwind <[email protected]> Co-authored-by: Giteabot <[email protected]>

  • Lunny Xiao(23 Oct 26)

    feat: Allow automatic project actions on events (#30205) This PR introduces project workflows, allowing users to configure event-based automations directly from the UI. Users can define filters and actions for each workflow event, and duplicate existing events when needed. ### Concepts Every workflow is composed of `event`, `filters`, and `actions`. - **Event** - An Event defines when a workflow should be triggered. It represents specific activities such as an issue being added to the project, a pull request being merged, or a project column being changed. - **Filter** - A Filter refines when an event should take effect. It allows users to specify conditions like issue type, labels, or project columns to ensure actions only run in targeted scenarios. - **Action** - An Action defines what happens when the event and filters match. It performs operations such as adding labels, moving issues between columns, or changing the issue or pull request state. ### Available Events Currently, the following eight events are supported: - On issues/pull requests closed - On issues/pull requests reopened - On issues/pull requests was added to the project, including when created in it - On issues/pull requests was removed from the project - On issues/pull requests' column was changed - On code changes requested - On code review approved - On pull request merged Each event type supports its own set of filters and actions. ### Available Filters There are four types of filters that can be configured for an event: - **Apply to** - Specify the target type: `issues only`, `pull requests only`, or `issues and pull requests`. - **Labels** - Trigger the event only if the issue or pull request contains one or more specified labels. - **Move from column** - Filter events based on the original project column. - **Move to column** - Filter events based on the destination project column. ### Available Actions There are four types of actions that can be executed when an event is triggered: - **Add labels** - Automatically add one or more labels to the issue or pull request. - **Remove labels** - Remove one or more specified labels. - **Move to column** - Move the issue or pull request to a designated project column. - **Issue state** - Close or reopen the issue. Pull requests can only be closed. ### Enable/Disable an event workflow Each event workflow can be individually enabled or disabled. When disabled, the workflow will be ignored even if the event occurs. This feature is useful when you want to temporarily stop certain automated actions without deleting the workflow configuration. Workflows of closed projects don't run either. ### Clone an event workflow When you need multiple workflows for the same event, you can clone an existing event to create a new one with different filters and actions. This allows you to customize how the same event behaves under different conditions, making workflows more flexible and powerful. ### Permissions Permissions are checked when workflows are managed, not when they run: - Viewing a project's workflows needs read access to the project - Managing them needs write access to the project plus write access to both issues and pull requests of a repository project's repository, being an owner of an organization project's organization or a site administrator, or being the user of a user project. Tokens limited to public repositories can't manage owner-level projects' workflows - A workflow runs when its event happens to an item of an open project that can hold the item's repository, unless that repository is archived, no matter who caused the event, and applies its actions without further permission checks. Pull requests are never reopened - Changes show as made by "Project workflow" on behalf of the user who triggered the event and don't trigger other workflows - Only users who can read an item can put it on a board or move its card The management rule is also documented on `CanManageWorkflows` in `services/projects/workflow.go`. Fixes: #14359 Fixes: #26704 Fixes: #27990 Replaces: #28745 Documentation PR: https://gitea.com/gitea/docs/pulls/308 Co-authored-by: bircni <[email protected]> Co-authored-by: silverwind <[email protected]> Co-authored-by: Giteabot <[email protected]>

  • GiteaBot(23 Oct 26)

    [skip ci] Updated translations via Crowdin

  • silverwind(22 Oct 26)

    docs: clarify that the team packages permission covers all org packages (#39953) The Packages row in the team settings read "Manage repository packages.", but packages belong to the owner, so a team's Packages permission applies to every package of the organization, regardless of the team's repositories. Reword it to say so. The docs get the same clarification in https://gitea.com/gitea/docs/pulls/605.

  • silverwind(22 Oct 26)

    ci: update giteabot to v1.3.1 (#39947) Bump `giteabot` to [`v1.3.1`](https://github.com/go-gitea/giteabot/releases/tag/v1.3.1) in both workflows. It fixes `reviewed/wait-merge` PRs that the merge queue left behind their base, like https://github.com/go-gitea/gitea/pull/39854 and https://github.com/go-gitea/gitea/pull/39928, and stops the lgtm sweep from re-posting unchanged statuses (https://github.com/go-gitea/giteabot/pull/30).

  • silverwind(22 Oct 26)

    chore: sync pnpm engines version with packageManager (#39950) The pnpm `engines` range was still `>= 11.0.0` while `packageManager` is on pnpm 12. Raise it to match, and set Renovate's range strategy for it to `bump`, because the default strategy leaves an already satisfied `>=` range untouched.

  • Josway(22 Oct 26)

    fix(ui): commit hashes in the activity feed are misaligned (#39883) Fixes #38646 ### The problem Each commit line of a push in the activity feed starts with the avatar stack of its co-authors. The width of that stack grows with the number of co-authors, so the hash of every commit started at a different horizontal offset and the column looked ragged. --------- Signed-off-by: Josway <[email protected]> Co-authored-by: silverwind <[email protected]>

  • Nazem(22 Oct 26)

    fix(api): adding issue labels by name attaches both the repo and the org label (#39873) Fixes #39651 When an org-owned repo has a repo label and an org label with the same name, `POST`/`PUT /repos/{owner}/{repo}/issues/{index}/labels` with label names attached both of them. --------- Signed-off-by: Nazem <[email protected]> Co-authored-by: Nazem <[email protected]> Co-authored-by: silverwind <[email protected]>

  • Basavaraj S m(22 Oct 26)

    fix(feed): hide release notes in tags feed without releases access (#39944) The tags feed (`tags.rss` / `tags.atom`) lives in the tags route group, which only requires code read access, yet it lists every published release next to the plain tags and includes each release's title and rendered note. The releases page and `releases.rss` require releases read access, and the tags page only shows tag names to users without it, so the feed is the one place that leaks. A team member granted Code but not Releases on a private repo, or anyone on a public repo whose Releases unit is disabled, can read all release notes this way. I noticed it while comparing the feed routes with the tags template. When the doer cannot read releases, the feed now lists releases as plain tags, linking to `/src/tag/` like the tags page does.

  • Chris Eastwood(22 Oct 26)

    build(tools): install playwright deps only when that needs no prompt (#39905) On Debian/Ubuntu outside GitHub Actions, `tools/playwright.sh` always ran `pnpm exec playwright install --with-deps`. Installing system packages needs root: when it isn't root, Playwright tries `sudo` and falls back to `su`, so a non-root user without passwordless sudo sees `make playwright` — and the targets depending on it, `make test-e2e` and `make test-frontend` — either stop and ask for the root password mid-build or fail outright with `su: System error`. Related: #38860, which added this script. --------- Co-authored-by: silverwind <[email protected]>

  • bircni(22 Oct 26)

    fix(actions): bound requested artifact retention (#39894)

  • bircni(22 Oct 26)

    docs: clarify reverse proxy authentication requirements (#39940) Document that reverse proxy authentication requires Gitea to be reachable only through the authenticating proxy, and which routes each setting covers. Docs: https://gitea.com/gitea/docs/pulls/604 Co-authored-by: silverwind <[email protected]>

  • silverwind(22 Oct 26)

    enhance: remove box-shadow from kbd elements (#39943) Remove the inset bottom shadow from `<kbd>` elements in markup and on keyboard shortcut hints. The skeuomorphic key cap look is not needed, the border alone marks the element as a key.

  • silverwind(22 Oct 26)

    refactor: prevent out-of-bounds read (#39936) `IsReadmeFileExtension("readme", exts...)` panicked with `index out of range [6] with length 6` when `exts` had no empty extension. The only caller always passes one, so this was not reachable in practice. Fixes: https://github.com/go-gitea/gitea/security/quality/rules/go%2Findex-out-of-bounds Written by Claude.

  • Phoenix(22 Oct 26)

    fix(migrations): use cursor pagination for GitHub issue migration too (#39888) For repos with many issues, the GitHub API only allows cursor-based pagination instead of page-based pagination after a certain page. A full migration of such repos failed with a 422 response. Now, we dynamically switch how we migrate based on the response from the GitHub API. Fixes #39882 --------- Signed-off-by: Phoenix <[email protected]> Co-authored-by: delvh <[email protected]> Co-authored-by: silverwind <[email protected]>

Gitea Security

7/10

Repo Security Summary

Updated 24 Aug 26 Fuzz tested

  • Security-Policy10/10
  • Code-Review8/10
  • Maintained10/10
  • Dangerous-Workflow0/10
  • CII-Best-Practices5/10
  • Token-Permissions10/10
  • License10/10
  • Binary-Artifacts10/10
  • Fuzzing10/10
  • Packaging10/10
  • Pinned-Dependencies8/10
  • Branch-Protection3/10
  • Signed-Releases8/10
  • SAST0/10

Security Advisories (100)

  • mediumPatchedCVSS 4.3

    CVE-2026-107686Locked issues and comments still accept reactions through the web UI

  • lowPatched

    CVE-2026-107618Cross-Site Request Forgery on `POST /{owner}/{repo}/topics`

  • mediumPatchedCVSS 4.3

    CVE-2026-110311Draft releases include attachment metadata from other repositories

  • lowPatchedCVSS 3.5

    CVE-2026-97204DeleteLabel compares one untyped id against whichever namespace the label uses, letting a repo collaborator delete an ID-colliding organisation's labels

  • mediumPatchedCVSS 4.3

    CVE-2026-105268Issue-scoped attachment routes accept comment-scoped attachment ids, letting an issue opener delete or rename other users' comment attachments

  • mediumPatchedCVSS 6.5

    CVE-2026-105267POST /{owner}/{repo}/tags/delete requires only Code:Write but destroys Releases and their attachment blobs

  • mediumPatchedCVSS 4.3

    CVE-2026-109844Gitea watched-repos API (GET /api/v1/user/subscriptions) leaks private repository metadata after team permission downgrade

  • mediumPatchedCVSS 6.3

    CVE-2026-110494Gitea AddReleaseAttachments missing IssueID check allows issue attachment metadata exposure and deletion via releases

  • mediumPatchedCVSS 5.4

    CVE-2026-89182Gitea push-to-create ignores ForcePrivate server policy, allowing non-admin users to publish repositories as public

  • mediumPatchedCVSS 6.5

    CVE-2026-105964Gitea Actions Artifact V4 API: unbounded request body read in parseProtobufBody enables memory-exhaustion DoS

  • highPatchedCVSS 8.1

    CVE-2026-97208Gitea push-mirror creation API does not enforce the site-wide DISABLE_NEW_PUSH policy

  • mediumPatched

    CVE-2026-101023OAuth access tokens can be exchanged as refresh tokens

  • mediumPatchedCVSS 6.5

    CVE-2026-104633A migration source reporting max_response_items: 0 makes six paginated loops in the Gitea downloader never terminate, exhausting server memory from one authenticated request

  • mediumPatchedCVSS 5.3

    CVE-2026-105661Unauthenticated nil-pointer panic on /{username}/-/repositories for individual users

  • highPatched

    CVE-2026-96399Uncaught Exception and Out-of-bounds Read results in Gitea crash

  • highPatchedCVSS 7.1

    CVE-2026-86684Push-mirror API checks local-path permission on the repository owner instead of the caller

  • criticalPatchedCVSS 9

    CVE-2026-104626Cancelled fork-PR Actions jobs are revived by later approval

  • mediumPatchedCVSS 6.5

    CVE-2026-110324Private profile information leaks on POST request

  • highPatched

    CVE-2026-103670Unapproved fork PR cancels trusted in-progress runs via run-level concurrency

  • highPatchedCVSS 8.7

    CVE-2026-94205Gitea Actions: fork pull request approval bypass via maintainer-triggered pull_request sub-events (ifNeedApprovalWith keys on the event actor, not the pull request author)

  • criticalPatchedCVSS 9

    CVE-2026-104632Untrusted first-time fork PR achieves self-hosted Actions runner RCE without approval via cancel-then-rerun

  • highPatchedCVSS 7.5

    CVE-2026-109553VerifyCert maps SSH certificate principals onto other users' SSH public keys

  • criticalPatchedCVSS 9

    CVE-2026-103667Stored XSS in Gitea container registry via unvalidated blob Content-Type (mediaType injection)

  • criticalPatchedCVSS 9.1

    CVE-2026-103059Built-in SSH server auth bypass via case-insensitive LIKE key lookup

  • mediumPatched

    CVE-2026-79960Deploy keys impersonate the repository owner in the hook pipeline

  • mediumPatched

    CVE-2026-103504API team demotion does not reset unit permissions

  • mediumPatched

    CVE-2026-96580Uncontrolled resource consumption — unapproved fork-PR workflow with a large static strategy.matrix exhausts server memory at run-creation

  • mediumPatched

    CVE-2026-97626Web RSS/Atom Accept-header bypass leaks activity feeds of limited/private users and orgs

  • highPatchedCVSS 8.5

    CVE-2026-96594Stored XSS via Repository Media API

  • mediumPatchedCVSS 5.9

    CVE-2026-78433Attachments created before the January 2026 cutoff skip the cross repository check entirely, and permission is then evaluated against the repository named in the URL rather than the repository owning the attachment, so a private repository's attachment is served through any public repository's path

  • mediumPatchedCVSS 4.3

    CVE-2026-68964Restricted users can read limited-visibility users’ SSH and GPG keys through the API

  • highPatched

    CVE-2026-68957Restricted users can read limited-visibility users' issue titles and bodies through issue search

  • mediumPatchedCVSS 4.3

    CVE-2026-67577Restricted users can access limited-visibility users' activity feeds and contribution heatmaps through the API

  • highPatchedCVSS 8.7

    CVE-2026-66877RCE on self-hosted runners | fork-PR approval gate (`NeedApproval`) bypass via job-level concurrency cancellation

  • mediumPatchedCVSS 6.5

    CVE-2026-66874A fork pull request author can satisfy a required Actions status check without any workflow running, because a filtered out workflow taken from the pull request HEAD posts a `skipped` commit status that counts as success

  • criticalPatchedCVSS 9

    CVE-2026-95106Duplicate tree-entry name: Gitea renders the benign blob while checkout and CI run the malicious one

  • lowPatched

    CVE-2026-66853Restricted users can enumerate limited-visibility organizations via the user org-list API (authorization bypass)

  • mediumPatched

    CVE-2026-66849Package registry: restricted users can read packages of limited-visibility users (authorization bypass)

  • mediumPatchedCVSS 6.3

    CVE-2026-63792Fork pull requests can read reusable workflow files from another private repository (missed sibling of GHSA-fj8v-hjwv-qm88)

  • mediumPatchedCVSS 6.5

    CVE-2026-63021Swift registry per-file 128KiB manifest guard bypassed by aggregation

  • mediumPatchedCVSS 6.5

    CVE-2026-62925Unbounded Alpine .PKGINFO parse amplifies a small .apk upload into process memory

  • mediumPatchedCVSS 6.5

    CVE-2026-60021Authenticated DoS in GitLab migration via uncancelable version probe

  • mediumPatchedCVSS 6.5

    CVE-2026-60018Authenticated DoS in OneDev migration via unbounded version response body

  • highPatchedCVSS 8.1

    CVE-2026-60010Repo-side team-link endpoint still bypasses RepoAdminChangeTeamAccess

  • highPatchedCVSS 7.5

    CVE-2026-73539Remote Code Execution via unescaped markup `Context` into external renderer argv

  • mediumPatchedCVSS 4.3

    CVE-2026-96589 Incorrect Authorization in Repository Transfer Allows Persistent Unauthorized Read Access

  • mediumPatchedCVSS 6.5

    CVE-2026-73814Admin repository collaborator can self-escalate to Owner and transfer the repository

  • mediumPatched

    CVE-2026-60008Jupyter notebook renderer emits attacker-controlled CSS classes into unsanitized, unsandboxed output

  • mediumPatchedCVSS 4.3

    CVE-2026-73273Package size quota bypass and unbounded memory read in the Maven checksum upload path

  • mediumPatchedCVSS 5.3

    CVE-2026-73135Repository listing exposes repositories owned by hidden users due to inconsistent visibility predicate

  • mediumPatched

    CVE-2026-73130Unbounded gitignores repository-creation field enables linear template-read amplification

  • highPatchedCVSS 8.1

    CVE-2026-96404Installer Re-run Against an Already-Populated Database Grants an Authenticated Session for an Existing Admin Account Without Password Verification

  • mediumPatchedCVSS 4.3

    CVE-2026-73126Gitea workflow badge bypasses API token scopes

  • highPatchedCVSS 8.8

    CVE-2026-735352FA bypass and persistent account takeover via OpenID identity linking

  • lowPatched

    CVE-2026-73504Unauthenticated artifact-to-repository oracle in raw Actions downloads

  • lowPatched

    CVE-2026-71301Wiki-only members can read private pull request titles through markup preview

  • highPatchedCVSS 8.5

    CVE-2026-89430Gitea Push Mirror Host Policy Bypass Enables SSRF and Forced Writes to Internal Git Repositories

  • highPatchedCVSS 8.8

    CVE-2026-71184Gitea Actions: fork pull request approval bypass via `pull_request_review_comment` (missing `WithPullRequest`)

  • lowPatched

    CVE-2026-97859API routes for user social graph, keys, and starred repos bypass private visibility check

  • mediumPatched

    CVE-2026-70407Token Scope Bypass on `GET /api/v1/orgs`

  • highPatchedCVSS 7.7

    CVE-2026-70406Public-only tokens can read private head repositories via compare and pull request creation (incomplete fix of CVE-2026-58443)

  • criticalPatchedCVSS 9.8

    CVE-2026-60004Remote Code Execution via diffpatch Git Hook Installation

  • criticalPatchedCVSS 9.8

    CVE-2026-59774Unauthenticated Arbitrary File Read can lead to RCE

  • lowPatchedCVSS 3.7

    GHSA-m984-2424-x6vwGeneric attachment downloads bypass draft-release visibility checks

  • highPatchedCVSS 8.8

    CVE-2026-73800Secret Exfiltration via Reusable Workflow Resolution in pull_request_target Events

  • highPatchedCVSS 8.1

    CVE-2026-73278WebAuthn second factor is bypassed on OAuth2/OpenID sign-in (WebAuthn-only users)

  • mediumPatchedCVSS 4.3

    CVE-2026-104636Raw Git redirect SSRF bypass in push mirrors, WikiRemoteURL, and PR-head fetches

  • mediumPatchedCVSS 4.3

    CVE-2026-96400Migration SSRF policy regression: ALLOWED_DOMAINS permits reserved addresses despite ALLOW_LOCALNETWORKS=false

  • highPatchedCVSS 8.1

    CVE-2026-104627Cross-Session OpenID Credential Linking Enables Account Takeover

  • mediumPatchedCVSS 5.8

    CVE-2026-70402Permissive Git hook directory and script modes may allow local code execution as the Gitea service account

  • mediumPatchedCVSS 5.4

    CVE-2026-70400Repository migration skips public-only token guard for private repository creation

  • mediumPatchedCVSS 5.4

    CVE-2026-70396Organization repository creation endpoint skips repository token scope

  • mediumPatched

    CVE-2026-58438Cross-repository IDOR in issue-dependency removal lets an attacker tamper with and comment on private repos they cannot access

  • highPatched

    CVE-2026-58433Team-repository linking endpoint bypasses the RepoAdminChangeTeamAccess organization setting

  • mediumPatchedCVSS 6.8

    CVE-2026-58440Webhooks created by a collaborator keep firing after their repo access is revoked → ongoing real-time exfiltration of private repo content (incomplete revocation cleanup in `DeleteCollaboration`)

  • mediumPatchedCVSS 4.3

    CVE-2026-59766CVE-2026-20800 sibling endpoints not covered: revoked user still reads private repo objects via `/api/v1/user/starred` and private issue titles via `/api/v1/user/times`

  • mediumPatchedCVSS 6.3

    CVE-2026-58441SSRF in restore-repo via unsanitized pull_request.yml Head.CloneURL

  • mediumPatchedCVSS 6.5

    CVE-2026-58442Repository migration SSRF via multi-answer DNS allow-list bypass

  • criticalPatchedCVSS 9.6

    CVE-2026-58443Public-only repository tokens can update private PR head branches

  • highPatchedCVSS 8.1

    CVE-2026-73804User-scoped tokens can mint unscoped HTTP signature API credentials

  • criticalPatchedCVSS 9.9

    CVE-2026-73802gitea-runner: workflow container.options passes host namespaces and capability flags to job container when privileged mode is disabled

  • lowPatched

    GHSA-qg66-h68v-5x2hArbitrary File Read via Path Traversal in gitea restore-repo

  • mediumPatchedCVSS 4.3

    CVE-2026-58444Personal access token scope enforcement bypass on the repository home page (`GET /{owner}/{repo}`) discloses private repository contents

  • mediumPatched

    CVE-2026-58427Private org member list leaked via /members API endpoint — incomplete fix for PR #38145

  • highPatchedCVSS 7.7

    CVE-2026-101027SSRF via DNS rebinding: MatchHostOrIP short-circuits IP check when hostname matches ALLOWED_DOMAINS

  • lowPatchedCVSS 2.7

    CVE-2026-58445Cross-repository label-ID enumeration oracle via unscoped DeleteIssueLabel API

  • mediumPatchedCVSS 6.5

    CVE-2026-42931Denial of Service via Unbounded io.ReadAll in NPM Package Tag Endpoint

  • mediumPatchedCVSS 6.3

    CVE-2026-58416Fork-PR Actions task can read a third private repository via the collaborative-owner branch (missing fork-PR guard)

  • mediumPatchedCVSS 4.3

    CVE-2026-50105RSS/Atom feed handlers bypass API-token scope & public-only confinement (incomplete fix of #37698)

  • lowPatched

    CVE-2026-58417REST API exposes organization membership of private organizations to public

  • highPatchedCVSS 7.5

    CVE-2026-54481Internal API HTTP client hardcodes InsecureSkipVerify:true with no config override (CWE-295)

  • mediumPatchedCVSS 4.3

    CVE-2026-27761API access token scope enforcement bypass on repository RSS/Atom feed endpoints leaks private repository commit data

  • mediumPatchedCVSS 6.5

    CVE-2026-58418SSRF via HTTP Redirect in Repository Migration

  • lowPatched

    CVE-2026-58434Private Repository Metadata Remains Accessible After Access Revocation

  • highPatched

    CVE-2026-24451Fork Synchronization Continues After Parent Repository Changes from Public to Private

  • mediumPatched

    CVE-2026-55982OIDC userinfo Endpoint Returns Identity Claims Without Enforcing API Token Scopes

  • mediumPatched

    CVE-2026-25038Unauthorized Access to Labels of Private Organizations

  • lowPatched

    CVE-2026-58419Notification API leaks private issue metadata after access revocation

  • highPatchedCVSS 7.1

    CVE-2026-20779TOTP TOCTOU race on web 2FA paths + missing replay check on Basic-Auth `X-Gitea-OTP` surface

  • lowPatchedCVSS 2.7

    CVE-2026-55984Null Pointer Dereference in AddTime API Causes Authenticated Denial of Service

Gitea Website

Website

301 Moved Permanently

Redirects

Redirects to https://gitea.com/

Security Checks

1 security checks failed (64 passed)

  • External Redirect Detected

Server Details

  • IP Address172.67.220.34
  • LocationSan Francisco,California,United States of America,NA
  • ISPCloudFlare Inc.
  • ASNAS13335

Associated Countries

  • USUS

Safety Score

Website marked as safe

100%

Trackers

Loads 1 third-party tracker

  • cloudflareinsights.comCloudflare, Inc.

Blacklist Check

gitea.io was found on 0 blacklists

  • AntiSocial Blacklist
  • Artists Against 419
  • Badbitcoin
  • Bambenek Consulting
  • CERT Polska
  • CoinBlockerLists
  • CRDF
  • CryptoScamDB
  • EtherAddressLookup
  • EtherScamDB
  • Fake Website Buster
  • MetaMask EthPhishing
  • NABP Not Recommended Sites
  • OpenPhish
  • PetScams
  • PhishFeed
  • PhishFort
  • Phishing.Database
  • PhishStats
  • PhishTank
  • Phishunt
  • RPiList Not Serious
  • Scam.Directory
  • SecureReload Phishing List
  • Spam404
  • StopGunScams
  • Suspicious Hosting IP
  • ThreatFox
  • ThreatLog
  • TweetFeed
  • URLhaus
  • ViriBack C2 Tracker

Website Preview

Website preview

Gitea Docker

Container Info

gitea

Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD.

#Web#Tools

View on DockerHub

gitea/gitea:latest

Run Command

docker run -d \
  -p 3000:3000/tcp \
  -p 222:22/tcp \
  -e PUID=${PUID} \
  -e PGID=${PGID} \
  -v /portainer/Files/AppData/Config/Gitea:/data \
  -v  /etc/timezone:/etc/timezone:ro \
  -v /etc/localtime:/etc/localtime:ro \
  --restart=unless-stopped \
  gitea/gitea:latest

Compose File

version: 3.8
services:
  gitea:
    image: "gitea/gitea:latest"
    ports:
      - "3000:3000/tcp"
      - "222:22/tcp"
    environment:
      PUID: 1000
      PGID: 100
    volumes:
      - "/portainer/Files/AppData/Config/Gitea:/data"
      - " /etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    restart: unless-stopped

Environment Variables

  • Var NameDefault
  • PUID1000
  • PGID100

Port List

  • 3000:3000/tcp
  • 222:22/tcp

Volume Mounting

  • Container PathHost Bind
  • /data/portainer/Files/AppData/Config/Gitea
  • /etc/timezone:ro /etc/timezone
  • /etc/localtime:ro/etc/localtime

Gitea Reviews

More Code Hosting

About the Data: Gitea

Change History

Edit Gitea Data

You can edit Gitea's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
Note that some of the information shown above has been aggregated from external sources, a list of these can be found data documentation.

Origin Data

Modify Data

API

You can access Gitea's data programmatically via our API. Simply make a GET request to:

https://api.awesome-privacy.xyz/v1/services/gitea

The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.

Share Gitea

Help your friends compare Code Hosting, and pick privacy-respecting software and services.
Share Gitea and Awesome Privacy with your network!