🇰🇷 한글 설명
Apache Camel CXF 컴포넌트에서 서비스 계약에 정의되지 않은 예외 발생 시, 오류 메시지에 민감한 정보가 포함되는 취약점입니다. 공격자가 의도적으로 오류를 유발할 경우 클래스명, 패키지명, 스택 트레이스 등 내부 시스템 정보가 SOAP faultstring을 통해 노출될 수 있습니다.
💡 쉬운 설명
프로그램 실행 중 에러가 났을 때, 보안상 숨겨야 할 내부 정보가 외부 사용자에게 그대로 보여지는 문제입니다. 해커는 이 정보를 통해 시스템의 구조를 파악하고 다음 공격을 준비할 수 있습니다.
🇺🇸 원문 (English)
Generation of Error Message Containing Sensitive Information vulnerability in Apache Camel CXF component.
This issue affects Apache Camel: from 4.0.0 before 4.18.5, from 4.19.0 before 4.22.1.
When a route behind a CXF SOAP consumer failed with an exception the service contract does not declare, the exception was described back to the SOAP client in the fault: CXF copies the message into the SOAP faultstring, and can be configured to place the stack trace in the fault detail. An external caller able to provoke a failure could therefore read internal detail about the deployment - class and package names, and whatever the exception message carries. Declared faults, annotated @WebFault, are a different matter: those are part of the published contract that clients are written against, and suppressing them would break the service rather than protect anything.
Upgrade to Apache Camel 4.23.0, which fixes the issue. Users on the 4.18.x LTS releases stream should upgrade to 4.18.5. Users on the 4.22.x LTS releases stream should upgrade to 4.22.1. A muteException consumer option, defaulting to true, replaces an undeclared route failure with a generic fault carrying no class name, message or stack trace. Faults the contract declares are reported exactly as before. Set muteException=false to restore the previous output. For deployments that cannot upgrade immediately, declare the exceptions the service is allowed to report and map every other failure onto one of them in an onException handler, so no undeclared exception reaches the fault.
📍 영향받는 시스템
Apache Camel 4.0.0 ~ 4.18.4, 4.19.0 ~ 4.22.0
⚔️ 공격 벡터
CXF SOAP 소비자 뒤의 경로에서 정의되지 않은 예외를 유발하여 SOAP fault 응답 내의 상세 정보를 탈취
🛡️ 대응 방법
Apache Camel 4.23.0, 4.18.5 또는 4.22.1 버전으로 업그레이드하거나 muteException 옵션을 사용
🔧 검증 코드
출력된 결과에서 사용 중인 Apache Camel의 버전을 확인하여 취약한 버전 범위에 해당하는지 체크합니다.
mvn dependency:tree | grep -E 'camel-cxf|apache-camel'