# CVE-2026-104976: Plane project management SSRF via unvalidated Gitea OAuth avatar

Source: https://junglewise.ai/threats/cve-2026-104976-plane-is-an-open-source-project-management-tool-prior-to-1-4-0  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-10-05. Updated: 2026-10-05  
License: CC BY 4.0 with a link back

CVE-2026-104976 · Severity: info · Published 2026-10-05

Plane is an open-source project management platform that integrates with Gitea for user authentication. An attacker can exploit unvalidated configuration to fetch internal resources and expose them through Plane's asset endpoint, potentially compromising sensitive internal data or system information accessible only from within the organization's network.

Technologies: [Plane](https://junglewise.ai/threats/technologies/plane-plane). Vendors: [Plane](https://junglewise.ai/threats/vendors/plane).

## Quick answers

**Is CVE-2026-104976 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-104976 being exploited in the wild.

**How severe is CVE-2026-104976?** Informational severity, published 5 October 2026.

**Which products and versions are affected?** Plane prior to 1.4.0.

**Is there a fix for CVE-2026-104976?** Yes: fixed in 1.4.0. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-104976 attacked?** It is attacked over the network.

**Am I affected by CVE-2026-104976?** Check whether you run Plane 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

- Fixed in 1.4.0

## Technical details

Plane prior to 1.4.0 fails to validate GITEA_HOST against private IP addresses and does not validate the avatar_url obtained from the Gitea OAuth provider. An authenticated Gitea user can set an internal URL as their profile avatar; when logging into Plane via Gitea OAuth, the application fetches this avatar without IP validation, allowing server-side request forgery (SSRF) to reach internal addresses. The vulnerability exists in the download_and_upload_avatar() function which uses unvalidated requests.get() calls during the OAuth flow.

## Affected products

- Plane Plane prior to 1.4.0

## Timeline

- 2026-10-05: disclosed
- 2026-05-31: patched

## References

- [https://github.com/makeplane/plane/commit/04622ce1188c4680951f0001e35efb342fe51615](https://github.com/makeplane/plane/commit/04622ce1188c4680951f0001e35efb342fe51615)
- [https://github.com/makeplane/plane/pull/9163](https://github.com/makeplane/plane/pull/9163)

## Related threats

- [Plane project management missing authorization checks](https://junglewise.ai/threats/cve-2026-102985-plane-is-an-open-source-project-management-tool-in-1-3-1-and)
- [Plane order_by injection in issue-listing endpoints](https://junglewise.ai/threats/cve-2026-102988-plane-is-an-open-source-project-management-tool-prior-to-1-4-0)
- [Plane stored XSS in comments and intake descriptions](https://junglewise.ai/threats/cve-2026-102982-plane-is-an-open-source-project-management-tool-prior-to-1-4-0)
- [Plane workspace invitation token disclosure and hijack](https://junglewise.ai/threats/cve-2026-102981-plane-is-an-open-source-project-management-tool-prior-to-1-4-0)
- [Plane hardcoded Django SECRET_KEY in community deployments](https://junglewise.ai/threats/cve-2026-105641-plane-is-an-open-source-project-management-tool-prior-to-1-4-0)
