VDB
Sign up
CRITICAL9.1

GHSA-4h4f-v54q-7pq8

Apache Camel-Solr: The SolrParam. and SolrField. Exchange header prefixes used non-Camel-prefixed names that bypass the HTTP header filter, allowing an HTTP client to inject Solr query parameters (server-side request forgery) and document fields

Quick fix

GHSA-4h4f-v54q-7pq8 — org.apache.camel:camel-solr: upgrade to the fixed version with the command below.

# pom.xml: bump <version>4.14.8</version> for org.apache.camel:camel-solr

Details

Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection'), Improper Input Validation, Server-Side Request Forgery (SSRF) vulnerability in Apache Camel Solr component.

The camel-solr producer copies Exchange message headers whose names begin with the SolrParam. prefix into the parameters of the Solr request, and headers whose names begin with the SolrField. prefix into the fields of the indexed Solr document. The prefix constants (SolrConstants.HEADER_PARAM_PREFIX / HEADER_FIELD_PREFIX) were the plain strings SolrParam. / SolrField.. 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 solr: producer, any HTTP client could therefore set SolrParam.* headers to inject arbitrary Solr request parameters - including shards or stream.url, which cause the Solr server to issue server-side requests to an attacker-chosen URL (server-side request forgery, for example to an internal service or a cloud metadata endpoint), or qt to reach administrative request handlers - and set SolrField.* headers to inject arbitrary fields into indexed documents. 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 set Solr parameters or fields via the raw header prefixes must use CamelSolrParam. / CamelSolrField. instead of SolrParam. / SolrField.. For deployments that cannot upgrade immediately, strip the SolrParam.* and SolrField.* headers from any untrusted ingress before the solr: producer, and set the required Solr parameters and fields from a trusted source in the route.

Are you affected?

Enter the version of the package you're using.

Affected packages

Maven/org.apache.camel:camel-solr
Introduced in: 4.0.0Fixed in: 4.14.8
Fix# pom.xml: bump <version>4.14.8</version> for org.apache.camel:camel-solr
Maven/org.apache.camel:camel-solr
Introduced in: 4.15.0Fixed in: 4.18.3
Fix# pom.xml: bump <version>4.18.3</version> for org.apache.camel:camel-solr
Maven/org.apache.camel:camel-solr
Introduced in: 4.19.0Fixed in: 4.21.0
Fix# pom.xml: bump <version>4.21.0</version> for org.apache.camel:camel-solr

References