Apache Solr VEX

← Back to the dependency CVE table

CVE-2026-50560, Netty: HTTP/2 max-header-size handling enables Rapid-Reset-style DoS

Status: not_affected

Affected Solr versions: 9.2.0-9.10.x,10.0.x

Description

CVE-2026-50560 (CVSS 5.3, CWE-770) is a resource-exhaustion issue in netty-codec-http2, in the same "HTTP/2 Rapid Reset" family of attacks as the 2023 stream-reset issue (CVE-2023-44487) but with a different trigger: a client that advertises SETTINGS_MAX_HEADER_LIST_SIZE can cause the server to read a request, start proxying/processing it, attempt to generate a response, and then throw an exception while writing the response headers — repeating this cheaply, many times, wastes server-side resources with a different signature than a classic stream reset. This is a server-side concern: it targets the endpoint accepting and processing inbound requests. It affects Netty before 4.1.135.Final and 4.2.0.Final–4.2.14.Final; fixed in 4.1.135.Final and 4.2.15.Final.

Solr has shipped a vulnerable netty-codec-http2 since 9.2.0 (4.1.x through 9.9.0, 4.2.x — netty-codec-http2-4.2.6.Final.jar — from 9.10.0/10.0.0 onward), arriving as a transitive runtime dependency of grpc-netty, used only by the optional opentelemetry module's OTLP gRPC exporter. Solr is not affected:

  • Solr never runs an HTTP/2 server. This attack requires a server that reads and attempts to process many abusive client requests. Solr's only Netty/HTTP2 channel is grpc-netty's outbound OTLP client — Solr is the one sending requests to a single, operator-configured collector, not accepting them from arbitrary attackers.
  • Solr's own code never touches Netty. There are no io.netty imports anywhere in Solr's Java sources.

Since Solr never accepts inbound HTTP/2 connections through Netty, the vulnerable code is present on the classpath but not reachable in any real Solr deployment.

No released Solr version ships the fix. The fixed Netty (4.2.15.Final) is already present on the branch_9x (→ 9.11.0) and branch_10x (→ 10.1.0) development branches, but hasn't reached a released line yet.

References

CVE-2026-50020, Netty: HTTP request smuggling via overly permissive leading control-character skipping

Status: not_affected

Affected Solr versions: 9.2.0-9.10.x,10.0.x

Description

CVE-2026-50020 (CVSS 5.3, CWE-444) is a request-smuggling issue in netty-codec-http's HttpObjectDecoder: before parsing a request line, it skips leading control characters (0x00–0x1F and 0x7F) and whitespace, more permissive than RFC 9112, which only allows ignoring an empty leading CRLF. This over-tolerant framing can let a crafted request boundary be interpreted differently by Netty than by a front-end intermediary. It affects Netty before 4.1.135.Final and 4.2.0.Final–4.2.14.Final; fixed in 4.1.135.Final and 4.2.15.Final.

Solr has shipped a vulnerable netty-codec-http since 9.2.0 (4.1.x through 9.9.0, 4.2.x — netty-codec-http-4.2.6.Final.jar — from 9.10.0/10.0.0 onward), arriving as a transitive runtime dependency of grpc-netty, used only by the optional opentelemetry module's OTLP gRPC exporter. HttpObjectDecoder itself isn't new at that point — earlier Solr releases (7.x through 8.2.x) already shipped this same class, bundled in the older netty-all uber-jar. This is a decoder-side issue — it only bites when Netty parses an inbound HTTP/1.x request. Solr is not affected:

  • Solr's HTTP server is Jetty, not Netty. Inbound requests to Solr's REST APIs never reach a Netty decoder; SolrDispatchFilter and Jetty's own HttpParser handle every attacker-facing request.
  • The OTLP gRPC path never parses HTTP/1.x requests. gRPC traffic is HTTP/2 framed, and Solr's outbound gRPC client only ever decodes a proxy's CONNECT response (if a proxy is configured at all, an optional non-default setup), never an inbound HTTP/1.x request.
  • Solr's own code never touches Netty. There are no io.netty imports anywhere in Solr's Java sources.

Since there is no attacker-reachable path where Solr (or its dependencies) ever decodes an attacker-supplied HTTP/1.x request through this Netty codec, the vulnerable code is present on the classpath but not reachable in any real Solr deployment.

No released Solr version ships the fix. The fixed Netty (4.2.15.Final) is already present on the branch_9x (→ 9.11.0) and branch_10x (→ 10.1.0) development branches, but hasn't reached a released line yet.

References

CVE-2026-50010, Netty: hostname verification silently disabled for custom TrustManagers (SimpleTrustManagerFactory)

Status: not_affected

Affected Solr versions: 8.3.0-9.10.x,10.0.x

Description

CVE-2026-50010 (CVSS 7.5, CWE-347) is a TLS hostname-verification bypass in netty-handler: SimpleTrustManagerFactory wraps a user-supplied X509TrustManager in an adapter that extends X509ExtendedTrustManager (required by the JDK's SSLEngine) but discards the SSLEngine parameters during certificate validation. Because those parameters carry the endpoint identity Java uses for hostname checking, wrapping a custom trust manager this way silently disables hostname verification — even when endpointIdentificationAlgorithm is set to HTTPS (Netty 4.2's own default) — leaving the connection open to a man-in-the-middle who presents any CA-trusted certificate, valid hostname or not. This wrapper only fires when an application supplies its own TrustManager/certificate to Netty's SslContextBuilder; Netty's normal path of loading the platform's default trust store never goes through it. It affects Netty before 4.1.135.Final and 4.2.0.Final–4.2.14.Final; fixed in 4.1.135.Final and 4.2.15.Final.

Solr has shipped netty-handler — the modular jar this CVE concerns — since 8.3.0 (SOLR-13665, netty-handler-4.2.6.Final.jar in the current 9.10.x/10.0.x lines), as a transitive dependency of Apache ZooKeeper's client library (earlier Solr releases, 7.x through 8.2.x, already shipped this same SimpleTrustManagerFactory class too, bundled in the older netty-all uber-jar). None of that matters for this specific CVE, though: the vulnerable scenario only becomes possible starting in 9.2.0, when the optional opentelemetry module (and its grpc-netty OTLP exporter) was introduced — Solr versions before 9.2.0 don't have this module at all. CVE-2026-50010 is not considered exploitable in typical deployments of Apache Solr. Successful exploitation requires a specific, non-default configuration together with a privileged network position:

  • The opentelemetry module is enabled and the operator has configured a custom trusted certificate for the OTLP collector connection (e.g. via OTEL_EXPORTER_OTLP_CERTIFICATE, used to trust a private/internal CA or self-signed collector certificate). That certificate-override path is exactly what causes the OTLP exporter's NettyChannelBuilder to build its SslContext via Netty's SslContextBuilder.trustManager(...), the code path this bug affects.
  • A man-in-the-middle attacker able to intercept the connection to the configured OTLP endpoint presents a certificate issued by that same trusted CA, for any hostname.

Solr's default configuration ships the opentelemetry module disabled, and even when enabled, OTLP export defaults to the JVM's ordinary default trust store — which loads trust managers through the platform TrustManagerFactory, not Netty's SimpleTrustManagerFactory wrapper, and is therefore unaffected. Only operators who have both enabled OTLP tracing and pointed it at a custom trusted certificate are exposed, and even then only to an attacker already positioned to intercept that specific outbound connection.

Operators who do configure a custom OTLP trusted certificate should either restrict network access to the collector endpoint (e.g. a private network path with no attacker-reachable intercept point) until upgrading, or upgrade the bundled Netty once a Solr release ships 4.1.135.Final/4.2.15.Final — already present on the branch_9x (→ 9.11.0) and branch_10x (→ 10.1.0) development branches, but not yet in any released Solr line.

References

CVE-2026-48043, Netty: pooled ByteBuf leak in HTTP/2 auto-decompression on flow-control errors

Status: not_affected

Affected Solr versions: 9.2.0-9.10.x,10.0.x

Description

CVE-2026-48043 (CVSS up to 7.5, CWE-400 / CWE-401 / CWE-772) is a resource-leak issue in netty-codec-http2's DelegatingDecompressorFrameListener: it decompresses gzip/deflate/zstd HTTP/2 message bodies using a per-stream embedded channel, but when a flow-controller exception occurs, the pooled ByteBufs involved aren't released — repeated triggering leaks pooled memory and can eventually crash the JVM with an OOM. DelegatingDecompressorFrameListener is an opt-in listener applications install to get automatic content-encoding-based decompression for generic HTTP/2 traffic; it affects Netty before 4.1.135.Final and 4.2.0.Final–4.2.14.Final; fixed in 4.1.135.Final and 4.2.15.Final.

Solr has shipped a vulnerable netty-codec-http2 since 9.2.0 (4.1.x through 9.9.0, 4.2.x — netty-codec-http2-4.2.6.Final.jar — from 9.10.0/10.0.0 onward), arriving as a transitive runtime dependency of grpc-netty, used only by the optional opentelemetry module's OTLP gRPC exporter. Solr is not affected:

  • grpc-netty never installs DelegatingDecompressorFrameListener. gRPC has its own message-level compression framework, negotiated via grpc-encoding request/response metadata and handled by grpc's own Codec/Compressor classes — it doesn't route through Netty's generic HTTP/2 content-encoding auto-decompression listener at all.
  • Solr's own code never touches Netty. There are no io.netty imports anywhere in Solr's Java sources, so nothing in Solr itself installs this listener either.

Since DelegatingDecompressorFrameListener is never installed in any pipeline Solr's dependencies construct, the vulnerable code is present on the classpath but not reachable in any real Solr deployment.

No released Solr version ships the fix. The fixed Netty (4.2.15.Final) is already present on the branch_9x (→ 9.11.0) and branch_10x (→ 10.1.0) development branches, but hasn't reached a released line yet.

References

CVE-2026-47691, Netty: DNS cache poisoning via insufficient NS record bailiwick checking (netty-resolver-dns not shipped)

Status: not_affected

Description

CVE-2026-47691 (CVSS up to 10.0, CWE-345 / CWE-346) is a DNS cache-poisoning issue in Netty's asynchronous DNS resolver (io.netty:netty-resolver-dns): it accepts any NS record from a DNS response's AUTHORITY section as long as its name is a suffix of the question name, without properly validating that the record is actually in that nameserver's bailiwick, then caches the associated A records directly. An attacker who controls an authoritative nameserver for any subdomain can use this to poison the resolver's cache for parent domains. It affects Netty before 4.1.135.Final and 4.2.0.Final–4.2.14.Final; fixed in 4.1.135.Final and 4.2.15.Final.

This CVE does not apply to Solr at all — netty-resolver-dns isn't in Solr's dependency graph in the first place. Solr's transitive Netty footprint (via grpc-netty, the optional opentelemetry module's OTLP gRPC exporter) pulls in the generic io.netty:netty-resolver API module, but never netty-resolver-dns, the separate artifact that contains the actual DNS resolver implementation this CVE lives in. Neither Solr nor any of its other dependencies (ZooKeeper, gRPC, etc.) uses Netty for DNS resolution — name lookups go through the JDK's standard InetAddress/java.net machinery instead. Solr is not affected: the vulnerable component is not shipped, in any version, on any Solr release line.

