🇰🇷 한글 설명
Apache Camel의 DNS 컴포넌트에서 부적절한 입력 검증으로 인해 발생하는 SSRF 취약점입니다. HTTP 헤더 필터링 전략이 Camel 접두사가 없는 특정 DNS 관련 헤더를 차단하지 못해, 공격자가 임의의 DNS 서버를 지정하거나 내부 호스트 정보를 탈취할 수 있습니다.
💡 쉬운 설명
해커가 특수한 명령어를 담은 HTTP 요청을 보내면, 서버가 해커가 지정한 가짜 주소로 접속을 시도하게 만드는 보안 결함입니다. 이를 통해 내부 네트워크의 정보를 몰래 알아내거나 잘못된 정보를 받아낼 수 있습니다.
🇺🇸 원문 (English)
Improper Input Validation, Server-Side Request Forgery (SSRF) vulnerability in Apache Camel DNS component.
The camel-dns producers read DNS operation parameters - the resolver to query, the name or domain to look up, the record type and class, and the search term - from Exchange message headers whose constant values (DnsConstants.DNS_SERVER, DNS_NAME, DNS_DOMAIN, DNS_TYPE, DNS_CLASS, TERM) were the plain strings dns.server, dns.name, dns.domain, dns.type, dns.class and term. Because these names do not start with the Camel / camel prefix, HttpHeaderFilterStrategy - which blocks only the Camel header namespace on the HTTP boundary - let them pass from an inbound HTTP request straight into the Exchange. In a route that bridges an HTTP consumer (for example platform-http) into a dns: producer, any HTTP client could therefore set the dns.server header to make the dig producer build a SimpleResolver pointing at an attacker-controlled DNS server - a server-side request forgery via DNS, through which the attacker observes the queried name and can return poisoned responses - and set the dns.name / dns.domain headers to resolve arbitrary internal hostnames, disclosing whether they exist (internal network reconnaissance). No credentials are required when the bridging consumer is unauthenticated.
This issue affects Apache Camel: from 4.0.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 version 4.21.0, which fixes the issue. If users are on the 4.14.x LTS releases stream, then they are suggested to upgrade to 4.14.8. If users are on the 4.18.x releases stream, then they are suggested to upgrade to 4.18.3. After upgrading, routes that drive DNS operations via the raw header names must use CamelDnsServer / CamelDnsName / CamelDnsDomain / CamelDnsType / CamelDnsClass / CamelDnsTerm instead of the dns.* / term names. For deployments that cannot upgrade immediately, strip the dns.* and term headers from any untrusted ingress before the dns: producer, and set the DNS server and lookup parameters from a trusted source in the route.
📍 영향받는 시스템
Apache Camel 4.0.0 ~ 4.14.7, 4.15.0 ~ 4.18.2, 4.19.0 ~ 4.20.x
⚔️ 공격 벡터
인증되지 않은 HTTP 요청에 dns.server, dns.name 등의 헤더를 포함시켜 DNS 쿼리 동작을 조작함
🛡️ 대응 방법
Apache Camel을 4.21.0, 4.14.8, 또는 4.18.3 이상의 보안 패치 버전으로 업그레이드하십시오.
🔧 검증 코드
명령어 결과에 취약한 버전 범위의 Apache Camel 버전이 출력되면 패치가 필요한 상태입니다.
mvn dependency:list | grep 'camel-core' | grep -E '4.14.[0-7]|4.15.[0-2]|4.1[8-9].[0-9]'