
Lauffähiger Spring Boot- und Quarkus-Reproducer für CVE-2026-85260, der die PHI-Protokollierung von camel-mllp in betroffenen Versionen und deren Unterdrückung nach dem Fix demonstriert.
Lauffähiger Proof-of-Concept-Reproduzierer für die Apache-Camel-Schwachstelle, bei der die Option logPhi der Komponente camel-mllp standardmäßig auf true gesetzt war, sodass ein Deployment, das nichts unternahm, HL7-Payload-Inhalte — Patientendaten — out of the box ins Anwendungslog schrieb. (Zwei weitere Codepfade protokollierten Payload-Inhalte unabhängig von der Einstellung, sodass selbst ein Betreiber, der logPhi deaktiviert hatte, auf diesen Pfaden weiterhin exponiert war.) MLLP überträgt klinische HL7-Nachrichten, daher handelt es sich bei den betroffenen Inhalten um PHI, und diese gelangten in gewöhnliche Anwendungslogs, die den Aufbewahrungs-, Aggregations- und Zugriffsregeln unterliegen, die das Deployment auf Logs — und nicht auf klinische Aufzeichnungen — anwendet.
| Laufzeitumgebung | Verzeichnis | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-mllp 4.22.0 (betroffen; behoben in 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-mllp (Camel 4.15.0, betroffen; behobene Kontrolle CQ 3.40.0 / Camel 4.22.1) |
Beide Module demonstrieren das betroffene und das behobene Verhalten.
Ein MLLP-Consumer (TCP-Server) empfängt HL7-Nachrichten. Die Komponente protokolliert den empfangenen Payload auf DEBUG-Ebene (daher werden die MLLP-Logger auf DEBUG gesetzt und die Logs in mllp-phi.log geschrieben). Der Treiber fungiert als HL7-Sender: Er rahmt eine HL7-Nachricht, deren PID-Feld (Patientenname) einen harmlosen Marker PHI-MARKER-DOE-JANE-5E1F im MLLP-Umschlag trägt, sendet sie und liest anschließend die Logdatei.
Es werden absichtlich zwei Nachrichten über dieselbe Verbindung gesendet: Der Consumer verarbeitet die erste aus seinem Validierungs-Lesevorgang und die zweite über seine Empfangsschleife — das ist der Pfad, der den empfangenen Payload protokolliert.
logPhi ist standardmäßig true, sodass das Log Received 170 byte message MSH|…PID|…| PHI-MARKER-DOE-JANE-5E1F^Jane… enthält — die Patientendaten im Klartext.logPhi ist standardmäßig false, sodass das Log stattdessen <PHI suppressed> anzeigt.# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: PHI in the log; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85260-mllp-phi-logging-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: <PHI suppressed>; >>> Not exploited
# Camel Quarkus
cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected (Camel 4.15.0): PHI in the log
docker compose down
# Patched control: CQ 3.40.0 ships Camel 4.22.1
mvn clean package -Dcamel-quarkus.version=3.40.0 -Dquarkus.platform.version=3.40.0
java -jar target/quarkus-app/quarkus-run.jar &
curl -s http://localhost:8080/exploit/attack # fixed: <PHI suppressed>
| Eigenschaft | Wert |
|---|---|
| Komponente | camel-mllp (logPhi-Standardwert; TcpSocketConsumerRunnable, MllpSocketBuffer, Hl7Util) |
| CWE | CWE-532 (Einfügen sensibler Informationen in Protokolldateien) |
| Schweregrad | MITTEL |
| Angriffsvektor | HL7-Nachrichten, die von einem MLLP-Consumer mit Standardeinstellungen und DEBUG-Protokollierung empfangen werden |
| Auswirkung | Geschützte Gesundheitsinformationen (Patientendaten) werden in gewöhnliche Anwendungsprotokolle geschrieben |
| Betroffene Versionen | Ab 4.0.0 vor 4.18.5, ab 4.19.0 vor 4.22.1 |
| Behobene Versionen | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24454 |
| Danksagung | Claude Security Scan Tool |
Sicherheitshinweis: https://camel.apache.org/security/CVE-2026-85260.html
Die Korrektur ändert den Standardwert von logPhi von true auf false in
MllpComponent und leitet die Protokollierung von Nutzdaten über neue Hilfsfunktionen convertToLoggableString/toLoggableStringAndReset
(und den Hl7Util-Wert PHI_SUPPRESSED_REPLACEMENT_VALUE = "<PHI suppressed>"), sodass die Pfade, die das
Flag zuvor ignorierten, es nun berücksichtigen. Dies ist ein geänderter Standardwert: Eine Bereitstellung, die sich auf die Protokollierung von Nutzdaten verlassen hat, muss nun
logPhi=true explizit setzen.
Setzen Sie logPhi=false, und beachten Sie, dass zwei Pfade weiterhin den Inhalt von Nutzdaten protokollieren, bis die Korrektur angewendet wird –
beschränken Sie den Zugriff auf die Protokolle entsprechend.
Dieses Repository wird zu Bildungs- und Verteidigungszwecken veröffentlicht: um Apache-Camel-Benutzern zu helfen, die Schwachstelle zu verstehen, zu überprüfen, ob sie betroffen sind, und zu bestätigen, dass ein Upgrade sie behebt. Die HL7-Nachricht und ihre „Patienten“-Daten sind inerte, erfundene lokale Testdaten. Verwenden Sie dieses Material nicht gegen Systeme, die Ihnen nicht gehören oder die Sie nicht betreiben.