针对 Apache Camel 漏洞的可运行概念验证复现程序:camel-mllp 组件的 logPhi 选项默认值为 true,因此未做任何配置的部署会开箱即将 HL7 载荷内容——患者数据——写入应用日志。(另有两条代码路径无论该设置如何都会记录载荷内容,因此即使操作员已关闭 logPhi,在这些路径上仍会暴露。)MLLP 承载 HL7 临床消息,因此所涉内容属于 PHI,而它进入了普通应用日志,受部署对日志(而非临床记录)所施加的保留、聚合和访问控制约束。
| 运行时 | 目录 | 技术栈 |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-mllp 4.22.0(受影响;修复版本 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-mllp(Camel 4.15.0,受影响;修复对照 CQ 3.40.0 / Camel 4.22.1) |
两个模块均演示了受影响和修复后的行为。
MLLP 消费者(TCP 服务器)接收 HL7 消息。该组件在 DEBUG 级别记录接收到的载荷(因此将 MLLP 日志记录器提升至 DEBUG,日志写入 mllp-phi.log)。驱动程序充当 HL7 发送方:它在 MLLP 信封中构造一条 HL7 消息,其 PID(患者姓名)字段携带无害标记 PHI-MARKER-DOE-JANE-5E1F,发送该消息,然后读取日志文件。
故意在同一连接上发送两条消息:消费者从验证读取中处理第一条,通过接收循环处理第二条——而接收循环正是记录接收载荷的路径。
logPhi 默认为 true,因此日志包含 Received 170 byte message MSH|…PID|…| PHI-MARKER-DOE-JANE-5E1F^Jane…——患者数据原样出现。logPhi 默认为 false,因此日志显示 <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>
| 属性 | 值 |
|---|---|
| 组件 | camel-mllp(logPhi 默认值;TcpSocketConsumerRunnable、MllpSocketBuffer、Hl7Util) |
| CWE | CWE-532(将敏感信息插入日志文件) |
| 严重程度 | 中危 |
| 攻击向量 | 由使用默认设置并启用 DEBUG 日志记录的 MLLP 消费者接收的 HL7 消息 |
| 影响 | 受保护的健康信息(患者数据)被写入普通应用程序日志 |
| 受影响版本 | 从 4.0.0 起至 4.18.5 之前,从 4.19.0 起至 4.22.1 之前 |
| 修复版本 | 4.18.5、4.22.1、4.23.0 |
| JIRA | CAMEL-24454 |
| 致谢 | Claude Security Scan Tool |
公告:https://camel.apache.org/security/CVE-2026-85260.html
该修复将 MllpComponent 中 logPhi 的默认值从 true 改为 false,并通过新增的 convertToLoggableString/toLoggableStringAndReset 辅助方法(以及 Hl7Util 中的 PHI_SUPPRESSED_REPLACEMENT_VALUE = "<PHI suppressed>")来路由载荷日志记录,从而使此前忽略该标志的路径现在能够遵循它。这是一项默认值变更:依赖载荷日志记录的部署现在必须显式设置 logPhi=true。
设置 logPhi=false,并注意在应用修复之前,有两条路径会继续记录载荷内容——请相应地限制对日志的访问。
本仓库出于教育和防御目的发布:帮助 Apache Camel 用户理解该漏洞、验证自身是否受影响,并确认升级能够解决该问题。HL7 消息及其“患者”数据均为无实际作用的虚构本地测试数据。请勿将本材料用于您不拥有或运营的系统。