Skip to main content
8,300 Gitea Servers Still Vulnerable One Month After PatchIncident
4 min readFor Security Engineers

8,300 Gitea Servers Still Vulnerable One Month After Patch

What happened

On July 27, Gitea released version 1.27.1 to patch CVE-2026-60004, a critical remote code execution vulnerability in its diffpatch API endpoint. This flaw allows attackers to execute arbitrary shell commands on vulnerable servers. One month later, on August 27, Shadowserver's scanning found 8,393 Internet-exposed Gitea instances still running unpatched versions. CISA flagged the vulnerability for federal agencies, but the private sector faces the same exposure.

The attack vector is straightforward. Gitea's default configuration allows anyone to register an account. Once registered, an attacker can exploit the diffpatch endpoint to run shell commands with the privileges of the Gitea service account. No social engineering or phishing is needed, just register and exploit.

Timeline

July 27: Gitea maintainers release version 1.27.1 with the CVE-2026-60004 patch.

August 27: Shadowserver reports 8,393 vulnerable instances remain exposed to the Internet. That's 8,393 organizations running self-hosted Git infrastructure that haven't applied a critical security update in 31 days.

Current status: The vulnerability remains actively exploitable on thousands of servers. No widespread exploitation has been publicly reported, but the window is open.

Which controls failed or were missing

Three control failures converged to create this exposure:

Patch management broke down. These organizations either don't have a process to track security updates for self-hosted tools, or they have one that failed. Gitea isn't a vendor that sends renewal notices or account rep check-ins. You're responsible for watching the release notes.

Default configurations weren't hardened. Gitea ships with open registration enabled. That's reasonable for a public project hosting platform. It's not reasonable for an internal enterprise Git server. Yet many organizations deployed Gitea with defaults intact, never revisiting the security model.

Asset visibility gaps left servers untracked. If your security team doesn't know you're running Gitea, they can't patch it. Self-hosted DevOps tools often get deployed by engineering teams outside the standard IT procurement process. The server gets stood up, added to the network, and forgotten from a security perspective.

What the relevant standard requires

PCI DSS v4.0.1 Requirement 6.3.3 requires that security patches and updates for all system components be installed within one month of release for critical vulnerabilities. The 31-day window from patch release to Shadowserver's scan puts these organizations right at the compliance boundary, and many are over it.

ISO/IEC 27001:2022 Control 8.8 (Management of technical vulnerabilities) requires organizations to obtain information about technical vulnerabilities of information systems in use, evaluate exposure to such vulnerabilities, and take appropriate measures. Running an Internet-exposed Git server with a known RCE vulnerability fails this control entirely.

NIST 800-53 Rev 5 SI-2 (Flaw Remediation) requires organizations to install security-relevant software updates within time periods defined by organizational policy. The control also requires organizations to incorporate flaw remediation into configuration management processes. If you're running Gitea in production, you need a documented process for tracking and applying its security updates.

SOC 2 Type II CC7.1 (Common Criteria 7.1) requires that the entity identifies, develops, and implements system changes to meet objectives related to security. Leaving a critical RCE unpatched for a month demonstrates a failure in the change management and security update process that SOC 2 auditors will flag.

Lessons and action items for your team

Map your self-hosted tools. Create an inventory of every self-hosted application your engineering teams run. Include Git servers, CI/CD tools, container registries, artifact repositories, and monitoring platforms. For each one, document who maintains it, where the security advisories get published, and who's responsible for patching. If you can't name the person who patches your Gitea instance, you don't have a patching process.

Subscribe to security advisories at the source. Don't wait for CVE aggregators or security newsletters. Go to the Gitea releases page on GitHub, click "Watch," and select "Releases only." Do this for every self-hosted tool in your inventory. When a new version drops, you'll know within minutes, not weeks.

Harden defaults before deployment. Before you expose any self-hosted tool to your network, review its default configuration. For Gitea specifically: disable open registration unless you're running a public forge, require admin approval for new accounts, enable two-factor authentication requirements, and restrict API access to authenticated users. Document these hardening steps in your deployment runbooks so the next person who deploys Gitea doesn't repeat the mistake.

Automate vulnerability scanning for your own infrastructure. Shadowserver scanned the Internet and found these vulnerable servers. You should be scanning your own network continuously. Tools like Nuclei, OpenVAS, or commercial vulnerability scanners can detect outdated Gitea versions. Run these scans weekly at minimum. When a critical vulnerability drops, run a targeted scan within 24 hours to identify affected systems.

Set SLAs that match your risk. One month for critical patches might satisfy PCI DSS, but it's too slow for Internet-exposed services with known RCE vulnerabilities. Set an internal SLA of 72 hours for critical patches on Internet-facing systems. If you can't meet that timeline, the system shouldn't be Internet-facing.

Test your patch process with a drill. Don't wait for the next critical vulnerability to find out your patching process is broken. Pick a low-risk system and run a simulated emergency patch. Time how long it takes from "patch available" to "patch deployed in production." Identify the bottlenecks. Fix them now, not during an active incident.

The 8,393 vulnerable Gitea servers aren't victims of a zero-day. They're victims of process failures that your team can fix this week. Start with the inventory.

Topics:Incident

You Might Also Like