🇰🇷 한글 설명
Apache Camel의 Docling 컴포넌트에서 발생하는 SSRF, 경로 탐색(Path Traversal) 및 민감 정보 노출 취약점입니다. 메시지 본문의 접두사를 기반으로 원격 URL 호출이나 로컬 파일 읽기 모드가 암시적으로 결정되어, 공격자가 의도하지 않은 리소스에 접근할 수 있습니다.
💡 쉬운 설명
메시지 내용이 'http://'로 시작하면 외부 사이트에서 정보를 가져오고, '/'로 시작하면 컴퓨터 내부 파일을 읽어버리는 보안 허점이 있습니다. 이를 통해 공격자가 서버 내부의 중요한 파일을 훔쳐보거나 외부 서버로 요청을 보낼 수 있습니다.
🇺🇸 원문 (English)
Server-Side Request Forgery (SSRF), Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') and Exposure of Sensitive Information to an Unauthorized Actor vulnerability in Apache Camel Docling component.
This issue affects Apache Camel: from 4.15.0 before 4.18.5, from 4.19.0 before 4.22.1.
DoclingProducer decided what a String message body meant by inspecting its prefix. A body starting with http:// or https:// was handed to Docling as a remote URL to fetch, a body starting with / or containing a backslash was read from the local filesystem, and anything else was written to a temporary file and converted as document content. The mode was chosen implicitly and no endpoint option allowed a route author to pin the component to a single interpretation, so a route that means convert whatever text arrives in the body silently became a fetcher of remote resources or a reader of local files whenever the text happened to begin with one of those prefixes. The only guard applied to the derived value was a size check, and that check was wrapped in an existence test, so a path that resolved to nothing, or to a pseudo-file reporting a size of zero, passed without being checked at all. Five call sites reached the two sinks: the CLI mode appended the value as the final positional argument of the docling subprocess, and the docling-serve mode passed it either to HttpSource for the backend to fetch or to Files.readAllBytes so that the content could be base64-encoded and uploaded. Because the exchange body is never filtered by a HeaderFilterStrategy, unlike the Camel header namespace, a sender able to place text in a message that a route forwards into a docling endpoint could reach both sinks without any opt-in from the deployment.
Users are recommended to upgrade to version 4.23.0, which fixes the issue. If users are on the 4.22.x releases stream, then they are suggested to upgrade to 4.22.1. If users are on the 4.18.x releases stream, then they are suggested to upgrade to 4.18.5. The 4.14.x releases stream and earlier reached end of life before this issue was resolved and will not receive a fix, so deployments on those lines must move to a supported release. For deployments that cannot upgrade immediately, do not route message bodies that originate outside the deployment into a docling endpoint, and pass the document through a typed body such as File, byte[] or InputStream, or through the CamelDoclingInputFilePath header, so that the body is never subject to prefix interpretation.
📍 영향받는 시스템
Apache Camel 4.15.0 ~ 4.18.4, 4.19.0 ~ 4.22.0
⚔️ 공격 벡터
외부에서 조작된 접두사(http:// 또는 /)를 포함한 메시지 본문을 Docling 엔드포인트로 전송
🛡️ 대응 방법
Apache Camel을 4.23.0, 4.22.1 또는 4.18.5 이상의 버전으로 업그레이드하십시오.
🔧 검증 코드
출력된 결과에 취약한 버전 범위가 포함되어 있다면 해당 취약점에 노출된 상태입니다.
mvn dependency:list | grep 'camel-core' | grep -E '4\.(15|16|17)\.|4\.(19|20|21|22)\.'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
💻 영향받는 소프트웨어
Microsoft Exchange Server