
Reproducer eseguibile per Spring Boot e Quarkus per CVE-2026-85260, che dimostra la registrazione dei PHI in camel-mllp nelle versioni interessate e la soppressione dopo la correzione.
Reproduttore proof-of-concept eseguibile per la vulnerabilità di Apache Camel in cui l'opzione logPhi del componente camel-mllp era impostata per impostazione predefinita su true, cosicché un deployment che non faceva nulla scriveva il contenuto del payload HL7 — dati dei pazienti — nel log dell'applicazione fin da subito. (Altri due percorsi di codice registravano il contenuto del payload indipendentemente dall'impostazione, quindi anche un operatore che aveva disattivato logPhi era comunque esposto su quei percorsi.) MLLP trasporta messaggi clinici HL7, quindi il contenuto in questione è PHI, e finiva nei normali log dell'applicazione, soggetti a qualunque politica di conservazione, aggregazione e accesso il deployment applichi ai log anziché ai fascicoli clinici.
| Runtime | Directory | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-mllp 4.22.0 (affetto; corretto in 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-mllp (Camel 4.15.0, affetto; controllo corretto CQ 3.40.0 / Camel 4.22.1) |
Entrambi i moduli dimostrano il comportamento affetto e quello corretto.
Un consumer MLLP (server TCP) riceve messaggi HL7. Il componente registra il payload ricevuto a livello DEBUG (quindi i logger MLLP sono portati a DEBUG e i log sono scritti in mllp-phi.log). Il driver agisce come mittente HL7: incapsula un messaggio HL7 il cui campo PID (nome del paziente) porta un marcatore benigno PHI-MARKER-DOE-JANE-5E1F nell'involucro MLLP e lo invia, quindi legge il file di log.
Due messaggi vengono inviati sulla stessa connessione di proposito: il consumer elabora il primo dalla sua lettura di validazione, e il secondo attraverso il suo ciclo di ricezione — che è il percorso che registra il payload ricevuto.
logPhi è impostato per impostazione predefinita su true, quindi il log contiene Received 170 byte message MSH|…PID|…| PHI-MARKER-DOE-JANE-5E1F^Jane… — i dati del paziente verbatim.logPhi è impostato per impostazione predefinita su false, quindi il log mostra <PHI suppressed>.# 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>
| Proprietà | Valore |
|---|---|
| Componente | camel-mllp (predefinito logPhi; TcpSocketConsumerRunnable, MllpSocketBuffer, Hl7Util) |
| CWE | CWE-532 (Inserimento di informazioni sensibili nel file di log) |
| Gravità | MEDIA |
| Vettore di attacco | Messaggi HL7 ricevuti da un consumer MLLP in esecuzione con impostazioni predefinite e logging DEBUG |
| Impatto | Informazioni sanitarie protette (dati dei pazienti) scritte nei normali log applicativi |
| Versioni interessate | Dalla 4.0.0 precedente alla 4.18.5, dalla 4.19.0 precedente alla 4.22.1 |
| Versioni corrette | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24454 |
| Credito | Claude Security Scan Tool |
Avviso: https://camel.apache.org/security/CVE-2026-85260.html
La correzione modifica il valore predefinito di logPhi da true a false in
MllpComponent, e indirizza il logging del payload attraverso i nuovi helper convertToLoggableString/toLoggableStringAndReset
(e la costante Hl7Util PHI_SUPPRESSED_REPLACEMENT_VALUE = "<PHI suppressed>"), così i percorsi che in precedenza ignoravano il
flag ora lo rispettano. Si tratta di un valore predefinito modificato: un deployment che faceva affidamento sul logging del payload deve ora impostare
logPhi=true esplicitamente.
Impostare logPhi=false, e tenere presente che due percorsi continueranno a registrare il contenuto del payload finché la correzione non viene applicata —
limitare di conseguenza l'accesso ai log.
Questo repository è pubblicato per scopi educativi e difensivi: per aiutare gli utenti di Apache Camel a comprendere la vulnerabilità, verificare se sono interessati e confermare che l'aggiornamento la risolve. Il messaggio HL7 e i suoi dati "paziente" sono fixture locali inerti e inventate. Non utilizzare questo materiale contro sistemi di cui non si è proprietari o gestori.