CVE-2026-56657: Gitea SSH key parser denial of service in normalization loop

CVE-2026-56657 · Severity: medium · CVSS 3.1 · Published 2026-07-21

Gitea is an open-source forge software package for hosting software development version control using Git. A vulnerability in how the system processes SSH keys allows an authenticated user to crash the server by uploading a specially crafted, large key file. This can lead to a total service outage, preventing teams from accessing their code repositories and disrupting development operations.

Technologies: Gitea, code.gitea.io/gitea (Go), gitea.dev (Go). Vendors: Gitea, Go.

Quick answers

Is CVE-2026-56657 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-56657 being exploited in the wild.
How severe is CVE-2026-56657?
Medium severity, with a CVSS score of 3.1, published 21 July 2026.
Which products and versions are affected?
Gitea < 1.27.0; code.gitea.io/gitea (Go) < 1.27.0, SEMVER:introduced=0,fixed=1.27.0; gitea.dev (Go) SEMVER:introduced=0,fixed=1.27.0.
Is there a fix for CVE-2026-56657?
Yes. code.gitea.io/gitea (Go): upgrade to 1.27.0 or later; gitea.dev (Go): upgrade to 1.27.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-56657 attacked?
It is attacked over the network, in a network appliance.
Am I affected by CVE-2026-56657?
Check whether you run Gitea, code.gitea.io/gitea (Go) or gitea.dev (Go) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • code.gitea.io/gitea (Go): upgrade to 1.27.0 or later
    go get code.gitea.io/gitea@v1.27.0
  • gitea.dev (Go): upgrade to 1.27.0 or later
    go get gitea.dev@v1.27.0

Technical details

The vulnerability exists in the `parseKeyString` function within Gitea's SSH key normalization logic. When processing RFC 4716 (SSH2) format keys, the application splits the input on newlines and accumulates the key body using the `+=` operator in Go. Because Go strings are immutable, this results in an O(N²) complexity for both time and memory allocations as the entire string is copied for every line processed. An authenticated attacker can submit a key with hundreds of thousands of short lines to trigger quadratic resource consumption before any size validation or cryptographic checks occur. This leads to rapid CPU exhaustion and Out-of-Memory (OOM) conditions. The issue is fixed in version 1.27.0.

Affected products

  • Gitea Gitea < 1.27.0

Identifiers

  • CVE-2026-56657
  • GHSA-4xjf-493q-98p3
  • GO-2026-6042

Timeline

  • 2026-07-13: disclosed: Initial disclosure on GitHub Advisory Database
  • 2026-07-21: advisory: Advisory updated and published

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.