CVE-2026-71184
Executive Summary
CVE-2026-71184 is a broken authorization control (CWE-863) in Gitea's pull request review notification logic, affecting self-hosted Gitea and Gitea-derived instances that host forked repositories. The pull request (PR) review notifier fails to attach the associated pull request to the Actions notification, so the workflow approval gate for fork-originated runs no longer recognizes the run as coming from a fork. This allows attacker-controlled workflow code from the fork head to execute on the base repository's runners without maintainer approval, yielding high impact to confidentiality, integrity, and availability (CVSS 8.8).
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
Gitea's security model for GitHub-Actions-compatible workflows includes a "fork approval gate": workflow runs triggered by contributions originating from forks must be approved by a maintainer before they execute, because such runs may ultimately run untrusted, fork-controlled code on the base repository's runners (which often hold secrets, tokens, or privileged network access).
The flaw lives in the pull request review notifier. When review-related events occur — specifically review comment events and review approval or rejection events — the notifier constructs an Actions notification but does not attach the pull request object to that notification. The approval-gate logic relies on identifying the associated pull request (and, from it, the source/fork context) to decide whether the run originates from a fork. Because the pull request is absent from the notification payload, the gate cannot classify the run as fork-originated and therefore treats it as trusted — skipping the mandatory maintainer approval step.
The result is a logic/authorization bypass rather than a memory-safety or injection defect. The vulnerability class is CWE-863 (Incorrect Authorization): a security decision is made on incomplete context (a missing PR association), so a check that should deny-by-default instead fails open. An attacker who can create a fork and submit a pull request — and who can trigger a review comment or a review approval/rejection event on that PR — can cause workflow code from the fork head to be loaded and executed on the base repository's runners without the required maintainer approval.
Per the NVD description, exploitation requires the ability to interact with the PR review flow (network-reachable, low privileges per the CVSS PR:L metric) and no user interaction beyond the attacker's own actions (UI:N). Affected component: the Actions notification path invoked by pull request review events. No public proof-of-concept, Nuclei template, or exploit code is available; affected version ranges and fixed versions are not published in the provided data, so the exact boundary of vulnerable releases is unknown.
Exploitation Scenarios
Reconnaissance / target identification: The attacker identifies a Gitea instance that hosts a target base repository for which they wish to execute code. They determine whether the base repository uses Actions workflows and whether the fork approval gate is in effect (the default behavior for fork-originated runs). No specific endpoint or parameter names are available in the provided data; this step is described at the vulnerability-class level.
Triggering the flaw: The attacker forks the base repository and opens a pull request back to it. The attacker then performs an action that generates a pull request review notification — posting a review comment, or submitting a review approval or rejection on the PR. Because the review notifier does not attach the pull request to the Actions notification, the fork approval gate does not recognize the run as originating from a fork.
Payload / execution: The fork head contains attacker-controlled workflow code. On the review event, that workflow code is loaded and run on the base repository's runners. The approval step that would normally gate fork-originated workflow execution is skipped because the run was not classified as fork-originated. No public PoC is available; the attack chain is inferred from the vulnerability class (incorrect authorization / missing context in an authorization decision).
Post-exploitation impact: The workflow code executes in the context of the base repository's runners. From there the attacker can read resources available to those runners (for example, repository contents and any secrets or tokens exposed to workflow jobs) and can modify or exfiltrate them, consistent with the CVSS Impact metrics (C:H/I:H/A:H). Because the run occurs inside the trusted base repository context rather than a sandboxed fork context, the approval boundary intended to contain untrusted contributions is fully crossed.
Impact Assessment
CVSS 3.1 base score 8.8 (High), vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H:
- Attack Vector (AV:N): exploitable over the network via the Gitea web interface/API.
- Attack Complexity (AC:L): no specialized conditions or race required; the review notification path is deterministic.
- Privileges Required (PR:L): the attacker needs only a low-privileged account able to fork and submit PRs, with the ability to create review events.
- User Interaction (UI:N): no victim action is required — the attacker both triggers and benefits from the event.
- Scope (S:U): impact is confined to the vulnerable component (base repository runners and their accessible assets).
- Confidentiality/Integrity/Availability (H:H:H): execution of fork-controlled workflow code on base runners can expose secrets and code, alter repository/CI state, and disrupt CI availability.
Business impact: Any organization self-hosting Gitea and accepting external pull requests from forks is in scope, particularly CI-driven environments where workflow runners hold deployment credentials, signing keys, or cloud access. The vulnerability is an authorization bypass across the fork review boundary, which undermines the primary trust control for third-party contributions. EPSS has not yet scored this CVE, CISA KEV status is NO, and no in-the-wild exploitation or threat actor campaign is documented in the provided data.
Detection Guidance
Sigma Rule
title: Potential Gitea Fork Workflow Approval Gate Bypass via PR Review Events
id: 8b1f0c2a-4d3e-4f5a-9c7b-2e6a1d0f3b91
status: experimental
description: Detects Gitea Actions workflow executions triggered by pull request review comment/approval/rejection events that bypass the fork approval gate (CVE-2026-71184).
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-71184
author: valtersit.com
date: 2026-01-01
logsource:
product: gitea
service: actions
detection:
selection_event:
event_type:
- 'pull_request_review_comment'
- 'pull_request_review'
selection_action:
action:
- 'approve'
- 'reject'
- 'comment'
selection_fork:
fork: true
condition: selection_event and selection_action and selection_fork
falsepositives:
- Legitimate maintainer-approved fork workflow runs
level: high
tags:
- attack.t1195.001
- cve.2026.71184
YARA Rule
rule CVE_2026_71184_Gitea_Fork_Workflow_Bypass
{
meta:
description = "Heuristic detection of Gitea workflow configuration/log events referencing fork PR review workflow runs that bypass the approval gate (CVE-2026-71184)"
author = "valtersit.com"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-71184"
date = "2026-01-01"
severity = "high"
strings:
$s1 = "pull_request_review_comment" ascii nocase
$s2 = "pull_request_review" ascii nocase
$s3 = "workflow_run" ascii nocase
$s4 = "fork" ascii nocase
$s5 = "workflow" ascii nocase
$s6 = "runs-on" ascii nocase
condition:
filesize < 2MB and
(2 of ($s1, $s2)) and
$s3 and $s4 and $s5
}
Suricata IDS Rule
alert http any any -> any any (msg:"CVE-2026-71184 Gitea PR review event triggering fork workflow run (possible approval gate bypass)"; flow:to_server,established; http.method; content:"POST"; http.uri; content:"/api/v1/repos/"; nocase; http.uri; content:"/pulls/"; nocase; http.uri; pcre:"/\/reviews\/?$/i"; http.request_body; content:"review"; nocase; http.request_body; content:"APPROVE"; nocase; classtype:attempted-admin; reference:cve,2026-71184; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-71184; metadata:affected_product Gitea, attack_target Server, deployment Perimeter, signature_severity Major, created_at 2026_01_01; sid:202671184; rev:1;)
Elastic Detection
sequence by process.entity_id with maxspan=2m
[ process where event.category == "process" and process.name in ("git", "act_runner", "runner", "gitea") and process.command_line : "*pull_request_review*" ]
[ process where event.category == "process" and process.args_count > 0 and process.parent.name in ("act_runner", "runner", "gitea") and process.command_line : "*workflow*" and not process.command_line : "*approval*" ]
Splunk SPL Query
index=gitea sourcetype=gitea:actions OR sourcetype=gitea:audit
| search (event_type="pull_request_review" OR event_type="pull_request_review_comment")
AND (action="approve" OR action="reject" OR action="comment")
AND (fork=true OR is_fork=true)
| stats count min(_time) as first_seen max(_time) as last_seen values(user) as users values(repo) as repos by run_id, pr_id, event_type
| where count > 0
| table first_seen, last_seen, users, repos, run_id, pr_id, event_type
Wazuh OSSEC Rule
<group name="gitea,cve-2026-71184,">
<rule id="100711" level="12">
<decoded_as>json</decoded_as>
<field name="event_type">pull_request_review</field>
<field name="fork">true</field>
<description>CVE-2026-71184: Gitea fork PR review event may bypass workflow approval gate</description>
<mitre>
<id>T1195.001</id>
</mitre>
<group>cve_2026_71184,</group>
</rule>
<rule id="100712" level="12">
<decoded_as>json</decoded_as>
<field name="event_type">pull_request_review_comment</field>
<field name="fork">true</field>
<description>CVE-2026-71184: Gitea fork PR review comment event may bypass workflow approval gate</description>
<mitre>
<id>T1195.001</id>
</mitre>
<group>cve_2026_71184,</group>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source). No affected version range, fixed version, vendor advisory, or workaround is published in the provided data; the following are defensive recommendations only.
Immediate mitigations:
- Restrict who can fork and open pull requests into sensitive base repositories; disable forking on repositories whose runners hold secrets or privileged credentials.
- Disable or tightly constrain workflow execution on PR review events, particularly for fork-originated PRs, until a fix is available.
- Ensure runners are ephemeral and hold least-privilege, short-lived credentials; do not expose long-lived secrets or production tokens to workflow jobs.
- Audit recent Actions runs triggered by pull request review comment/approval/rejection events for unexpected fork-originated execution.
Patch/upgrade steps:
- Track the Gitea project security advisories and release notes for a fix referencing CVE-2026-71184.
- Once a fixed release is published, upgrade all Gitea instances and Gitea-derived deployments immediately; verify the approval gate correctly associates the pull request with the Actions notification.
- Re-test the fork approval gate after upgrade by opening a fork PR and confirming that fork workflow runs require maintainer approval.
Long-term hardening:
- Apply deny-by-default authorization across all Actions notification paths and enforce mandatory context completeness — an authorization decision must not proceed when the associated pull request cannot be resolved.
- Treat all fork-originated workflow code as untrusted by default regardless of triggering event type.
- Add regression tests covering every event type that can trigger workflow runs (review comment, review approval/rejection, and others) against the fork approval gate.
- Monitor upstream CVE feeds and advisories for Gitea and integrate SBOM/version tracking.
References
- NVD — CVE-2026-71184: https://nvd.nist.gov/vuln/detail/CVE-2026-71184
- MITRE CWE-863 — Incorrect Authorization: https://cwe.mitre.org/data/definitions/863.html
- MITRE ATT&CK T1195.001 — Compromise Software Dependencies and Development Tools: https://attack.mitre.org/techniques/T1195/001/
- Gitea project security advisories (monitor for a fix referencing CVE-2026-71184): https://github.com/go-gitea/gitea/security/advisories
- CISA Known Exploited Vulnerabilities catalog (current status: NOT listed): https://www.cisa.gov/known-exploited-vulnerabilities-catalog
Threat actor note: No known threat actor campaign, public proof-of-concept, Nuclei template, or exploit-in-the-wild evidence is documented for CVE-2026-71184 in the provided data, and the CVE is not listed in CISA KEV.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.