
Reprodutor executável em Spring Boot e Quarkus para a CVE-2026-85260, demonstrando o registro de PHI do camel-mllp nas versões afetadas e a supressão após a correção.
Reprodutor de prova de conceito executável para a vulnerabilidade do Apache Camel em que a opção logPhi do componente camel-mllp tinha como padrão true, de modo que uma implantação que não fizesse nada gravava o conteúdo da carga útil HL7 — dados de pacientes — no log da aplicação logo de fábrica. (Dois outros caminhos de código registravam o conteúdo da carga útil independentemente da configuração, portanto, mesmo um operador que tivesse desativado o logPhi ainda estava exposto nesses caminhos.) O MLLP transporta mensagens clínicas HL7, portanto o conteúdo em questão é PHI, e ele chegava aos logs comuns da aplicação, sujeito a qualquer retenção, agregação e acesso que a implantação aplique aos logs, e não aos registros clínicos.
| Runtime | Diretório | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-mllp 4.22.0 (afetado; corrigido em 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-mllp (Camel 4.15.0, afetado; controle corrigido CQ 3.40.0 / Camel 4.22.1) |
Ambos os módulos demonstram o comportamento afetado e o corrigido.
Um consumidor MLLP (servidor TCP) recebe mensagens HL7. O componente registra a carga útil recebida em DEBUG (portanto, os loggers do MLLP são elevados para DEBUG, e os logs são gravados em mllp-phi.log). O driver atua como remetente HL7: ele enquadra uma mensagem HL7 cujo campo PID (nome do paciente) carrega um marcador benigno PHI-MARKER-DOE-JANE-5E1F no envelope MLLP e a envia, depois lê o arquivo de log.
Duas mensagens são enviadas na mesma conexão de propósito: o consumidor processa a primeira a partir de sua leitura de validação, e a segunda através de seu loop de recebimento — que é o caminho que registra a carga útil recebida.
logPhi tem como padrão true, então o log contém Received 170 byte message MSH|…PID|…| PHI-MARKER-DOE-JANE-5E1F^Jane… — os dados do paciente literalmente.logPhi tem como padrão false, então o log mostra <PHI suppressed> em vez disso.# 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>
| Propriedade | Valor |
|---|---|
| Componente | camel-mllp (logPhi padrão; TcpSocketConsumerRunnable, MllpSocketBuffer, Hl7Util) |
| CWE | CWE-532 (Inserção de Informação Sensível em Arquivo de Log) |
| Severidade | MÉDIA |
| Vetor de ataque | Mensagens HL7 recebidas por um consumidor MLLP em execução com configurações padrão e logging em nível DEBUG |
| Impacto | Informações de saúde protegidas (dados de pacientes) gravadas em logs comuns da aplicação |
| Versões Afetadas | Da 4.0.0 anterior à 4.18.5, da 4.19.0 anterior à 4.22.1 |
| Versões Corrigidas | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24454 |
| Crédito | Claude Security Scan Tool |
Aviso: https://camel.apache.org/security/CVE-2026-85260.html
A correção altera o padrão de logPhi de true para false em
MllpComponent, e encaminha o logging de payload através dos novos auxiliares convertToLoggableString/toLoggableStringAndReset
(e do Hl7Util PHI_SUPPRESSED_REPLACEMENT_VALUE = "<PHI suppressed>"), de modo que os caminhos que anteriormente ignoravam a
flag agora a respeitam. Este é um padrão alterado: uma implantação que dependia do logging de payload agora deve definir
logPhi=true explicitamente.
Defina logPhi=false, e esteja ciente de que dois caminhos continuarão a registrar o conteúdo do payload até que a correção seja aplicada —
restrinja o acesso aos logs de acordo.
Este repositório é publicado para fins educacionais e defensivos: para ajudar os usuários do Apache Camel a entender a vulnerabilidade, verificar se são afetados e confirmar que a atualização a resolve. A mensagem HL7 e seus dados de "paciente" são fixtures locais inertes e fictícios. Não use este material contra sistemas que você não possui ou opera.