CVE-2026-50578 Overview
CVE-2026-50578 is an improper certificate validation vulnerability [CWE-295] in the ePA 3.x Integration component, which implements the authorization workflow and writes Medical Information Objects to Germany's electronic patient record (elektronische Patientenakte). Versions prior to 1.3.0 disable TLS certificate verification for both ePA connections in app/vau/VAUProtokoll.py and Konnektor connections in app/konnektor/Konnektor.py. A network-positioned attacker can present an arbitrary certificate, terminate the TLS session, and intercept ePA traffic. The issue is fixed in version 1.3.0.
Critical Impact
An attacker positioned on the network path can intercept traffic to Germany's electronic patient record system, observing smartcard operations and Medical Information Objects in transit.
Affected Products
- fbeta-GmbH ePA3-Service-OpenSource prior to 1.3.0
- ePA 3.x Integration VAU protocol handler (app/vau/VAUProtokoll.py)
- ePA 3.x Integration Konnektor client (app/konnektor/Konnektor.py)
Discovery Timeline
- 2026-08-18 - CVE-2026-50578 published to NVD
- 2026-08-18 - Last updated in NVD database
Technical Details for CVE-2026-50578
Vulnerability Analysis
The ePA 3.x Integration disables TLS certificate verification on two critical connection paths. In app/konnektor/Konnektor.py, the Konnektor session sets self.session.verify to False while the client authenticates using self.session.cert. An attacker impersonating the Konnektor can complete the mutual TLS exchange and receive the client's certificate material, then observe smartcard operations proxied through the session.
The second broken code path is in app/vau/VAUProtokoll.py, which handles the Vertrauenswürdige Ausführungsumgebung (VAU) protocol used to reach the ePA back end. The VAU protocol normally provides an application-layer certificate validation step that could act as a fallback when TLS validation is missing. In affected versions that application-layer validation is also broken, so there is no defense-in-depth control to stop interception once transport-layer verification is disabled.
Root Cause
The root cause is improper certificate validation [CWE-295]. Both HTTP client sessions were constructed without verifying the peer certificate against a trusted certificate authority bundle. In the Konnektor path, the client still presents its own PKCS#12 mutual TLS certificate, which is a stronger information leak because the attacker learns identity material.
Attack Vector
Exploitation requires network positioning between the ePA 3.x Integration service and either the Konnektor or the ePA VAU endpoint. An attacker on the path presents a self-signed or attacker-controlled certificate. The client accepts it, completes the TLS handshake, and forwards application traffic through the attacker. Because the Konnektor path uses mutual TLS with self.session.cert, the attacker also captures the client authentication exchange.
# Security patch in app/konnektor/Konnektor.py (Source: GitHub commit 0d94a76)
from app.utils.utils import convert_der_ecdsa_to_concated_x962
-from app.runtime_config.constants import MANDANT_ID, CLIENT_SYSTEM_ID, USER_AGENT, WORKPLACE_ID, HTTPS_TIMEOUT, USER_ID, DIGA_NAME, DIGA_MANUFACTURER, KONNEKTOR_URL, KONNEKTOR_CERT_PW
+from app.runtime_config.constants import MANDANT_ID, CLIENT_SYSTEM_ID, USER_AGENT, WORKPLACE_ID, HTTPS_TIMEOUT, USER_ID, DIGA_NAME, DIGA_MANUFACTURER, KONNEKTOR_URL, KONNEKTOR_CERT_PW, KONNEKTOR_CA_BUNDLE
from app.exceptions import KonnektorException, CardException, ErrorCodes
from app.xml_service.soap_client import SoapClient
+from app.konnektor.pkcs12adapter import PinnedPkcs12Adapter
The patch introduces KONNEKTOR_CA_BUNDLE and a PinnedPkcs12Adapter so the client pins the expected certificate authority and mutual TLS material rather than trusting arbitrary peers. See the GitHub Security Advisory GHSA-j9m9-pmwv-hwwr for full context.
Detection Methods for CVE-2026-50578
Indicators of Compromise
- Unexpected TLS certificates presented by hosts posing as the Konnektor or the ePA VAU endpoint, particularly self-signed or issued by non-gematik authorities.
- Outbound connections from the ePA 3.x Integration service to IP addresses outside the documented Telematikinfrastruktur range.
- Anomalous latency or repeated re-handshakes in sessions to KONNEKTOR_URL, which can indicate a proxy interposed in the path.
Detection Strategies
- Inspect deployed app/konnektor/Konnektor.py and app/vau/VAUProtokoll.py for verify=False and versions of the integration below 1.3.0.
- Capture TLS metadata at the egress boundary and alert on certificate fingerprints that do not match the pinned Konnektor or gematik CA.
- Compare the running release tag against the fixed GitHub Release 1.3.0.
Monitoring Recommendations
- Log all outbound TLS handshakes from ePA 3.x Integration hosts and forward them to a central analytics platform for certificate baselining.
- Alert on any use of the mutual TLS client certificate against unexpected peer identities.
- Track process and configuration changes to runtime_config/constants.py that would affect KONNEKTOR_CA_BUNDLE.
How to Mitigate CVE-2026-50578
Immediate Actions Required
- Upgrade the ePA 3.x Integration to version 1.3.0 or later, which enforces certificate verification and introduces PinnedPkcs12Adapter.
- Rotate the Konnektor mutual TLS client certificate and PKCS#12 password if the pre-patch version was exposed on an untrusted network segment.
- Restrict egress from the integration host to only the documented Konnektor and ePA VAU endpoints.
Patch Information
The fix is delivered in GitHub Release 1.3.0 via Pull Request #9 and commit 0d94a76. The patch adds KONNEKTOR_CA_BUNDLE to runtime configuration and installs a pinned PKCS#12 HTTPS adapter so the Konnektor peer is validated against a known certificate authority. Additional detail is available in the Machine Spirits Advisory.
Workarounds
- If upgrading immediately is not possible, place the integration on an isolated network segment where no untrusted hosts can reach the path between the service and the Konnektor.
- Terminate outbound ePA traffic through a controlled forward proxy that pins the expected server certificates.
- Monitor the mutual TLS client certificate for use against any unexpected peer and revoke it if misuse is suspected.
# Verify the deployed release matches the fixed version
git -C /opt/ePA3-Service-OpenSource describe --tags
# Expected output: 1.3.0 or later
# Confirm KONNEKTOR_CA_BUNDLE is set in runtime configuration
grep -R "KONNEKTOR_CA_BUNDLE" /opt/ePA3-Service-OpenSource/app/runtime_config/
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

