Bug 2489127 (CVE-2026-12383)

Summary: CVE-2026-12383 eda-server: ExternalEventStreamViewSet trusts Subject header without validation and leaks expected DN
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security <prodsec-ir-bot>
Status: NEW --- QA Contact:
Severity: high Docs Contact:
Priority: high    
Version: unspecifiedCC: dschmidt, erezende, jlanda, kshier, security-response-team, simaishi, smcdonal, stcannon, teagle, yguenane
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in the Event-Driven Ansible (EDA) server. The ExternalEventStreamViewSet uses permissive access controls (permission_classes=[AllowAny], authentication_classes=[]) and relies solely on the Subject HTTP header value for mTLS authentication without verifying that the header originated from a trusted proxy. Additionally, the expected certificate Distinguished Name is leaked in the 403 error response body. An attacker who can reach the EDA API endpoint with a spoofed Subject header can inject arbitrary events into mTLS-protected event streams, triggering downstream automation actions.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description OSIDB Bzimport 2026-06-16 10:12:04 UTC
A flaw was found in the Event-Driven Ansible (EDA) server's external event stream handling. The ExternalEventStreamViewSet has permission_classes=[AllowAny] and authentication_classes=[], delegating mTLS authentication entirely to the gateway proxy layer by reading the Subject HTTP header and comparing it against the expected certificate Distinguished Name (DN). There are two defense-in-depth failures: (1) EDA does not validate that the Subject header actually originated from Envoy's mTLS termination — it trusts whatever value appears in the header, meaning any upstream component or misconfiguration that allows header injection enables authentication bypass; (2) when the Subject header value does not match the expected DN, the 403 error response body includes the expected DN, allowing an attacker to trivially discover the correct value and retry. This is a defense-in-depth weakness that becomes directly exploitable when combined with the gateway header-forwarding flaw (tracked separately). Even if the gateway correctly strips headers, EDA should independently validate mTLS authentication rather than blindly trusting an HTTP header.

Comment 2 errata-xmlrpc 2026-08-04 17:57:49 UTC
This issue has been addressed in the following products:

  Red Hat Ansible Automation Platform 2.5 for RHEL 9
  Red Hat Ansible Automation Platform 2.5 for RHEL 8

Via RHSA-2026:50319 https://access.redhat.com/errata/RHSA-2026:50319

Comment 3 errata-xmlrpc 2026-08-04 18:44:45 UTC
This issue has been addressed in the following products:

  Red Hat Ansible Automation Platform 2.6 for RHEL 9
  Red Hat Ansible Automation Platform 2.6 for RHEL 10

Via RHSA-2026:50336 https://access.redhat.com/errata/RHSA-2026:50336