🔍 CVE-2026-42527

8.1
CVSS Score
HIGH
2026-07-06
2026-10-25 15:10
✅ 완료

🇰🇷 한글 설명

Apache Camel의 여러 컴포넌트가 기본으로 적용하는 ObjectInputFilter 패턴(java.**)에 결함이 있어, 신뢰할 수 없는 Java 직렬화 데이터를 역직렬화할 때 java.net.URL 등의 hashCode 호출을 통해 공격자 지정 호스트로 DNS 질의가 발생할 수 있습니다. 이는 필터를 우회하는 아웃오브밴드 정보 유출 경로가 됩니다. camel-jms 계열은 mapJmsMessage 기본값으로 인해 노출 위험이 가장 큽니다.

💡 쉬운 설명

Apache Camel을 사용하는 서버가 외부에서 조작된 데이터를 받으면, 서버가 공격자의 서버로 인터넷 주소 조회 요청을 보내게 될 수 있습니다. 이를 통해 서버 내부 정보가 외부로 새어 나갈 수 있습니다.

🇺🇸 원문 (English)

Deserialization of Untrusted Data vulnerability in Apache Camel. The default ObjectInputFilter pattern shipped with several Apache Camel components for defense-in-depth deserialization filtering ('java.**;javax.**;org.apache.camel.**;!*', or the no-'javax.**' variant in the aggregation-repository components) uses a recursive 'java.**' glob that admits classes whose hashCode/equals/readObject methods perform network I/O, notably java.net.URL and java.net.InetAddress. When an attacker can deliver a Java-serialized payload to an affected Camel consumer, deserialization of a HashMap (or any collection that calls hashCode on its elements) containing java.net.URL keys causes the JVM to issue DNS queries to the attacker-supplied host during the deserialization side-effect. The class-level filter check passes because the resulting object's class (HashMap) is allow-listed; the DNS query is observable on an attacker-controlled DNS server, providing an out-of-band side channel. The exposure is highest on the camel-jms family because JmsBinding.extractBodyFromJms invokes ObjectMessage.getObject() unconditionally when mapJmsMessage=true (default). Affected components: camel-jms, camel-sjms, camel-amqp, camel-mina, camel-netty, camel-netty-http, camel-vertx-http, camel-infinispan, and the aggregation repository components camel-leveldb, camel-cassandraql, camel-consul, camel-sql (JDBC aggregation repository). This issue affects Apache Camel: from 4.14.0 before 4.14.8, from 4.15.0 before 4.18.3, from 4.19.0 before 4.21.0. Users are recommended to upgrade to a version that contains the CAMEL-23372 fix once available: 4.21.0 for the 4.21.x line, 4.18.3 for the 4.18.x line, and 4.14.8 for the 4.14.x line. For deployments that cannot upgrade immediately, configure a JMS-provider-side allow-list (Apache ActiveMQ Artemis 'deserializationAllowList' / 'deserializationDenyList', Apache ActiveMQ Classic 'org.apache.activemq.SERIALIZABLE_PACKAGES') as the primary mitigation, and/or override the in-code default via the endpoint-level 'deserializationFilter' option or the JVM-wide '-Djdk.serialFilter' system property with an explicit deny: '!java.net.**;java.**;javax.**;org.apache.camel.**;!*' (or '!java.net.**;java.**;org.apache.camel.**;!*' for the aggregation-repository components, which do not include javax.**).

📍 영향받는 시스템

Apache Camel 4.14.0~4.14.8 미만, 4.15.0~4.18.3 미만, 4.19.0~4.21.0 미만 (camel-jms, camel-sjms, camel-amqp, camel-mina, camel-netty, camel-vertx-http, camel-infinispan, camel-leveldb, camel-cassandraql, camel-consul, camel-sql 등)

⚔️ 공격 벡터

공격자가 Java 직렬화 페이로드를 취약한 Camel 소비자 엔드포인트(예: JMS 큐)에 전달하여, 역직렬화 과정에서 공격자 DNS 서버로 질의를 발생시킴

🛡️ 대응 방법

Apache Camel을 4.21.0, 4.18.3, 4.14.8 이상으로 업그레이드하고, 즉시 업그레이드가 어려우면 JMS 브로커의 역직렬화 허용 목록 설정 및 '-Djdk.serialFilter=!java.net.**;java.**;javax.**;org.apache.camel.**;!*' 등 명시적 거부 필터를 적용

🔧 검증 코드

출력된 camel-core 버전이 4.14.8 미만(4.14.x), 4.15.0~4.18.2(4.18.x 미만), 4.19.0~4.20.x(4.21.0 미만)이면 취약하므로 업그레이드가 필요하고, 4.21.0 이상 또는 4.18.3 이상, 4.14.8 이상이면 패치된 버전입니다.

Shell / Script
find / -name 'camel-core*.jar' 2>/dev/null | xargs -I{} sh -c 'echo {}; unzip -p {} META-INF/MANIFEST.MF 2>/dev/null | grep -i implementation-version'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Oracle Java SE