新たに公開された高深刻度の脆弱性がSplunk Secure Gateway(SSG)に発見されました。この脆弱性を悪用すると、低権限の認証済みユーザーが影響を受けるシステム上でリモートコード実行(RCE)を達成できるため、エンタープライズ向けSplunk環境の攻撃対象領域が大幅に拡大します。
NetworkSecurity
CVE-2026-20251として追跡されているこの脆弱性には、CVSSスコア8.8が割り当てられています。Pythonのjsonpickleライブラリによるユーザー制御データの安全でないデシリアライゼーションに起因しています。
Splunk Secure Gateway RCE脆弱性の詳細
ReactiveZero Securityが公開した調査によると、この脆弱性はSSGがKV Storeに保存されたアラートデータ、特に「mobile_alerts」コレクションを処理する仕組みに関連しています。
低権限の攻撃者はSplunk REST API経由で特別に細工されたJSONドキュメントを注入できます。SSGがこのデータを処理する際、不正なペイロードが欠陥のある検証ルーティンを経由してjsonpickle.decode()に渡され、最終的にSplunkサービスアカウントの権限で任意コードが実行されます。
根本的な原因は、バリデーターのバイパスと安全でないデシリアライゼーションという2つの重大な問題にあります。検証関数check_alert_data_valid_json()は悪意ある構造をブロックするよう設計されていますが、「py/object」などの許可キーに遭遇した際に処理を誤って短絡させてしまいます。
このキーが最初に出現し、期待されるプレフィックス(例:spacebridgeapp)に一致した場合、関数は他のフィールドを検査せずに即座にtrueを返します。これにより、攻撃者は「notification」などの兄弟キーに悪意あるペイロードを埋め込むことができ、それらは未チェックのまま処理されます。
検証をパスしたデータはjsonpickle.decode(…, safe=True)に渡されます。safeフラグが設定されているにもかかわらず、「py/reduce」などの危険なデシリアライゼーションパスは依然として悪用可能です。攻撃者はこれを利用して、subprocessモジュール経由のシステムレベルコマンドを含む任意のPython関数を呼び出すことができます。
典型的なエクスプロイトチェーンは、KV Storeへの悪意あるドキュメントの書き込み、SSGによるアラート処理のトリガー、検証のバイパス、そしてデシリアライゼーション中のペイロード実行という流れで構成されます。特筆すべき点として、この攻撃に必要なのは有効な低権限Splunkアカウントのみであり、ユーザーの操作は一切不要です。
以下は、無害なコマンドを使用してこの脆弱性を示す、簡略化されたPoC(概念実証)です。
import jsonpickle
import subprocess
payload = {
"py/object": "spacebridgeapp.data.alert_data.Alert",
"notification":
"py/reduce": [
{"py/function": "subprocess.check_output"},
{"py/tuple": [["uname", "-a"]]}
]
}
}
encoded = jsonpickle.encode(payload)
decoded = jsonpickle.decode(encoded, safe=True)
print(decoded)
このPoCは、デシリアライゼーション中にjsonpickleがsubprocess.check_output([“uname”, “-a”])を実行することを示しており、safe=Trueフラグがpy/reduceパスウェイの悪用を防げないことを裏付けています。
この脆弱性は、Splunk Secure Gatewayの3.8.x、3.9.x、3.10.xを含む複数バージョン、およびパッチ適用済みリリース(10.0.7、10.2.4、10.4.0+)以前のSplunk Enterpriseバージョンに影響します。Splunkはこの問題をSSGバージョン3.8.67、3.9.20、3.10.6で修正しました。
セキュリティ専門家は、主要な対策として即座のパッチ適用を推奨しています。すぐにパッチを適用できない組織は、未使用の場合はSecure Gatewayアプリを無効化し、KV Storeの書き込み権限を制限し、厳格なアクセス制御を実施してください。
SecurityProducts & Services
また、開発者は厳格なスキーマ検証またはクラスの許可リストなしに、jsonpickleや類似ライブラリを使用して信頼できないデータをデシリアライズすることを避けるよう強く推奨されています。
この脆弱性は、Pythonアプリケーションで繰り返し見られるセキュリティのアンチパターン、すなわちユーザー制御データの安全でないデシリアライゼーションを改めて浮き彫りにしています。保護フラグが有効であっても、不完全な検証ロジックによってこれらの保護機能が無効化され、システム全体の侵害につながる可能性があることを示しています。
翻訳元: https://gbhackers.com/splunk-secure-gateway-rce-vulnerability/