References

CVE-2026-47244, Netty: unbounded HTTP/2 concurrent streams (Rapid-Reset-style DoS)

Status: not_affected

Affected Solr versions: 9.2.0-9.10.x,10.0.x

Description

CVE-2026-47244 (CVSS 5.3, CWE-400) is a resource-exhaustion issue in netty-codec-http2: DefaultHttp2Connection.DefaultEndpoint initializes maxActiveStreams/maxStreams to Integer.MAX_VALUE, and Http2Settings doesn't enforce SETTINGS_MAX_CONCURRENT_STREAMS unless an application explicitly configures it. A peer can open hundreds of thousands of stream objects on a single TCP connection, the same amplification pattern as the 2023 HTTP/2 "Rapid Reset" family (CVE-2023-44487) — this is a server-side concern, since it's the endpoint accepting streams whose limit matters. It affects Netty before 4.1.135.Final and 4.2.0.Final–4.2.14.Final; fixed in 4.1.135.Final and 4.2.15.Final.

Solr has shipped a vulnerable netty-codec-http2 since 9.2.0 (4.1.x through 9.9.0, 4.2.x — netty-codec-http2-4.2.6.Final.jar — from 9.10.0/10.0.0 onward), arriving as a transitive runtime dependency of grpc-netty, used only by the optional opentelemetry module's OTLP gRPC exporter. Solr is not affected:

  • Solr never runs an HTTP/2 server. The unbounded-streams condition only matters for the local endpoint that accepts streams opened by a remote peer. Solr's only Netty/HTTP2 channel is grpc-netty's outbound OTLP client — Solr is the one opening streams (its own trace-export RPCs), not accepting an unbounded number of them from arbitrary attackers.
  • The remote peer is a single, operator-configured collector, not an open attack surface. Even in the worst case of a malicious or compromised collector opening many streams back at the client, that's a single trusted, operator-chosen endpoint — not the "hundreds of thousands of streams from an internet-facing listener" amplification scenario this CVE targets.
  • Solr's own code never touches Netty. There are no io.netty imports anywhere in Solr's Java sources.

Since Solr never accepts inbound HTTP/2 connections through Netty, the vulnerable code is present on the classpath but not reachable in any real Solr deployment.

No released Solr version ships the fix. The fixed Netty (4.2.15.Final) is already present on the branch_9x (→ 9.11.0) and branch_10x (→ 10.1.0) development branches, but hasn't reached a released line yet.

References

CVE-2026-45536, Netty: file-descriptor leak in Unix domain socket recvFd()

Status: not_affected

Affected Solr versions: 8.3.0-9.10.x,10.0.x

Description

CVE-2026-45536 (CVSS 4.0, CWE-200 / CWE-772) is a file-descriptor leak in the native/JNI code backing netty-transport-native-unix-common: netty_unix_socket_recvFd allocates only 24 bytes for the ancillary-data control message, so when a peer sends an SCM_RIGHTS message carrying two file descriptors over a Unix domain socket, the kernel installs both fds but Netty's code only accounts for one, leaking the other on every such message. Its CVSS vector is Attack Vector: Local — this requires a local peer with an existing Unix-domain-socket connection to the affected process, not a remote/network attacker. It affects Netty before 4.1.135.Final and 4.2.0.Final–4.2.14.Final; fixed in 4.1.135.Final and 4.2.15.Final.

netty-transport-native-unix-common — the modular jar this CVE concerns — has been part of Solr's dependency graph since 8.3.0 (SOLR-13665, netty-transport-native-unix-common-4.2.6.Final.jar in the current 9.10.x/10.0.x lines), the shared native support library underneath Netty's Epoll and KQueue transports, pulled in via Apache ZooKeeper's client library and, since 9.2.0, also directly by grpc-netty. Older Solr releases (7.x through 8.2.x) already bundled this same native Unix-domain-socket code, in the older netty-all uber-jar at ancient 4.0.x Netty versions — the same architectural reasoning below (Solr never opens a Unix domain socket via Netty) applies to those releases just as it does here, independent of which jar or Netty version carries the code. Solr is not affected:

  • Solr never opens a Unix domain socket via Netty. netty_unix_socket_recvFd is only invoked when a DomainSocketChannel/UnixChannel is actually used. Solr's only Netty channel — grpc-netty's outbound OTLP exporter for the optional opentelemetry module — connects over TCP/IP to a configured collector address, never a local Unix socket. ZooKeeper's client socket defaults to plain NIO, and Solr never enables its Netty alternative by default — but even if an operator does (following ZooKeeper's own TLS instructions), that transport still addresses the ensemble over ordinary TCP/IP host:port connections, never a local Unix domain socket, so there's still no Unix-domain-socket connection anywhere in Solr's dependency graph to leak a file descriptor from.
  • Even where the jar is present, there's no peer positioned to send SCM_RIGHTS. Exploitation requires a local process already connected over a Unix domain socket to the target, which never exists here.
  • Solr's own code never touches Netty. There are no io.netty imports anywhere in Solr's Java sources.

Since Solr never establishes a Unix-domain-socket channel through Netty, this native code path is present on the classpath but not reachable in any real Solr deployment.

No released Solr version ships the fix. The fixed Netty (4.2.15.Final) is already present on the branch_9x (→ 9.11.0) and branch_10x (→ 10.1.0) development branches, but hasn't reached a released line yet.

References

CVE-2026-45416, Netty: unbounded allocation in SNI ClientHello sniffing (SslClientHelloHandler)

Status: not_affected

Affected Solr versions: 8.6.0-9.10.x,10.0.x

Description

CVE-2026-45416 (CVSS 7.5, CWE-770) is a resource-exhaustion issue in netty-handler's SslClientHelloHandler.decode(): it reads the 24-bit TLS handshake length from an inbound ClientHello and eagerly allocates a buffer sized to it without a configured limit (maxClientHelloLength defaults to 0, meaning unlimited), so a crafted ~16 MiB ClientHello can force a huge, unpooled allocation. This only matters for applications using SniHandler (or AbstractSniHandler directly) to peek at a TLS ClientHello's SNI extension and pick a per-hostname SSLContext — a server-side TLS-termination feature for inbound connections. It affects Netty before 4.1.135.Final and 4.2.0.Final–4.2.14.Final; fixed in 4.1.135.Final and 4.2.15.Final.

netty-handler has shipped in Solr since 8.3.0 (SOLR-13665), via Apache ZooKeeper's client library, but SslClientHelloHandler — the specific class this CVE concerns — didn't exist yet at that point: Solr 8.3.0–8.5.2 pinned Netty 4.1.29.Final, which lacks it entirely (Netty only introduced it in 4.1.47.Final). Solr picked up that version starting at 8.6.0, so that's the true first-shipped point for this specific vulnerability, not 8.3.0. SniHandler itself (the class applications actually configure) existed earlier, in both 4.1.29.Final and the older netty-all uber-jar Solr shipped before 8.3.0 — but the unbounded-allocation bug lives in SslClientHelloHandler, a piece SniHandler was refactored to delegate to only later. Since 9.2.0, netty-handler has also arrived via grpc-netty, used by the optional opentelemetry module's OTLP gRPC exporter. Solr is not affected:

  • Solr never runs a Netty server, let alone a TLS-terminating one that inspects ClientHello SNI. SniHandler/SslClientHelloHandler only matter for a server accepting inbound TLS connections and routing by SNI hostname. ZooKeeper's client socket defaults to plain NIO, and Solr never enables its Netty alternative by default — but even if an operator does (following ZooKeeper's own TLS instructions), that only switches Solr's ZooKeeper client socket, which never receives a ClientHello to sniff in the first place (a client sends one; it doesn't parse one). grpc-netty's outbound OTLP client is in the same position.
  • Nothing in Solr's dependency graph installs SniHandler. There's no per-hostname TLS routing feature anywhere in Solr, ZooKeeper's client configuration, or grpc-netty's client channel construction, that would need it.
  • Solr's own code never touches Netty. There are no io.netty imports anywhere in Solr's Java sources. Solr's own TLS termination (when enabled) is handled entirely by Jetty, not Netty.

Since SslClientHelloHandler is never installed or invoked anywhere in Solr's dependency graph, the vulnerable code is present on the classpath but not reachable in any real Solr deployment.

No released Solr version ships the fix. The fixed Netty (4.2.15.Final) is already present on the branch_9x (→ 9.11.0) and branch_10x (→ 10.1.0) development branches, but hasn't reached a released line yet.

References

CVE-2026-44249, Netty: IPv6 subnet-filter bypass in IpSubnetFilterRule

Status: not_affected

Affected Solr versions: 8.3.0-9.10.x,10.0.x

Description

CVE-2026-44249 (CVSS 8.1, CWE-284 / CWE-697 / CWE-1287) is an access-control bypass in netty-handler's IpSubnetFilterRule.compareTo(): an incorrect IPv6 masking operation lets a valid public IPv6 address slip past a configured subnet allow/deny rule. IpSubnetFilterRule (and the RuleBasedIpFilter that uses it) is a server-side feature an application installs in a Netty pipeline to accept or reject inbound connections by source IP. It affects Netty before 4.1.135.Final and 4.2.0.Final–4.2.14.Final; fixed in 4.1.135.Final and 4.2.15.Final.

