CVE-2026-78165
Apache Camel: Camel-Spring-Redis의 Redis 페이로드에 대한 필터링되지 않은 Java 역직렬화
- 게시됨
- 2026. 10. 19.
- 업데이트됨
- 2026. 10. 20.
- CNA 할당 중
- apache
- 증거 관찰됨
- 2026. 10. 17.
기본 CVSS
cvelist · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H요약
Apache Camel Spring Redis 구성 요소의 신뢰할 수 없는 데이터 역직렬화 취약점. 이 문제는 Apache Camel 2.11.0부터 4.18.5 이전, 4.19.0부터 4.22.1 이전 버전에 영향을 미칩니다. RedisConfiguration.getSerializer는 serializer 옵션이 구성되지 않을 때마다 지연적으로 순수한 JdkSerializationRedisSerializer를 생성했으며, 해당 인스턴스는 구성 요소가 수행하는 모든 읽기 작업에 사용되었습니다. Spring의 구현은 DeserializingConverter를 통해 DefaultDeserializer로 위임하는데, 이는 ConfigurableObjectInputStream으로 바이트를 읽고 스트림에 java.io.ObjectInputFilter를 설치하지 않으므로, 임의의 직렬화된 클래스 그래프가 구체화되고 그 readObject 메서드가 실행되었습니다. RedisConsumer.setBody는 구독된 채널에 게시된 모든 메시지의 원시 바이트에 해당 serializer를 적용했으며, 이는 Exchange가 구성되기 전, 따라서 어떤 라우트 로직이 메시지를 검사할 수 있기 전에 이루어졌으므로, 구독된 채널에 PUBLISH를 발행할 수 있는 행위자는 역직렬화 싱크에 직접 도달할 수 있었습니다. 동일한 기본 serializer가 RedisConfiguration.createDefaultTemplate에 의해 생성된 RedisTemplate을 뒷받침했으므로, 프로듀서의 읽기 명령 GET, HGET, HGETALL, HVALS는 Redis 키스페이스에 저장된 모든 것을 역직렬화했으며, SpringRedisIdempotentRepository가 해당 템플릿을 공유했습니다. 사용자 정의 redisTemplate을 구성해도 컨슈머 경로는 닫히지 않았는데, RedisConsumer.setBody가 템플릿에 연결된 serializer가 아닌 getSerializer를 직접 읽기 때문입니다. 따라서 자체 템플릿에 String serializer를 연결한 배포도 serializer 옵션을 함께 설정하지 않는 한 컨슈머 측에서 여전히 노출되었습니다. 이 구성 요소는 java.io.ObjectInputStream을 직접 생성한 적이 없으며, 이것이 필터링되지 않은 Java 역직렬화에 대한 이전의 Camel 코드베이스 검사에서 이 구성 요소에 도달하지 못한 이유입니다. 이 동작은 2.11.0에서 처음 릴리스된 구성 요소의 도입으로 거슬러 올라가며, 이 수정 전까지 변경되지 않았습니다. 사용자는 이 문제를 수정한 버전 4.23.0으로 업그레이드할 것을 권장합니다. 사용자가 4.22.x 릴리스 스트림을 사용 중이라면 4.22.1로 업그레이드할 것을 권장합니다. 사용자가 4.18.x 릴리스 스트림을 사용 중이라면 4.18.5로 업그레이드할 것을 권장합니다. 4.14.x 릴리스 스트림 및 그 이전 버전은 이 문제가 해결되기 전에 지원이 종료되었으며 수정 사항을 받지 못하므로, 해당 라인을 사용하는 배포는 지원되는 릴리스로 이동해야 합니다. 즉시 업그레이드할 수 없는 배포의 경우, 영향을 받는 코드 경로가 java.io.ObjectInputStream을 통해 읽기 때문에 이를 준수하는 JVM 전역 jdk.serialFilter 시스템 속성을 설정하십시오. 예: -Djdk.serialFilter=!java.net.**;java.**;javax.**;org.apache.camel.**;!* ; 또는 serializer 엔드포인트 옵션을 Java 직렬화를 사용하지 않는 serializer(예: StringRedisSerializer)로 설정하되, 이는 사용자 정의 redisTemplate에만 설정하는 것이 아니라 serializer 옵션으로 설정해야 한다는 점에 유의하십시오. 심층 방어로서 Redis 인스턴스에 인증을 요구하고 구독된 채널에 게시할 수 있는 클라이언트를 제한하며, Camel이 사용하는 Redis 인스턴스를 신뢰할 수 없는 네트워크에 노출하지 마십시오.
소스
CVE-2026-78165에 대한 실행 가능한 개념 증명(PoC) 재현 도구로, Apache Camel camel-spring-redis에서 Redis PUBLISH 페이로드의 JDK 역직렬화가 필터링되지 않는 문제를 시연합니다.
책임 있는 사용
귀하가 소유하고 있거나 테스트할 권한이 있는 시스템에 대해서만 취약점 정보를 사용하십시오. Kitploit은 공개 연구 메타데이터에 연결되며 익스플로잇 코드나 악성 페이로드를 저장하지 않습니다.