Apache Camel Cometd 구성 요소의 부적절한 입력 유효성 검사 취약점. camel-cometd 구성 요소는 HeaderFilterStrategy를 적용하지 않고 인바운드 Bayeux(CometD) 메시지 헤더를 Camel Exchange에 매핑합니다. CometdBinding.populateExchangeFromMessage는 CometD 클라이언트가 제공하는 전체 ext.CamelHeaders 맵을 Camel 메시지(message.setHeaders)에 직접 복사하므로 CamelHttpUri, CamelFileName 또는 CamelJmsDestinationNam과 같은 Camel 내부 제어 헤더를 포함한 모든 헤더 이름이 복사됩니다.
Apache Camel Cometd 구성 요소의 부적절한 입력 유효성 검사 취약점.
camel-cometd 구성 요소는 HeaderFilterStrategy를 적용하지 않고 인바운드 Bayeux(CometD) 메시지 헤더를 Camel Exchange에 매핑합니다. CometdBinding.populateExchangeFromMessage는 CometD 클라이언트가 제공하는 전체 ext.CamelHeaders 맵을 Camel 메시지(message.setHeaders)에 직접 복사하므로 CamelHttpUri, CamelFileName 또는 CamelJmsDestinationName과 같은 Camel 내부 제어 헤더를 포함한 모든 헤더 이름이 수정되지 않은 채 허용됩니다. CometdComponent는 기본적으로 Bayeux SecurityPolicy를 설치하지 않기 때문에 CometD 끝점에 대해 Bayeux 핸드셰이크를 완료할 수 있는 클라이언트는 인증 없이 이러한 메시지를 게시할 수 있습니다. 따라서 공격자는 경로에서 다운스트림 생산자의 동작에 영향을 미치는 임의의 Camel 제어 헤더를 삽입할 수 있습니다(예: HTTP 생산자 리디렉션, 파일 이름 변경 또는 JMS 대상 재정의). 주입된 헤더는 내부 직접, seda 및 vm 홉에서도 지속됩니다. 구체적인 하류 영향은 경로가 사용하는 생산자에 따라 달라집니다. 이 문제는 Apache Camel 4.0.0 이전 4.14.8, 4.15.0 이전 4.18.3, 4.19.0 이전 4.21.0에 영향을 미칩니다.
사용자는 문제를 해결하는 버전 4.21.0으로 업그레이드하는 것이 좋습니다. 사용자가 4.14.x LTS 릴리스 스트림을 사용하는 경우 4.14.8로 업그레이드하는 것이 좋습니다. 사용자가 4.18.x 릴리스 스트림을 사용하는 경우 4.18.3으로 업그레이드하는 것이 좋습니다. 수정 사항은 인바운드 매핑에서 Camel 헤더 네임스페이스를 대소문자를 구분하지 않고 필터링하는 camel-cometd 바인딩(코드에서 오랫동안 지속된 TODO)에 HeaderFilterStrategy를 구현하므로 클라이언트 제공 Camel* / camel* 헤더가 더 이상 Exchange에 복사되지 않습니다. 즉시 업그레이드할 수 없는 배포의 경우 인바운드 CometD 메시지가 다운스트림 생산자에 도달하기 전에 Camel 제어 헤더를 제거하고(예: 경로 시작 시 RemoveHeaders('Camel*') 및 RemoveHeaders('camel*')) 인증된 클라이언트만 게시할 수 있도록 CometdComponent에 명시적인 Bayeux SecurityPolicy를 설치합니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 98.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 98.00 |
VPI 공식 vpi-v1 기준