Solr has shipped netty-handler — the modular jar this CVE concerns — since 8.3.0 (SOLR-13665, netty-handler-4.2.6.Final.jar in the current 9.10.x/10.0.x lines), as a transitive dependency of Apache ZooKeeper's client library (org.apache.zookeeper:zookeeper), which optionally supports a Netty-based connection socket. Earlier Solr releases (7.x through 8.2.x) already shipped this same IpSubnetFilterRule class too, bundled in the older netty-all uber-jar; 8.3.0 is when Solr's build started declaring the modular artifacts explicitly instead. Since 9.2.0 netty-handler has also arrived via grpc-netty, used by the optional opentelemetry module's OTLP gRPC exporter. Solr is not affected:

  • Solr never runs a Netty server. IpSubnetFilterRule only matters for filtering inbound connections at a server. Solr's own HTTP server is Jetty. ZooKeeper's client socket defaults to plain NIO, and Solr never enables its Netty alternative by default — but even an operator who does enable it (following ZooKeeper's own TLS instructions) only switches Solr's ZooKeeper client socket; that never makes Solr run the corresponding NettyServerCnxnFactory server, which Solr never uses at all. grpc-netty's outbound OTLP client is a client too, and never accepts an inbound connection to filter either.
  • Nothing in Solr's dependency graph ever constructs an IpSubnetFilterRule. There's no IP allow/deny-list feature anywhere in Solr, ZooKeeper's client configuration, or grpc-netty's client channel construction, that uses this class.
  • Solr's own code never touches Netty. There are no io.netty imports anywhere in Solr's Java sources. Any IP-based access control an operator configures for Solr (e.g., at a fronting reverse proxy, or Jetty's own connection-level controls) is implemented entirely outside Netty.

Since IpSubnetFilterRule is never installed or evaluated anywhere in Solr's dependency graph, the vulnerable code is present on the classpath but not reachable in any real Solr deployment.

No released Solr version ships the fix. The fixed Netty (4.2.15.Final) is already present on the branch_9x (→ 9.11.0) and branch_10x (→ 10.1.0) development branches, but hasn't reached a released line yet.

References

CVE-2026-42587, Netty: HttpContentDecompressor maxAllocation bypass for br/zstd/snappy

Status: not_affected

Affected Solr versions: 9.2.0-9.10.x,10.0.x

Description

CVE-2026-42587 (CVSS 7.5, CWE-400 / CWE-770) is a resource-exhaustion issue in netty-codec-http's HttpContentDecompressor: its maxAllocation parameter, meant to cap decompression-buffer size and prevent decompression-bomb attacks, is correctly enforced for gzip/deflate (via ZlibDecoder) but silently ignored for br (Brotli), zstd, and snappy content encodings — so a compressed body using one of those encodings can bypass the limit and trigger unbounded memory allocation. It affects Netty before 4.1.133.Final and 4.2.0.Alpha1–4.2.12.Final; fixed in 4.1.133.Final and 4.2.13.Final.

HttpContentDecompressor is part of netty-codec-http. Solr has shipped a vulnerable netty-codec-http since 9.2.0 (4.1.x through 9.9.0, 4.2.x — netty-codec-http-4.2.6.Final.jar — from 9.10.0/10.0.0 onward), arriving as a transitive runtime dependency of grpc-netty, used only by the optional opentelemetry module's OTLP gRPC exporter. HttpContentDecompressor itself isn't new at that point — earlier Solr releases (7.x through 8.2.x) already shipped this same class, bundled in the older netty-all uber-jar. Solr is not affected:

  • HttpContentDecompressor is never added to any pipeline Solr builds. It's an opt-in handler for automatic HTTP/1.x content decoding; gRPC has its own separate message-compression framework (negotiated at the gRPC layer, using gzip/identity) that doesn't route through Netty's HTTP content-encoding decompressor at all.
  • The only HTTP/1.x traffic Solr's Netty usage ever generates is a proxy CONNECT exchange (an optional, non-default setup for the OTLP exporter), and CONNECT responses don't carry a compressed body for this handler to decompress in the first place.
  • Solr's own code never touches Netty. There are no io.netty imports anywhere in Solr's Java sources.

Since HttpContentDecompressor is never installed in any pipeline Solr's dependencies construct, the vulnerable code is present on the classpath but not reachable in any real Solr deployment.

No released Solr version ships the fix. The fixed Netty (4.2.15.Final) is already present on the branch_9x (→ 9.11.0) and branch_10x (→ 10.1.0) development branches, but hasn't reached a released line yet.

References

CVE-2026-42585, Netty: HTTP request smuggling via malformed Transfer-Encoding parsing

Status: not_affected

Affected Solr versions: 9.2.0-9.10.x,10.0.x

Description

CVE-2026-42585 (CWE-444) is a request-smuggling issue in netty-codec-http's HTTP/1.x decoder: a malformed Transfer-Encoding header value is parsed incorrectly, so Netty and a front-end HTTP intermediary can disagree about whether a request is chunked. It affects Netty before 4.1.133.Final and 4.2.0.Alpha1–4.2.12.Final; fixed in 4.1.133.Final and 4.2.13.Final.

Solr has shipped a vulnerable netty-codec-http since 9.2.0 (4.1.x through 9.9.0, 4.2.x — netty-codec-http-4.2.6.Final.jar — from 9.10.0/10.0.0 onward), arriving as a transitive runtime dependency of grpc-netty, used only by the optional opentelemetry module's OTLP gRPC exporter. This HTTP/1.x decoder itself isn't new at that point — earlier Solr releases (7.x through 8.2.x) already shipped this same code, bundled in the older netty-all uber-jar. This is a decoder-side issue — it only bites when Netty parses an inbound HTTP/1.x request. Solr is not affected:

  • Solr's HTTP server is Jetty, not Netty. Inbound requests to Solr's REST APIs never reach a Netty decoder; SolrDispatchFilter and Jetty's own HttpParser handle every attacker-facing request.
  • The OTLP gRPC path never parses HTTP/1.x requests. gRPC traffic is HTTP/2 framed, and Solr's outbound gRPC client only ever decodes a proxy's CONNECT response (if a proxy is configured at all, an optional non-default setup), never an inbound HTTP/1.x request.
  • Solr's own code never touches Netty. There are no io.netty imports anywhere in Solr's Java sources.

Since there is no attacker-reachable path where Solr (or its dependencies) ever decodes an attacker-supplied HTTP/1.x request through this Netty codec, the vulnerable code is present on the classpath but not reachable in any real Solr deployment.

No released Solr version ships the fix. The fixed Netty (4.2.15.Final) is already present on the branch_9x (→ 9.11.0) and branch_10x (→ 10.1.0) development branches, but hasn't reached a released line yet.

References

CVE-2026-42584, Netty: HttpClientCodec request/response desync via 1xx responses

Status: not_affected

Affected Solr versions: 9.2.0-9.10.x,10.0.x

Description

CVE-2026-42584 (CVSS up to 9.1, CWE-444) is a request-smuggling issue in netty-codec-http's HttpClientCodec: it pairs each inbound response with the next outbound request by calling queue.poll() exactly once per response, including for 1xx informational responses. When a server sends a 1xx response ahead of the real final response, the codec's request/response pairing slips, and a later response's body gets parsed from the wrong offset. It affects Netty before 4.1.133.Final and 4.2.0.Alpha1–4.2.12.Final; fixed in 4.1.133.Final and 4.2.13.Final.

Solr has shipped a vulnerable netty-codec-http since 9.2.0 (4.1.x through 9.9.0, 4.2.x — netty-codec-http-4.2.6.Final.jar — from 9.10.0/10.0.0 onward), arriving as a transitive runtime dependency of grpc-netty, used only by the optional opentelemetry module's OTLP gRPC exporter. HttpClientCodec itself isn't new at that point — earlier Solr releases (7.x through 8.2.x) already shipped this same class, bundled in the older netty-all uber-jar. It's the HTTP/1.1 client-side codec inside that jar, and Solr's dependency graph only ever uses it inside Netty's HttpProxyHandler, to send an HTTP CONNECT request and parse the proxy's response when tunneling grpc-netty's OTLP export traffic through an HTTP proxy — itself a non-default configuration, since Solr never sets any JVM-wide HTTP proxy properties itself. Solr is not affected:

  • The bug requires a pipelined sequence of requests/responses (including 1xx) to desync. A CONNECT tunnel is a single request/response exchange — once established, the connection carries opaque HTTP/2 gRPC bytes, not further HTTP/1.1 messages for HttpClientCodec to mis-pair. There's no second request in flight for the queue to get out of sync with.
  • The proxy path itself is non-default. HttpProxyHandler/HttpClientCodec are only instantiated at all if an operator has separately configured an HTTP proxy for the OTLP exporter, which isn't Solr's default posture.
  • Solr's own code never touches Netty. There are no io.netty imports anywhere in Solr's Java sources, and Solr's own HTTP server is Jetty, not Netty, so no inbound Solr traffic is ever parsed by HttpClientCodec either way (it's a client-side class regardless).

Since Solr never exercises a multi-request HTTP/1.1 exchange over any Netty channel, the request/response pairing this bug corrupts never has more than one entry to desync, so the vulnerable code is present on the classpath but not reachable in any real Solr deployment.

No released Solr version ships the fix. The fixed Netty (4.2.15.Final) is already present on the branch_9x (→ 9.11.0) and branch_10x (→ 10.1.0) development branches, but hasn't reached a released line yet.

References

CVE-2026-42583, Netty: Lz4FrameDecoder unbounded allocation before decompression

Status: not_affected

Affected Solr versions: 9.10.x,10.0.x

Description

CVE-2026-42583 (CVSS 7.5, CWE-400 / CWE-770) is a resource-exhaustion issue in netty-codec-compression's Lz4FrameDecoder: it allocates a ByteBuf sized to the frame's claimed decompressedLength (up to 32 MB per block) before running LZ4 decompression, so a crafted frame that lies about its decompressed size can force large allocations regardless of how much data was actually sent — a decompression-bomb-style DoS. It affects Netty before 4.1.133.Final and 4.2.0.Alpha1–4.2.12.Final; fixed in 4.1.133.Final and 4.2.13.Final.

netty-codec-compression — the specific jar this entry tracks — first appears in Solr's dependency graph in 9.10.0/10.0.0 (netty-codec-compression-4.2.6.Final.jar); it's a byproduct of Netty's own 4.2 module split, which broke compression codecs out of the general-purpose netty-codec artifact into their own jar. Lz4FrameDecoder itself is not new at that point, though: it already existed in netty-codec going back to Solr 8.3.0 (SOLR-13665), when Solr first shipped modular Netty jars at all. The same reasoning below has applied for that whole span — Solr has never wired this decoder into anything, regardless of which jar happens to contain it. Solr is not affected:

  • Nothing in Solr's dependency graph ever instantiates Lz4FrameDecoder. It arrives purely as a transitive dependency of Netty's own HTTP/2 and proxy-handler modules (used by grpc-netty, the optional opentelemetry module's OTLP exporter), not because anything negotiates or uses LZ4 compression. gRPC's own message-compression layer uses gzip/identity, never LZ4, so this decoder is never added to any pipeline Solr builds.
  • Solr's own code never touches Netty. There are no io.netty imports anywhere in Solr's Java sources, and no Solr build file references LZ4, Snappy, Brotli, or Zstd Netty codec classes.

Since the vulnerable decoder is never wired into any pipeline that processes attacker-supplied data, the vulnerable code is present on the classpath (where it exists at all) but not reachable in any real Solr deployment.

No released Solr version ships the fix. The fixed Netty (4.2.15.Final) is already present on the branch_9x (→ 9.11.0) and branch_10x (→ 10.1.0) development branches, but hasn't reached a released line yet.

References

CVE-2026-42581, Netty: HTTP request smuggling via conflicting Content-Length/Transfer-Encoding

Status: not_affected

Affected Solr versions: 9.2.0-9.10.x,10.0.x

Description

CVE-2026-42581 (CWE-444) is a request-smuggling issue in netty-codec-http's HttpObjectDecoder: for an HTTP/1.0 request that carries both Transfer-Encoding: chunked and a Content-Length header, the decoder fails to strip the conflicting Content-Length, so downstream proxies or handlers that pick a different header to trust can disagree with Netty about where the request body ends. It affects Netty before 4.1.133.Final and 4.2.0.Alpha1–4.2.12.Final; fixed in 4.1.133.Final and 4.2.13.Final.

Solr has shipped a vulnerable netty-codec-http since 9.2.0 (4.1.x through 9.9.0, 4.2.x — netty-codec-http-4.2.6.Final.jar — from 9.10.0/10.0.0 onward), arriving as a transitive runtime dependency of grpc-netty, used only by the optional opentelemetry module's OTLP gRPC exporter. HttpObjectDecoder itself isn't new at that point — earlier Solr releases (7.x through 8.2.x) already shipped this same class, bundled in the older netty-all uber-jar. This is a decoder-side bug — it only bites when Netty parses an inbound HTTP/1.0/1.1 request. Solr is not affected:

  • Solr's HTTP server is Jetty, not Netty. Inbound requests to Solr's REST APIs never reach a Netty decoder; SolrDispatchFilter and Jetty's own HttpParser handle every attacker-facing request.
  • The OTLP gRPC path never parses HTTP/1.x requests. gRPC traffic is HTTP/2 framed, so HttpObjectDecoder (an HTTP/1.x-only class) is never invoked by the actual trace-export traffic, and Solr's outbound gRPC client never receives an HTTP/1.x request to decode in the first place — it only ever decodes a proxy's CONNECT response, if a proxy is configured at all (an optional, non-default setup for the OTLP exporter).
  • Solr's own code never touches Netty. There are no io.netty imports anywhere in Solr's Java sources.

Since there is no attacker-reachable path where Solr (or its dependencies) ever decodes an attacker-supplied HTTP/1.0 or HTTP/1.1 request through this Netty codec, the vulnerable code is present on the classpath but not reachable in any real Solr deployment.

No released Solr version ships the fix. The fixed Netty (4.2.15.Final) is already present on the branch_9x (→ 9.11.0) and branch_10x (→ 10.1.0) development branches, but hasn't reached a released line yet.

References

CVE-2026-42580, Netty: HTTP request smuggling via chunk-size integer overflow

Status: not_affected

Affected Solr versions: 9.2.0-9.10.x,10.0.x

Description

CVE-2026-42580 (CVSS 6.5, CWE-190 / CWE-444) is a request-smuggling issue in netty-codec-http's HttpObjectDecoder: when parsing a chunked HTTP/1.1 message, the hex chunk-size field is parsed into a 32-bit int without an overflow check, so an oversized chunk-size value silently wraps around to a small (or negative) number instead of being rejected. A crafted chunk whose declared size doesn't match the bytes actually sent can desynchronize how Netty and a front-end HTTP intermediary frame the request, the same general smuggling pattern as other chunk/header parsing bugs that have affected HTTP implementations. It affects Netty before 4.1.133.Final and 4.2.0.Alpha1–4.2.12.Final; fixed in 4.1.133.Final and 4.2.13.Final.

Solr has shipped a vulnerable netty-codec-http since 9.2.0 (4.1.x through 9.9.0, 4.2.x — netty-codec-http-4.2.6.Final.jar — from 9.10.0/10.0.0 onward), arriving as a transitive runtime dependency of grpc-netty, used only by the optional opentelemetry module's OTLP gRPC exporter. HttpObjectDecoder itself isn't new at that point — earlier Solr releases (7.x through 8.2.x) already shipped this same class, bundled in the older netty-all uber-jar. This is a decoder-side bug — it only bites when Netty is parsing an inbound chunked HTTP/1.1 message, which makes Solr's exposure narrow to begin with, since Solr's own HTTP server never uses this decoder at all (see below). Solr is not affected:

  • Solr's HTTP server is Jetty, not Netty. Inbound requests to Solr's REST APIs never reach a Netty decoder at all; SolrDispatchFilter and Jetty's own HttpParser handle every attacker-facing request.
  • The OTLP gRPC path never parses chunked HTTP/1.1. gRPC traffic is HTTP/2 framed, not HTTP/1.1 chunked transfer-encoding, so HttpObjectDecoder's chunk-size parsing is never invoked by the actual trace-export traffic.
  • The only place this decoder could run is an optional proxy CONNECT response, and only if an operator has separately configured an HTTP proxy for the OTLP exporter — itself non-default, since Solr never sets any JVM-wide HTTP proxy properties itself — and only if that operator-configured, trusted proxy sent back a chunked response, which isn't how CONNECT responses are normally constructed.
  • Solr's own code never touches Netty. There are no io.netty imports anywhere in Solr's Java sources.

Since there is no attacker-reachable path where Solr (or its dependencies) ever decodes an attacker-supplied chunked HTTP/1.1 message through this Netty codec, the vulnerable code is present on the classpath but not reachable in any real Solr deployment.

No released Solr version ships the fix. The fixed Netty (4.2.15.Final) is already present on the branch_9x (→ 9.11.0) and branch_10x (→ 10.1.0) development branches, but hasn't reached a released line yet.

References

CVE-2026-42578, Netty: HTTP header injection via HttpProxyHandler CONNECT request

Status: not_affected

Affected Solr versions: 9.2.0-9.10.x,10.0.x

Description

CVE-2026-42578 (CVSS 7.5, CWE-93 / CWE-113) is a header-injection issue in io.netty:netty-handler-proxy's HttpProxyHandler, used when a Netty client tunnels a connection through an HTTP proxy via CONNECT. Its newInitialMessage() method builds the CONNECT request's headers with validation explicitly disabled (DefaultHttpHeadersFactory...withValidation(false)), then appends the caller-supplied outboundHeaders without any CRLF check — so an attacker who influences those header values can inject arbitrary headers, or split, the CONNECT request sent to the proxy. It affects Netty before 4.1.133.Final and 4.2.0.Alpha1–4.2.12.Final; fixed in 4.1.133.Final and 4.2.13.Final.

Solr has shipped a vulnerable netty-handler-proxy since 9.2.0 (4.1.x through the 9.2.0–9.9.0 line, 4.2.x — netty-handler-proxy-4.2.6.Final.jar — from 9.10.0/10.0.0 onward); Solr versions before 9.2.0 don't ship this jar. It arrives as a transitive runtime dependency of grpc-netty, used only by the optional opentelemetry module's OTLP gRPC exporter. Solr is not affected:

  • Solr never configures an HTTP/SOCKS proxy for its OTLP exporter. HttpProxyHandler is only instantiated when grpc-netty's channel is told to tunnel through a proxy — via gRPC's default ProxyDetector, which honors the JVM's standard http.proxyHost/https.proxyHost system properties. Solr sets none of this itself; a proxy tunnel (and therefore HttpProxyHandler) is only in play if an operator has separately configured JVM-wide HTTP proxy settings, which isn't Solr's default posture.
  • Even with a proxy configured, nothing attacker-controlled reaches outboundHeaders. The flaw only bites through caller-supplied header values passed into HttpProxyHandler. Any values Solr's (or grpc's) proxy path would ever supply — the collector address, proxy credentials sourced from JVM properties — are operator-configured, never derived from a client request to Solr's search APIs.
  • Solr's own code never touches Netty. There are no io.netty imports anywhere in Solr's Java sources, so nothing in Solr itself constructs or feeds data into an HttpProxyHandler.

Exploiting this requires both a non-default proxy configuration and attacker-controlled header data that Solr's OTLP export path never supplies, so the vulnerable code is present on the classpath but not reachable in any real Solr deployment.

No released Solr version ships the fix. The fixed Netty (4.2.15.Final) is already present on the branch_9x (→ 9.11.0) and branch_10x (→ 10.1.0) development branches, but hasn't reached a released line yet.

References

CVE-2026-42577, Netty: Epoll transport CPU busy-loop DoS via unclosed half-closed connections

Status: not_affected

Affected Solr versions: 9.10.x,10.0.x

Description

CVE-2026-42577 (CVSS 7.5, CWE-772) is a resource-leak / denial-of-service issue in Netty's Epoll native transport: a TCP connection that receives a RST after being half-closed isn't properly closed, so stale channels accumulate and can eventually pin the owning event-loop thread at 100% CPU. It affects Netty 4.2.0.Final up to (but not including) 4.2.13.Final — the Epoll transport code in question was introduced by the 4.2 rewrite, so the older 4.1.x line is unaffected regardless of patch version. It is fixed in 4.2.13.Final.

netty-transport-native-epoll — the modular jar this CVE concerns — has been part of Solr's dependency graph since 8.3.0 (SOLR-13665), as a transitive dependency of Apache ZooKeeper's client library (org.apache.zookeeper:zookeeper), which optionally supports a Netty-based connection socket for both its client and server roles. Older Solr releases (7.x through 8.2.x) already bundled Netty's Epoll transport code too, in the older netty-all uber-jar, but at ancient 4.0.x Netty versions — well below this CVE's affected range regardless. From 8.3.0 through 9.9.0, the modular jar stayed on Netty 4.1.x, still outside this CVE's affected range. Starting with 9.10.0 (and 10.0.0), Solr moved to Netty 4.2.6.Final, which does fall in the vulnerable range, and dependency scanners flag netty-transport-native-epoll-4.2.6.Final.jar (classifier linux-x86_64) on the classpath.

CVE-2026-42577 is not considered exploitable in typical deployments of Apache Solr. Successful exploitation requires a specific, non-default configuration together with a hostile or compromised peer on that connection:

  • ZooKeeper client TLS must be explicitly enabled, following ZooKeeper's own documented instructions — setting zookeeper.client.secure=true and zookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty (typically as JVM system properties in solr.in.sh/SOLR_OPTS), plus the corresponding zookeeper.ssl.* keystore/truststore properties. ZooKeeper's own documentation states this plainly: "SSL feature will be enabled when user plugs-in zookeeper.serverCnxnFactory, zookeeper.clientCnxnSocket as Netty" — the default plain-NIO socket (ClientCnxnSocketNIO) has no TLS support at all. This is not something Solr ships, sets, or documents in its own reference guide; it requires an operator to configure it directly via ZooKeeper's own mechanism, independent of Solr.
  • That alone is enough to make the Epoll transport reachable: ZooKeeper's Netty client (org.apache.zookeeper.common.NettyUtils) explicitly prefers the Epoll event loop over plain NIO whenever the native library is available, which it is on the common case of Linux.
  • An attacker still needs to be able to trigger the RST-after-half-close condition against that specific connection — meaning a compromised ZooKeeper ensemble member, or a network position able to manipulate that TCP connection. ZooKeeper ensemble members are ordinarily trusted, operator-controlled infrastructure, which narrows this further even when the configuration precondition is met.

Solr's default configuration never enables ZooKeeper client TLS, so ZooKeeper's client socket defaults to the plain-NIO ClientCnxnSocketNIO, and the bundled netty-transport-native-epoll jar sits completely unused on the classpath — ZooKeeper connections go through the default NIO socket, never through Netty's Epoll channel implementation, unless an operator has taken the additional step above. The other place Netty appears in Solr — the optional opentelemetry module's grpc-netty OTLP exporter — never depends on netty-transport-native-epoll at all, so it offers no alternate path to this code. No Solr code instantiates an Epoll channel directly either: there are no io.netty imports anywhere in Solr's own Java sources.

Only operators who have both enabled ZooKeeper client TLS and are exposed to a hostile or compromised ZooKeeper peer are affected. Operators who do enable ZooKeeper client TLS should treat their ZooKeeper ensemble as they would any other TLS endpoint pending an upgrade, or restrict network access to it in the interim.

No released Solr version ships the fix. The fixed Netty (4.2.15.Final) is already present on the branch_9x (→ 9.11.0) and branch_10x (→ 10.1.0) development branches, but hasn't reached a released line yet.

References

CVE-2026-41417, Netty: HTTP request smuggling via setUri() CRLF-validation bypass

Status: not_affected

Affected Solr versions: 9.2.0-9.10.x,10.0.x

Description

CVE-2026-41417 (CVSS 5.3) is a request-smuggling issue (CWE-93 / CWE-444) in Netty's HTTP/1.1 codec. DefaultHttpRequest and DefaultFullHttpRequest reject CRLF and whitespace characters in their constructors, but the setUri() method that lets a request's URI be rewritten after construction has no equivalent validation, so an attacker who controls a value later passed to setUri() can inject CRLF sequences and smuggle a second request. It affects Netty versions before 4.1.133.Final and 4.2.0.Alpha1–4.2.12.Final; it is fixed in 4.1.133.Final and 4.2.13.Final.

The netty-codec-http jar this CVE concerns was first shipped by Solr in 9.2.0 (SOLR-16532), when the optional opentelemetry module started pulling it in transitively via grpc-netty. That doesn't mean Solr had no HTTP codec classes before then, though: earlier Solr releases (7.x through 8.2.x) already shipped this same DefaultHttpRequest/DefaultFullHttpRequest code, bundled in the older netty-all uber-jar — just not as this specific modular jar. Every release since 9.2.0 has shipped a vulnerable netty-codec-http: 4.1.114.Final (before 4.1.133.Final) through the 9.2.0–9.9.0 line, and 4.2.6.Final (within the vulnerable 4.2.0.Alpha1–4.2.12.Final range, netty-codec-http-4.2.6.Final.jar) in the current 9.10.x and 10.0.x lines. So dependency scanners flag this CVE across the whole 9.2.0–10.x range. Solr is not affected:

  • Solr's own code never touches Netty. There are no io.netty imports anywhere in Solr's Java sources. Netty is a transitive dependency, not something Solr calls directly.
  • The only production path is an outbound gRPC client, not an HTTP server. The optional opentelemetry module (solr/modules/opentelemetry) pulls in io.grpc:grpc-netty to export trace spans over OTLP/gRPC to an operator-configured collector endpoint. That is a client connection Solr initiates to a trusted, configured address — Netty never parses inbound, attacker-controlled HTTP requests in this path, and nothing in that flow calls setUri() on a request built from untrusted input.
  • Solr's HTTP server is Jetty, not Netty. Inbound requests to Solr's REST APIs are handled by Jetty's servlet stack (SolrDispatchFilter); Netty is never in that request path at all.
  • The other place netty-codec-http appears is test-only. The jwt-auth module depends on it as testRuntimeOnly (required by the mock-oauth2-server test dependency), so it is not part of any shipped Solr artifact.

Since the vulnerable setUri() bypass is never exercised — Solr neither constructs nor mutates Netty HTTP requests from attacker-controlled data — the vulnerable code is present on the classpath but not in any reachable execution path.

No released Solr version ships the fix yet. On Solr's main development branch, Netty was bumped 4.2.6.Final → 4.2.12.Final (still within the vulnerable range) → 4.2.15.Final in June 2026, which is fixed — and will be released in Solr versions 9.11.0 and 10.1.

References

CVE-2026-5795, Eclipse Jetty: privilege escalation via uncleared JASPI ThreadLocals

Status: not_affected

Affected Solr versions: 7.3.0-10.0.0

Description

CVE-2026-5795 (CVSS 7.4) is a broken-access-control / privilege-escalation issue in Eclipse Jetty's JASPIAuthenticator (the JSR-196 / Jakarta Authentication "JASPI" integration). During an authentication check it sets thread-local state and, on an early return, fails to clear it, so a subsequent request served by the same pooled thread can inherit that authentication state. It affects Jetty 9.4.0–9.4.60, 10.0.0–10.0.28, 11.0.0–11.0.28, 12.0.0–12.0.33 and 12.1.0–12.1.7; it is fixed in 9.4.61, 10.0.29, 11.0.29, 12.0.34 and 12.1.8.

Apache Solr 9.x bundles an affected Jetty (jetty-server-10.0.26.jar in the current 9.x line, and Jetty 9.4.44 in earlier 9.x releases), so dependency scanners flag this CVE. Solr is not affected:

  • The vulnerable code is not shipped. JASPIAuthenticator lives in Jetty's jetty-jaspi module. Solr does not depend on jetty-jaspi — it is absent from Solr's dependency set (the build pulls in jetty-server, jetty-security, jetty-servlet, etc., but not jetty-jaspi), so the vulnerable class is not on the classpath.
  • Solr does not use JASPI. Solr authenticates requests in a servlet filter (SolrDispatchFilter) through its own AuthenticationPlugin framework (Basic, JWT, Kerberos, PKI, etc.). It never installs a Jetty SecurityHandler/Authenticator, and never the JASPI mechanism, so the vulnerable code path is unreachable even if the module were present.

Solr has bundled a Jetty version in an affected branch (≥ 9.4.0) since Solr 7.3.0 — Jetty 9.4.x through Solr 9.1, Jetty 10.0.x through Solr 9.10, and Jetty 12.0.27 in Solr 10.0.0 (below the fixed 12.0.34) — so scanners flag this CVE across Solr 7.3.0 – 10.0.0. Solr remains not affected throughout that range because it never ships the jetty-jaspi module, regardless of the bundled Jetty version.

References

CVE-2026-2332, Eclipse Jetty: HTTP/1.1 request smuggling via chunk-extension parsing

Status: exploitable

Affected Solr versions: 7.3.0-10.0.0

Description

CVE-2026-2332 (CVSS 9.1) is an HTTP request-smuggling issue (CWE-444) in Eclipse Jetty's HTTP/1.1 parser: the chunk-extension parser stops at a \r\n inside a quoted string instead of treating it as an error, so a crafted chunk extension can desynchronize request boundaries between Jetty and a front-end HTTP intermediary. It affects Jetty 9.4.0–9.4.59, 10.0.0–10.0.27, 11.0.0–11.0.27, 12.0.0–12.0.32 and 12.1.0–12.1.6; it is fixed in 9.4.60, 10.0.28, 11.0.28, 12.0.33 and 12.1.7.

Unlike optional Jetty features (for example the JASPI authenticator), this is core request-parsing code. Solr embeds Jetty as its HTTP server and bundles the vulnerable jetty-http module (HttpParser) — jetty-http-10.0.26.jar in the Solr 9.x line, and Jetty 9.4.44 in earlier 9.x releases. Solr does not replace Jetty's wire-level HTTP parser, and it accepts chunked request bodies, so the vulnerable parser handles incoming requests and the code path is reachable.

Exploitability depends on a fronting proxy

Request smuggling is a desynchronization attack: it requires a second HTTP processor in front of Jetty that parses the crafted chunk extension differently. It is therefore only exploitable when Solr is deployed behind an HTTP intermediary — a reverse proxy, load balancer, TLS terminator, or API gateway — that disagrees with Jetty on request boundaries. This is a common Solr deployment, because operators frequently front Solr with such a proxy to add TLS and authentication. A Solr instance that is not fronted by a mis-parsing intermediary has no second parser to desync against, so this particular attack does not apply to it.

The most damaging scenario is when that fronting proxy is the only security boundary (it enforces authentication or restricts which Solr paths are reachable): a smuggled request rides past the proxy and reaches Solr's APIs directly, bypassing those controls.

Mitigation

  • Use a re-encoding reverse proxy. A reverse proxy that fully parses and re-encodes the HTTP/1.1 request body before forwarding to Jetty eliminates the attack at the network boundary: the proxy reads the attacker's malformed chunk extensions, then emits a clean, standards-conformant chunked (or Content-Length) request to Solr. No attacker-controlled chunk extension survives the trip, so Jetty never sees the malformed framing that triggers the desynchronization. nginx (proxy_pass in HTTP mode) and HAProxy (in http mode) both re-encode by default. Proxies configured in TCP pass-through or tunnel mode (e.g., HAProxy tcp mode, nginx stream) do not re-encode and do not mitigate this CVE.
  • Enable Solr's built-in authentication and authorization. Solr enforces access control in its own servlet filter (SolrDispatchFilter / the AuthenticationPlugin framework), not at the Jetty layer, so a request smuggled past a front-end proxy still has to pass Solr's own authentication and authorization. Enabling them removes the "proxy is the only gate" exposure that makes this attack most severe. (This is a mitigating control, not a complete fix — it does not eliminate cross-connection effects such as request hijacking or response desync.)
  • Upgrade the bundled Jetty to a patched release (≥ 10.0.28 on the 10.0.x line), which is the full fix, however that requires commercial support. See https://webtide.com/end-of-life/ for options.

Solr has bundled a Jetty version in an affected branch (≥ 9.4.0) since Solr 7.3.0 — Jetty 9.4.x through Solr 9.1, Jetty 10.0.x through Solr 9.10, and Jetty 12.0.27 in Solr 10.0.0 (which is still below the fixed 12.0.33). Earlier releases shipped Jetty 9.2.x/9.3.x or 8.1.x, which pre-date the affected 9.4.0 branch. The affected range is therefore 7.3.0 – 10.0.0; no released Solr yet bundles a fixed Jetty (≥ 10.0.28 / 12.0.33).

References

CVE-2025-11143, Eclipse Jetty: differential URI parsing can bypass front-end URI controls

Status: not_affected

Affected Solr versions: 7.3.0-10.0.0

Description

CVE-2025-11143 (CVSS 6.5; 3.7 per the Eclipse Foundation) is an improper-input-validation issue (CWE-20) in Eclipse Jetty's URI parser (HttpURI): it interprets some invalid or unusual URIs differently from other common HTTP parsers. When a component in front of Jetty parses the same URI differently, an attacker can craft a malformed URI to bypass URI-based security controls (such as path allow/deny lists) or to reveal implementation details. It affects Jetty 9.4.0–9.4.58, 10.0.0–10.0.26, 11.0.0–11.0.26, 12.0.0–12.0.30 and 12.1.0–12.1.4; it is fixed in 9.4.59, 10.0.27, 11.0.27, 12.0.31 and 12.1.5.

CVE-2025-11143 is not considered exploitable in production deployments of Apache Solr. Successful exploitation requires a specific, non-recommended configuration — all of the following conditions must be true:

  • Solr must be deployed behind an HTTP intermediary (reverse proxy, load balancer, or API gateway) that enforces URI-based access rules (for example, blocking /solr/admin/* at the proxy layer).
  • That intermediary must be the sole security gate — Solr's own authentication and authorization must not be enabled.

Why Solr auth is a complete fix

This is a differential-parsing issue: it only has security impact when a front-end proxy makes an access-control decision based on its own URI interpretation and Solr has no independent access control of its own. Solr enforces access control in its own servlet filter (SolrDispatchFilter / the AuthenticationPlugin framework) after Jetty has parsed the URI. Because Solr's auth layer operates on the same already-resolved path that Jetty produced, it cannot be confused by differential proxy/Jetty parsing — the bypass that the proxy grants does not help an attacker get past Solr's own auth. Enabling Solr auth provides complete protection, not merely a mitigating control. (This distinguishes CVE-2025-11143 from request-smuggling issues such as CVE-2026-2332, where Solr auth reduces impact but does not eliminate all cross-connection effects.)

The Apache Solr project considers authentication and authorization a prerequisite for any production-secure deployment and explicitly warns against relying on network-perimeter controls as the sole access mechanism. A deployment without Solr auth that relies on a proxy's URI rules as its only security boundary is therefore outside the project's supported production configuration.

Solr has bundled a Jetty version in an affected branch (≥ 9.4.0) since Solr 7.3.0 — Jetty 9.4.x through Solr 9.1, Jetty 10.0.x through Solr 9.10, and Jetty 12.0.27 in Solr 10.0.0 (below the fixed 12.0.31) — so scanners flag this CVE across Solr 7.3.0 – 10.0.0. As explained above, Solr is not affected in a supported (authenticated) configuration throughout that range.

References

CVE-2026-42440, Apache OpenNLP: Out-of-memory denial of service via crafted model file

Status: exploitable

Affected Solr versions: 7.3.0-10.0.0

Description

CVE-2026-42440 (CVSS 7.5) is an out-of-memory denial-of-service issue in Apache OpenNLP's binary model reader. The AbstractModelReader methods getOutcomes(), getOutcomePatterns() and getPredicates() read a 32-bit signed integer count field from a binary model stream and pass it directly to an array allocation without validating it. An attacker who can supply a crafted .bin model file with a count set to Integer.MAX_VALUE triggers an immediate OutOfMemoryError during model deserialization, before any substantial data is consumed.

The vulnerable code is present in the opennlp-tools-1.9.4.jar that Solr pulls in transitively via lucene-analysis-opennlp (Lucene 9.12.3). The issue is fixed upstream in OpenNLP 2.5.9 (and 3.0.0-M3), and backported to the end-of-life 1.9.x line as opennlp-tools-1.9.5; all of these validate the count against an upper bound (default 10,000,000, configurable via the OPENNLP_MAX_ENTRIES system property) before allocating.

When Solr is exposed

OpenNLP is not part of a default Solr installation, but it is exploitable once the OpenNLP-backed modules are enabled. The vulnerable model-loading code path becomes reachable when:

  • The analysis-extras and/or langid modules are enabled — they are not loaded by default.
  • OpenNLP analysis components or update processors are configured to load OpenNLP model files (the schema-configured OpenNLP analyzers — tokenizer, POS, chunker, lemmatizer, name-finder — or the langid / analysis-extras update processors).

Any deployment that enables these modules and loads an OpenNLP model an attacker can influence is exploitable. A deployment that does not enable them never deserializes an OpenNLP model and is not exposed.

Mitigation

The most reliable mitigation is to not enable the OpenNLP-backed analysis-extras or langid modules unless they are required. If you do use OpenNLP, load model files only from locations you fully control and never from untrusted or user-supplied sources.

This flaw is present in every OpenNLP release before 2.5.9. Solr has bundled OpenNLP (transitively, via lucene-analysis-opennlp) since Solr 7.3.0, so every release from 7.3.0 through 10.0.0 ships an affected version (1.8.3 through 2.5.6). The affected range is therefore 7.3.0 – 10.0.0.

Fixed in Solr 9.11, which bundles the patched opennlp-tools 1.9.5, and in Solr 10.1, which upgrades the bundled OpenNLP (via lucene-analysis-opennlp) to 2.5.9. Solr 10.0 remains affected (it ships OpenNLP 2.5.6).

References

CVE-2026-42027, Apache OpenNLP: Arbitrary class instantiation via model manifest

Status: exploitable

Affected Solr versions: 7.3.0-10.0.0

Description

CVE-2026-42027 (CVSS 9.8) is an arbitrary class instantiation issue in Apache OpenNLP's ExtensionLoader. The instantiateExtension(Class, String) method loads a class named in a model archive's manifest.properties via Class.forName() and only performs its isAssignableFrom type check after the class has been loaded. Because Class.forName() runs the target class's static initializer at load time, an attacker who can supply a crafted model archive can trigger the static initializer of any class on the classpath (e.g. one that performs a JNDI lookup, outbound network I/O, or filesystem access), regardless of the type check that follows.

The vulnerable code is present in the opennlp-tools-1.9.4.jar that Solr pulls in transitively via lucene-analysis-opennlp (Lucene 9.12.3). There is a opennlp-tools-1.9.5 release happening, but it hasn't finished or been integrated into Solr 9; the issue is fixed in OpenNLP 2.5.9 (and 3.0.0-M3), which consults a package-prefix allowlist before calling Class.forName().

When Solr is exposed

OpenNLP is not part of a default Solr installation, but it is exploitable once the OpenNLP-backed modules are enabled. The vulnerable code path becomes reachable when:

  • The analysis-extras and/or langid modules are enabled — they are not loaded by default.
  • OpenNLP analysis components or update processors are configured to load model files.

Any deployment that enables these modules and loads an OpenNLP model an attacker can influence is exploitable. A deployment that does not enable them never invokes ExtensionLoader and is not exposed.

Mitigation

The most reliable mitigation is to not enable the OpenNLP-backed analysis-extras or langid modules unless they are required. If you do use OpenNLP, load model files only from locations you fully control and never from untrusted or user-supplied sources.

In Solr 9.11.0 the upstream allowlist defense is backfilled at the application layer, since the vulnerable jar cannot yet be upgraded (Solr must track the OpenNLP version used by lucene-analysis-opennlp). Every OpenNLP model is loaded as a resource through Solr's resource loaders, so the archive is validated at that single chokepoint before OpenNLP is allowed to deserialize it:

  • The archive is opened as a ZIP and every class name it declares — the manifest.properties factory entry and any class referenced from embedded feature-generator XML descriptors — must resolve under the opennlp. package prefix.
  • A model that names a class outside that prefix is rejected and never reaches ExtensionLoader, so no attacker-controlled static initializer can run.
  • Validation covers both standalone (filesystem configset) and SolrCloud (ZooKeeper) deployments, and applies whether the model is loaded by the langid / analysis-extras update processors or by the schema-configured OpenNLP analyzers (tokenizer, POS, chunker, lemmatizer, name-finder).

Solr's own usage only ever references built-in opennlp.* factories, so legitimate models load unchanged; only crafted models that try to instantiate arbitrary classes are blocked.

This flaw is present in every OpenNLP release before 2.5.9 (fixed in 2.5.9 / 3.0.0-M3, backported to 1.9.5). Solr has bundled OpenNLP (transitively, via lucene-analysis-opennlp) since Solr 7.3.0, so every release from 7.3.0 through 10.0.0 ships an affected version (1.8.3 through 2.5.6). The affected range is therefore 7.3.0 – 10.0.0.

Fully resolved in Solr 10.1 by upgrading the bundled OpenNLP (via lucene-analysis-opennlp) to 2.5.9.

References

CVE-2026-40682, Apache OpenNLP: XXE in dictionary parsing

Status: exploitable

Affected Solr versions: 7.3.0-10.0.0

Description

CVE-2026-40682 (CVSS 9.1) is an XML External Entity (XXE) vulnerability in Apache OpenNLP's dictionary parsing. The DictionaryEntryPersistor class and the public Dictionary(InputStream) constructor create a SAX parser without enabling FEATURE_SECURE_PROCESSING or disabling DTD processing, so external entity resolution and DOCTYPE declarations remain fully enabled. An attacker who can supply a crafted dictionary file — either directly or embedded in a model archive that OpenNLP deserializes — can therefore read local files from the server or trigger outbound requests (server-side request forgery). Other OpenNLP XML parsing paths route through the hardened XmlUtil.createSaxParser() helper, but this code path does not.

The vulnerable code is present in the opennlp-tools-1.9.4.jar that Solr pulls in transitively via lucene-analysis-opennlp (Lucene 9.12.3). There is a opennlp-tools-1.9.5 release happening, but it hasn't finished or been integrated into Solr 9; the issue is fixed in OpenNLP 2.5.9 (and 3.0.0-M3), which parse dictionaries with secure XML processing that rejects DOCTYPE declarations and external entities.

When Solr is exposed

OpenNLP is not part of a default Solr installation, but it is exploitable once the OpenNLP-backed modules are enabled. The vulnerable dictionary-parsing code path becomes reachable when:

  • The analysis-extras and/or langid modules are enabled — they are not loaded by default.
  • OpenNLP analysis components or update processors are configured to load OpenNLP model or dictionary files (the schema-configured OpenNLP analyzers — tokenizer, POS, chunker, lemmatizer, name-finder — or the langid / analysis-extras update processors).

Any deployment that enables these modules and parses an OpenNLP model or dictionary an attacker can influence is exploitable. A deployment that does not enable them never parses an OpenNLP dictionary and is not exposed.

Mitigation

The most reliable mitigation is to not enable the OpenNLP-backed analysis-extras or langid modules unless they are required. If you do use OpenNLP, load model and dictionary files only from locations you fully control, since the bundled OpenNLP 1.9.4 does not disable external entities when parsing dictionaries.

Every OpenNLP model and dictionary is loaded as a resource through Solr's resource loaders, so the archive passes through a single chokepoint before OpenNLP is allowed to deserialize it. This applies to both standalone (filesystem configset) and SolrCloud (ZooKeeper) deployments, and whether the dictionary is loaded by the langid / analysis-extras update processors or by the schema-configured OpenNLP analyzers.

This flaw is present in every OpenNLP release before 2.5.9 (fixed in 2.5.9 / 3.0.0-M3, backported to 1.9.5). Solr has bundled OpenNLP (transitively, via lucene-analysis-opennlp) since Solr 7.3.0, so every release from 7.3.0 through 10.0.0 ships an affected version (1.8.3 through 2.5.6). The affected range is therefore 7.3.0 – 10.0.0.

Fully resolved in Solr 10.1 by upgrading the bundled OpenNLP (via lucene-analysis-opennlp) to 2.5.9.

References

CVE-2026-34481, Apache Log4j JSON Template Layout: Invalid JSON for non-finite floating-point values

Published:

Status: not_affected

Affected Solr versions: 9.10.1, 10.0.0

Description

CVE-2026-34481 is not considered exploitable in any deployment of the Apache Solr binary distribution. Successful exploitation requires the application to log a MapMessage (or one of its subclasses) carrying a non-finite floating-point value (NaN, Infinity or -Infinity) through JsonTemplateLayout, which the layout then serializes as invalid JSON, in breach of RFC 8259.

Producing a MapMessage requires application code, and users of the binary distribution run only the code shipped by Apache Solr. A scan of the bytecode of all JAR files in the distribution confirms that the MapMessage family (MapMessage, StringMapMessage and StructuredDataMessage) is referenced only inside Log4j's own JARs. Neither Solr nor any of its bundled dependencies ever constructs or logs such a message.

Because no shipped code can hand a triggering value to the layout, the vulnerable code path cannot be reached regardless of the configured layout, and the Solr community considers this vulnerability non-exploitable in the binary distribution.

References

CVE-2026-34480, Apache Log4j Core: Invalid XML output from XmlLayout

Published:

Status: not_affected

Affected Solr versions: 9.10.1, 10.0.0

Description

CVE-2026-34480 is not considered exploitable in typical deployments of Apache Solr. Successful exploitation requires a specific, non-default logging configuration. The following conditions must all be met:

  • The Log4j configuration is modified to write events through XmlLayout.
  • A log message or MDC value contains characters forbidden by the XML 1.0 specification.

When triggered, the layout produces malformed XML, which downstream log processors may reject: silently with the JRE built-in StAX, or by dropping the event with alternative implementations such as Woodstox.

None of the Log4j configuration files shipped in the Solr 9.10.1 binary distribution reference XmlLayout. They only use PatternLayout, so the vulnerable code path is never reached. The MDC values that Solr populates (collection, shard, replica, core and node names, plus a trace id) are not emitted as XML either.

A configuration that does meet the conditions above looks like this:

<Appenders>
  <RollingFile name="xml" fileName="${sys:solr.log.dir}/solr-events.xml"
               filePattern="${sys:solr.log.dir}/solr-events.xml.%i">
    <XmlLayout/>
  </RollingFile>
</Appenders>

Operators who do configure XmlLayout should replace the vulnerable JAR file (server/lib/ext/log4j-core-2.25.3.jar) with log4j-core-2.25.4.jar.

References

CVE-2026-34479, Apache Log4j 1.x bridge: Malformed XML output from Log4j1XmlLayout

Published:

Status: not_affected

Affected Solr versions: 9.10.1, 10.0.0

Description

CVE-2026-34479 is not considered exploitable in typical deployments of Apache Solr. Successful exploitation requires a specific, non-default logging configuration. The following conditions must all be met:

  • The Log4j 1-to-Log4j 2 bridge emits logs through Log4j1XmlLayout, either configured directly in a Log4j 2 configuration or selected as org.apache.log4j.xml.XMLLayout through the Log4j 1 compatibility layer.
  • The logged data contains characters forbidden by the XML 1.0 specification.

The log4j-1.2-api JAR is shipped so that third-party libraries that still call the Log4j 1 API keep working. However, Solr is configured through Log4j 2 configuration files that only use PatternLayout, and the distribution ships no Log4j 1 (log4j.properties or log4j.xml) configuration file, so the vulnerable layout is never instantiated.

A configuration that does meet the conditions above looks like this:

<Appenders>
  <File name="xml" fileName="${sys:solr.log.dir}/solr-events.xml">
    <Log4j1XmlLayout/>
  </File>
</Appenders>

Operators who use legacy Log4j 1 configuration files or Log4j1XmlLayout should replace the vulnerable JAR file (server/lib/ext/log4j-1.2-api-2.25.3.jar) with log4j-1.2-api-2.25.4.jar. Support for Log4j1XmlLayout and legacy Log4j 1 configuration files may be removed in a future Solr release, so migrating to a native Log4j 2 configuration is recommended.

References

CVE-2026-34478, Apache Log4j Core: Log injection via CRLF sequences in Rfc5424Layout

Published:

Status: not_affected

Affected Solr versions: 9.10.1, 10.0.0

Description

CVE-2026-34478 is not considered exploitable in typical deployments of Apache Solr. Successful exploitation requires a specific, non-default logging configuration. The following conditions must all be met:

  • The Log4j configuration is modified to send logs to a stream-based (TCP or TLS) syslog service using Rfc5424Layout directly.
  • An attacker is able to inject CRLF sequences into the logged data.

Because the newLineEscape and useTlsMessageFormat attributes were silently renamed in Log4j Core 2.21.0, newline escaping stopped working and TLS framing was downgraded to plain TCP, leaving such configurations exposed to CRLF log injection.

None of the Log4j configuration files shipped in the Solr 9.10.1 binary distribution reference Rfc5424Layout. They only use PatternLayout, so the issue cannot be triggered. Users of the Syslog appender are not affected either, since its attributes were not renamed.

A configuration that does meet the conditions above looks like this:

<Appenders>
  <Socket name="syslog" host="logs.example.com" port="601" protocol="TCP">
    <Rfc5424Layout appName="Solr" newLineEscape="\\n"/>
  </Socket>
</Appenders>

Operators who do configure Rfc5424Layout should either:

  • replace newLineEscape with escapeNL and useTlsMessageFormat with useTLSMessageFormat (note the capitalization), or
  • replace the vulnerable JAR file (server/lib/ext/log4j-core-2.25.3.jar) with log4j-core-2.25.4.jar.

References

CVE-2026-34477, Apache Log4j Core: TLS hostname verification silently ignored in Socket, SMTP and Syslog appenders

Published:

Status: not_affected

Affected Solr versions: 9.10.1, 10.0.0

Description

CVE-2026-34477 is not considered exploitable in typical deployments of Apache Solr. Successful exploitation requires a specific, non-default logging configuration together with a privileged network position. The following conditions must all be met:

  • The Log4j configuration is modified to add an SMTP, Socket or Syslog appender that ships logs over TLS through a nested <Ssl> element.
  • That appender relies on the verifyHostName attribute to authenticate the remote receiver, which was silently ignored through Log4j Core 2.25.3.
  • A man-in-the-middle attacker can intercept the connection and present a certificate issued by a CA trusted by the configured (or default) trust store.

None of the Log4j configuration files shipped in the Solr 9.10.1 binary distribution define such an appender. They only use Console and RollingRandomAccessFile appenders, which open no network connection, so no TLS hostname verification ever takes place. The HTTP appender is not affected either, as it uses a separate verifyHostname attribute that verifies host names by default.

A configuration that does meet the conditions above looks like this:

<Appenders>
  <Socket name="remote" host="logs.example.com" port="6514">
    <!-- verifyHostName="true" was silently ignored through 2.25.3 -->
    <Ssl verifyHostName="true">
      <KeyStore location="..." password="..."/>
      <TrustStore location="..." password="..."/>
    </Ssl>
    <PatternLayout pattern="%m%n"/>
  </Socket>
</Appenders>

Operators who do configure TLS network appenders should replace the vulnerable JAR file (server/lib/ext/log4j-core-2.25.3.jar) with log4j-core-2.25.4.jar.

References

CVE-2025-48924, Apache Commons Lang: uncontrolled recursion in ClassUtils.getClass

Status: not_affected

Affected Solr versions: 9.0.0-9.9.0

Description

CVE-2025-48924 is an uncontrolled-recursion issue in Apache Commons Lang's ClassUtils.getClass(...): a very long, deeply-nested class name can exhaust the stack and throw StackOverflowError. It affects commons-lang3 from 3.0 up to (but not including) 3.18.0, so dependency scanners flag the commons-lang3 JAR bundled in Solr 9.x (which ships versions 3.12.0 through 3.15.0 across the 9.0–9.9 line).

Solr is not affected. The vulnerable ClassUtils.getClass(...) code path is only reachable via commons-configuration2, which Solr uses solely in its Hadoop Kerberos support (solr-hadoop-auth) to load administrator-provided Hadoop configuration files. Class names are not attacker-controlled in that path, so the recursion cannot be driven by an adversary and the vulnerability is not exploitable in Solr.

References

CVE-2024-7254, protobuf-java: Potential Denial of Service issue

Published:

Status: in_triage

Affected Solr versions: 4.4.0-9.9.0

Description

When parsing unknown fields in the Protobuf Java Lite and Full library, a maliciously crafted message can cause a StackOverflow error and lead to a program crash.

CVE-2024-7254 affects all protobuf-java releases before 3.25.5 (per the upstream advisory the flaw was introduced at version 0, and is fixed in 3.25.5 / 4.27.5 / 4.28.2). Apache Solr has bundled protobuf-java (transitively, via Hadoop and ZooKeeper) since Solr 4.4.0 (which shipped 2.4.0a), and every release from 4.4.0 through 9.9.0 ships an affected version (2.4.0a through 3.25.3). Solr 9.10.0 was the first release to ship a fixed protobuf-java (3.25.8), so the affected range is 4.4.0 – 9.9.0.

References

CVE-2024-51504, Apache ZooKeeper: Authentication bypass with IP-based authentication in Admin Server

Published:

Status: not_affected

Affected Solr versions: 9.4.0-9.8.1

Description

CVE-2024-51504 is not considered exploitable in typical production deployments of Apache Solr. Successful exploitation requires a very specific and non-standard configuration. The following conditions must all be met:

  • Solr must be deployed in SolrCloud mode, which relies on ZooKeeper for coordination.
  • The embedded ZooKeeper server must be in use: a setup that is explicitly discouraged for production. Solr emits a warning when this configuration is detected, and it is not commonly used outside of development or experimentation.
  • The ZooKeeper Admin Server must be manually enabled in the ZooKeeper configuration file (server/solr/zoo.cfg). By default, this feature is disabled:
# Disable ZK AdminServer since we do not use it
admin.enableServer=false

Because these conditions are highly unlikely in secure, production-grade environments, the Solr community considers this vulnerability non-exploitable under standard operating conditions.

References

CVE-2024-6763, jetty-http

Status: not_affected

Affected Solr versions: 4.0.0-9.10.1

Description

CVE-2024-6763 is an improper-input-validation issue in Eclipse Jetty's HttpURI parser, affecting Jetty from 7.0.0 up to (but not including) 12.0.12 (fixed in 12.0.12, with a 9.4.57 backport on the still-supported 9.4.x branch). Solr bundles Jetty as its HTTP server, so scanners flag this CVE on every Solr release whose Jetty predates 12.0.12 — Jetty 8.1.x/9.4.x/10.0.x from Solr 4.0.0 through Solr 9.10.1. Solr 10.0.0 ships Jetty 12.0.27 (≥ 12.0.12) and is not affected. The affected range is therefore 4.0.0 – 9.10.1.

Solr is not affected: it does not use the Jetty "HttpURI" utility class necessary for the vulnerability.

References

CVE-2025-24814, Apache Solr: Core-creation with "trusted" configset can use arbitrary untrusted files

Published:

Status: exploitable

Affected Solr versions: 4.8.0-9.7.0

Description

Core creation allows users to replace "trusted" configset files with arbitrary configuration

Solr instances are vulnerable if they:

  1. use the FileSystemConfigSetService component (the default in "standalone" or "user-managed" mode), and
  2. run without authentication and authorization enabled

In this configuration, attackers can exploit a privilege escalation issue by replacing individual "trusted" configset files with potentially untrusted files from elsewhere on the filesystem. These replacements are incorrectly treated as "trusted" and can leverage <lib> tags to add arbitrary code to Solr's classpath, potentially allowing malicious plugins or components to be loaded.

This issue affects all Apache Solr versions up through Solr 9.7. The vulnerable behavior lives in the filesystem-backed config-set service used in standalone / user-managed mode — named FileSystemConfigSetService since Solr 9.0.0 (SOLR-15258), but present as its functional predecessor ConfigSetService.Standalone all the way back to Solr 4.8.0 (SOLR-4478). The affected range is therefore 4.8.0 – 9.7.0; Solr 9.8.0 mitigates it by disabling <lib> tags by default.

Mitigation

Users can protect against the vulnerability by enabling authentication and authorization on their Solr clusters or switching to SolrCloud (and away from "FileSystemConfigSetService"). Users are also recommended to upgrade to Solr 9.8.0, which mitigates this issue by disabling use of "" tags by default.

Credit

pwn null (reporter)

References

CVE-2023-51074, GHSA-pfh2-hfmq-phg5, json-path

Status: not_affected

Affected Solr versions: 8.1.0-9.5.0

Description

The only places we use json-path is for querying (via Calcite) and for transforming/indexing custom JSON. Since the advisory describes a problem that is limited to the current thread, and users that are allowed to query/transform/index are already trusted to cause load to some extent, this advisory does not appear to have impact on the way json-path is used in Solr.

CVE-2023-51074 affects json-path 2.2.0 through 2.8.0 (fixed in 2.9.0). Solr first bundled json-path in Solr 8.1.0 (2.4.0) and shipped an affected version — 2.4.0, then 2.7.0, then 2.8.0 — through Solr 9.5.0; Solr 9.6.0 upgraded to the fixed 2.9.0. The affected range is therefore 8.1.0 – 9.5.0.

References

CVE-2022-42889, commons-text (Text4Shell)

Status: not_affected

Affected Solr versions: 8.1.0-9.0.0

Description

CVE-2022-42889 ("Text4Shell") is a code-execution issue in Apache Commons Text: from version 1.5 through 1.9, the default StringSubstitutor interpolators included script, dns and url lookups that could execute arbitrary code (fixed in 1.10.0). Solr bundled an affected commons-text in 8.1.0 (1.6) through 9.0.0 (1.8); Solr 8.0.0 shipped 1.4 (before the flaw was introduced) and Solr 9.1.0 upgraded to the fixed 1.10.0. The affected range is therefore 8.1.0 – 9.0.0.

Solr uses commons-text directly (StringEscapeUtils.escapeEcmaScript) in LoadAdminUiServlet that is not vulnerable. Solr also has a "hadoop-auth" module that uses Apache Hadoop which uses commons-text through commons-configuration2. For Solr, the concern is limited to loading Hadoop configuration files that would only ever be provided by trusted administrators, not externally (untrusted).

References

CVE-2022-39135, calcite

Status: exploitable

Affected Solr versions: 6.5-8.11.2, 9.0

Description

Apache Calcite has a vulnerability, CVE-2022-39135, that is exploitable in Apache Solr in SolrCloud mode. If an untrusted user can supply SQL queries to Solr's '/sql' handler (even indirectly via proxies / other apps), then the user could perform an XML External Entity (XXE) attack. This might have been exposed by some deployers of Solr in order for internal analysts to use JDBC based tooling, but would have unlikely been granted to wider audiences.

References

CVE-2022-33980, commons-configuration2

Status: not_affected

Affected Solr versions: 9.0.0

Description

CVE-2022-33980 is a code-execution issue in Apache Commons Configuration: versions 2.4 through 2.7 performed variable interpolation with script, dns and url lookups enabled by default (fixed in 2.8.0). Only Solr 9.0.0 shipped an affected version (commons-configuration2 2.7); Solr 8.x shipped 2.1.1 (before the flaw was introduced) and Solr 9.1.0 upgraded to the fixed 2.8.0. The affected version is therefore 9.0.0 only.

Solr uses commons-configuration2 for "hadoop-auth" only (for Kerberos). It is only used for loading Hadoop configuration files that would only ever be provided by trusted administrators, not externally (untrusted).

References

CVE-2022-25168, hadoop-common

Status: not_affected

Affected Solr versions: 4.4.0-9.0.0

Description

CVE-2022-25168 is a command-injection flaw in Apache Hadoop's FileUtil.unTar(...), which fails to escape the input filename before passing it to a shell. It affects hadoop-common 2.0.0–2.10.1, 3.0.0-alpha–3.2.3 and 3.3.0–3.3.2 (fixed in 2.10.2, 3.2.4 and 3.3.3). Solr has bundled an affected hadoop-common (transitively, for HDFS support) since Solr 4.4.0, through Solr 9.0.0 (which ships 3.3.2); Solr 9.1.0 upgraded to the fixed 3.3.4. The affected range is therefore 4.4.0 – 9.0.0.

The vulnerable code won't be used by Solr because Solr only is only using HDFS as a client.

References

CVE-2021-45105, CVE-2021-45046, log4j-core

Status: not_affected

Affected Solr versions: 7.4-8.11.1

Description

The MDC data used by Solr are for the collection, shard, replica, core and node names, and a potential trace id, which are all sanitized. Furthermore, Solr's default log configuration doesn't use double-dollar-sign and we don't imagine a user would want to do that.

References

CVE-2021-44832, log4j-core

Status: not_affected

Affected Solr versions: 7.4-8.11.1

Description

Solr's default log configuration doesn't use JDBCAppender and we don't imagine a user would want to use it or other obscure appenders.

References

CVE-2021-33813, jdom / jdom2 XXE

Status: not_affected

Affected Solr versions: 3.6.0-8.8.1

Description

CVE-2021-33813 is an XML external entity (XXE) issue in JDOM's SAXBuilder, affecting all JDOM releases up to and including 2.0.6 (fixed in 2.0.6.1). Solr has bundled JDOM (transitively, via Apache Tika / Solr Cell) since Solr 3.6.0 — jdom 1.0, then jdom 2.0.2, then jdom2 2.0.6 — through the last 8.x release; Solr 9.0.0 upgraded to the fixed jdom2 2.0.6.1. The affected range is therefore 3.6.0 – 8.8.1.

JDOM is only used in Solr Cell, which should not be used in production which makes the vulnerability unexploitable. It is a dependency of Apache Tika, which has analyzed the issue and determined the vulnerability is limited to two libraries not commonly used in search applications, see TIKA-3488 for details. Since Tika should be used outside of Solr, use a version of Tika which updates the affected libraries if concerned about exposure to this issue.

References

CVE-2020-27223, jetty-9.4.6 to 9.4.36

Status: not_affected

Affected Solr versions: 7.3.0-8.x

Description

Only exploitable if Solr's webapp directory is deployed as a symlink, which is not Solr's default.

References

CVE-2020-27218, jetty-9.4.0 to 9.4.34

Status: not_affected

Affected Solr versions: 7.3.0-8.8.0

Description

Only exploitable through use of Jetty's GzipHandler, which is only implemented in Embedded Solr Server.

References

CVE-2020-13955, avatica-core

Status: not_affected

Affected Solr versions: 8.1.0-8.x

Description

Solr's SQL adapter does not use the vulnerable class "HttpUtils". Calcite only used it to talk to Druid or Splunk.

References

CVE-2019-16869, netty-all

Status: not_affected

Affected Solr versions: 8.2-8.3

Description

This is not included in Solr but is a dependency of ZooKeeper 3.5.5. The version was upgraded in ZooKeeper 3.5.6, included with Solr 8.3. The specific classes mentioned in the CVE are not used in Solr (nor in ZooKeeper as far as the Solr community can determine).

References

CVE-2019-10241, CVE-2019-10247, jetty

Status: not_affected

Affected Solr versions: 7.7.0-8.2

Description

Solr upgraded to Jetty 9.4.19 for the 8.2 release. Additionally, the path to exploit these vulnerabilities was fixed in 8.1 and 7.7.2. Earlier versions can manually patch their configurations as described in SOLR-13409.

References

CVE-2019-10086, commons-beanutils

Status: not_affected

Affected Solr versions: 8.0.0-8.3.0

Description

While commons-beanutils was removed in 7.5, it was added back in 8.0 in error and removed again in 8.3. The vulnerable class was not used in any Solr code path. This jar remains a dependency of both Velocity and hadoop-common, but Solr does not use it in our implementations.

References

CVE-2018-8088, slf4j-api

Status: not_affected

Affected Solr versions: 4.x-9.1

Description

The reported CVE impacts org.slf4j.ext.EventData, which is not used in Solr.

References

CVE-2018-1471, simple-xml

Status: not_affected

Affected Solr versions: 5.4.0-7.7.2, 8.0-8.3

Description

Dependency of Carrot2 and used during compilation, not at runtime (see SOLR-769. This .jar was replaced in Solr 8.3 and backported to 7.7.3 (see SOLR-13779).

References

CVE-2018-1335, tika-core.1.17

Status: not_affected

Affected Solr versions: 7.3.1-7.5.0

Description

Solr does not run tika-server, so this is not a problem.

References

CVE-2018-10237, carrot2-guava

Status: not_affected

Affected Solr versions: 5.4.0-8.x

Description

Only used with the Carrot2 clustering engine.

References

CVE-2018-10237, guava-*

Status: not_affected

Affected Solr versions: 4.6.0-8.x

Description

Only used in tests.

References

CVE-2018-1000056, junit

Status: not_affected

Affected Solr versions: 4.6.0-7.6.0

Description

JUnit only used in tests; CVE only refers to a Jenkins plugin not used by Solr.

References

CVE-2017-15718, hadoop-auth

Status: not_affected

Affected Solr versions: 6.6.1-7.6.0

Description

Does not impact Solr because Solr uses Hadoop as a client library.

References

CVE-2017-15095, CVE-2017-17485, CVE-2017-7525, CVE-2018-5968, CVE-2018-7489, CVE-2019-12086, CVE-2019-12384, CVE-2018-12814, CVE-2019-14379, CVE-2019-14439, CVE-2020-35490, CVE-2020-35491, CVE-2021-20190, CVE-2019-14540, CVE-2019-16335, jackson-databind-*

Status: not_affected

Affected Solr versions: 4.7.0-8.x

Description

These CVEs, and most of the known jackson-databind CVEs since 2017, are all related to problematic 'gadgets' that could be exploited during deserialization of untrusted data. The Jackson developers described 4 conditions that must be met in order for a problematic gadget to be exploited. See https://medium.com/@cowtowncoder/on-jackson-cves-dont-panic-here-is-what-you-need-to-know-54cd0d6e8062. Solr's use of jackson-databind does not meet 1 of the 4 conditions described which makes these CVEs unexploitable. The specific condition that Solr does not meet is the 3rd one: 'Enable polymorphic type handling' Solr does not include any polymorphic type handling, and Solr does not configure jackson-databind de/serialization to expect or include class names in serialized JSON. Two CVEs, 2019-14540 & 2019-16335, are related to HikariConfig and HikariDataSource classes, neither of which are used in Solr's code base.

References

CVE-2017-14952, icu4j

Status: not_affected

Affected Solr versions: 6.0.0-7.5.0

Description

Issue applies only to the C++ release of ICU and not ICU4J, which is what Lucene uses. ICU4J is at v63.2 as of Lucene/Solr 7.6.0

References

CVE-2017-14868, CVE-2017-14949, org.restlet

Status: not_affected

Affected Solr versions: 5.2.0-8.x

Description

Solr should not be exposed outside a firewall where bad actors can send HTTP requests. These two CVEs specifically involve classes (SimpleXMLProvider and XmlRepresentation, respectively) that Solr does not use in any code path.

References

CVE-2015-0899, CVE-2016-1181, CVE-2016-1182, Apache Struts 1 CVEs via velocity-tools transitive dependency

Status: not_affected

Affected Solr versions: 6.6.2-8.x

Description

Scanners flag velocity-tools-2.0.jar with Apache Struts 1 CVEs because its POM declares a transitive dependency on struts-core, struts-taglib and struts-tiles 1.3.8. Solr does not ship any Struts jar — the dependency is excluded and only appears as a transitive POM listing (see SOLR-2849) — so these Struts vulnerabilities are not present in, or exploitable through, Solr.

References

CVE-2015-5237, protobuf-java

Status: not_affected

Affected Solr versions: 6.5.0-7.x

Description

Dependency for Hadoop and Calcite. ??

References

CVE-2014-0114, commons-beanutils

Status: not_affected

Affected Solr versions: 4.9.0-7.5.0

Description

This is only used at compile time and it cannot be used to attack Solr. Since it is generally unnecessary, the dependency has been removed as of 7.5.0. See SOLR-12617.

References

CVE-2012-0881, xercesImpl

Status: not_affected

Affected Solr versions: 2.9-9.10

Description

Only used in Lucene Benchmarks and Solr tests.

References