
CVE-2026-20230のSSRFから任意ファイル書き込み、Cisco Unified Communications ManagerでのRCEを分析し、PoCの導出、検出ロジック、防御ガイダンスを提供します。
適用範囲:ローカルターゲット、許可された再現環境、脆弱性検証、防御ルール分析のみ。未承認のターゲットに対して使用しないこと。本記事は主にCVE-2026-20230の攻撃チェーン、検証可能な現象、判断ロジック、防御の考え方を分析するものであり、直接コピーして実行可能な攻撃パケット、WebShellの内容、コマンド実行ペイロードは提供しない。
CVE-2026-20230は、Cisco Unified Communications Manager(Unified CM / CUCM)およびCisco Unified Communications Manager Session Management Edition(Unified CM SME)におけるサーバーサイドリクエストフォージェリ(SSRF)脆弱性です。この脆弱性は、特定のHTTPリクエスト処理フローにおける入力検証の不備に起因し、攻撃者は認証なしでリクエストを構築し、影響を受けるデバイスに攻撃者に代わって内部インターフェースやローカルリソースにアクセスさせることができます。
この脆弱性の影響は通常のSSRF検出にとどまりません。公開された技術分析によれば、特定のバージョンとサービスが有効な条件下では、SSRFを任意ファイル書き込み能力に連鎖させることが可能であり、攻撃者は制御可能なコンテンツを基盤OSのパスに書き込み、Webコンテナがアクセス可能なディレクトリやサーバーサイドコンポーネントのロードメカニズムを利用して、ファイル書き込みをコード実行に変換できます。
Ciscoはこの脆弱性にCVSS v3.1スコア8.6、ベクトルを次のように与えています:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:N
CVSSスコアはHighを示していますが、Ciscoはこの脆弱性のSecurity Impact RatingをCriticalとしています。その理由は、悪用に成功すると基盤OSファイルへの書き込みが可能になり、さらにroot権限に昇格する可能性があるためです。
特に注意すべき点は、この脆弱性の重要な前提条件として、WebDialerサービスが有効である必要があることです。WebDialerはデフォルトで無効であるため、CUCMアセットを見ただけで脆弱性が悪用可能と判断してはいけません。真のリスク判断には、製品バージョン、パッチ状態、WebDialerサービスの状態、および関連インターフェースへのアクセス可否を同時に確認する必要があります。
この脆弱性は、単に「特定の固定URLにアクセスして200が返れば存在する」という一般的なWeb脆弱性ではありません。その攻撃チェーンは少なくとも3つの階層を含みます:
したがって、単独でインターフェースにアクセスしてHTTP 200、302、401、404、500を得ても、脆弱性の存在または非存在を直接証明することはできません。
例えば、WebDialer WSDLインターフェースにアクセスできることは、ターゲットがWebDialer関連機能を露出していることを示すだけであり、その後のSSRFが必ずフィルタを突破できることを証明するものではありません。installClusterStatusExecuteインターフェースにアクセスできることも、関連するエントリポイントが存在することを示すだけであり、単独で任意ファイル書き込みが成立することを証明するものではありません。逆に、あるステップで異常が返る場合も、ターゲットのバージョン、パッチ、ホスト名解決、パス権限、プロキシ機器、サービス状態などが原因である可能性があり、必ずしも脆弱性チェーン全体が存在しないことを意味するわけではありません。
より確実な判断は、多段階の証拠を組み合わせるべきです:
「WebDialer有効 + 影響を受けるバージョン + SSRF動作成立 + 制御されたファイル書き込み成立」が同時に発生した場合にのみ、信頼性の高い悪用可能と判断すべきです。
現在公開されている攻撃チェーンの核心は、単なるSSRFではなく、SSRFとAxis/Java Webサービスメカニズム、ログ書き込み、またはデプロイメント記述子ファイル処理ロジックとの組み合わせ利用です。
全体の考え方は次のように要約できます:
WebDialer情報取得
↓
ターゲットの実際のホスト名を取得
↓
cmplatform関連インターフェースを介してSSRFをトリガー
↓
内部WebDialer / Axis管理パスにアクセス
↓
制御可能なサービス記述内容を書き込みまたはデプロイ
↓
新しい呼び出し可能なサービスまたはファイル書き込み能力を形成
↓
ファイル書き込み能力をWebアクセス可能なスクリプトに変換
↓
特定の環境でさらにコマンド実行に到達
リンク設計から見ると、ホスト名が重要なポイントです。一部のフィルタリングロジックは127.0.0.1、localhostなどの一般的なローカルアドレスをブロックしますが、ターゲットの実際のホスト名は後続のリクエストフローに入ることが許可される可能性があります。そのため、PoCはまずWebDialerのWSDL情報から実際のホスト名を抽出し、それをSSRFチェーンにおける内部アクセスのプレフィックスとして使用します。
2つ目の重要なポイントは、Axisサービス関連ロジックです。PoCはWebディレクトリに直接ファイルをアップロードするのではなく、内部サービス処理チェーンを介して、サーバーサイドコンポーネントに攻撃者が制御可能なコンテンツを特定のパスに書き込ませます。このプロセスは本質的に「サーバーサイド内部リクエスト + コンポーネント設定/ログ書き込み動作 + パストラバーサル/パス制御」の組み合わせです。
3つ目の重要なポイントは、2段階書き込みです。第1段階は通常、より安定したファイル書き込みエントリを確立するために使用され、第2段階でコマンド実行スクリプトをWebアクセス可能なディレクトリに書き込みます。この理由は、SSRFを介して直接1ステップで完全なコマンド実行ロジックを書き込もうとすると、エンコーディング、長さ、XML構造、パス権限、サーバーサイド解析動作などの影響を受ける可能性がある一方、2段階方式では複雑なペイロードを分割しやすいためです。
本記事では、完全な攻撃パケットやWebShellの内容は提供しません。防御と検証に必要なのは、以下の核心的な特徴を理解することだけです:
外部リクエストエントリ:cmplatformインストール状態関連インターフェース
情報取得エントリ:WebDialer WSDL / services関連インターフェース
内部転送先:WebDialer / Axis / AdminService関連パス
重要な動作:SSRF、サーバーサイド内部リクエスト、制御可能なファイル書き込み、Webアクセス可能なファイルの配置
最終リスク:任意ファイル書き込み、WebShell配置、コマンド実行、root権限昇格パス
PoCはまずターゲットの実際のホスト名を取得する必要があります。IPアドレスや外部ドメイン名だけを使用するのではありません。
その理由は、SSRFフィルタリングロジックは最終接続先だけを判断するとは限らず、ホスト名フィールド、URL文字列、ローカルアドレスキーワードなどを検証する可能性があるからです。一般的な127.0.0.1、localhostなどのローカルアドレスはブロックされる可能性がありますが、デバイスの実際のホスト名は一部のシナリオで正当なノード名として扱われることがあります。
判断を補助するために使用できるインターフェースは、通常WebDialer WSDL情報に関連しています。そのようなWSDLにアクセスすると、レスポンスにはサービスアドレス、locationフィールド、またはその他の解析可能なホスト識別子が含まれている可能性があります。PoCはレスポンステキストからURL内のホスト名を抽出し、それを次のフェーズのSSRFの内部アクセスターゲットとして使用します。
このフェーズの判断基準は以下の通りです:
ホスト名の解析に失敗した場合、PoCはターゲットIPにフォールバックすることがありますが、成功率は大幅に低下します。実際の環境でホスト名解析が失敗する一般的な理由には、WebDialerが有効でない、インターフェースがアクセス制御で制限されている、レスポンスがリバースプロキシによって書き換えられている、証明書やサービス設定が不完全であるなどがあります。
SSRFのトリガーポイントは、cmplatform関連のインストール状態照会ロジックにあります。この機能は元々クラスタノードのインストール状態を照会するためのもので、サーバーサイドはユーザーが送信したノード識別子やホスト名に基づいて内部リクエストを組み立てます。
脆弱性の核心は、攻撃者が制御可能なホスト名パラメータが正当なノード名や信頼されたホストに厳密に制限されておらず、そのパラメータをより複雑な内部アクセスパスに構成できることです。その後、サーバーサイドは攻撃者に代わって内部インターフェースにリクエストを送信します。
このフェーズの鍵は「外部URLにアクセスできること」ではなく、「CUCMデバイス自体に、内部で到達可能なWebDialer / Axis管理インターフェースにアクセスさせること」です。したがって、SSRFの価値は2つの側面から来ます:
許可された検証では、HTTPステータスコードだけでSSRFの成功を判断してはいけません。より信頼性の高い証拠には以下が含まれます:
公開されたチェーンでは、SSRFはさらにAxis関連サービスインターフェースにアクセスし、サービスデプロイメント記述内容の書き込みを試みます。攻撃者は特別なXML/WSDD構造を構築し、サーバーサイドコンポーネントが処理中に制御可能なコンテンツを指定パスに書き込むようにします。
このフェーズの本質は従来のファイルアップロードではなく、サーバーサイドコンポーネントの処理ロジックを悪用することです:
ユーザー制御可能パラメータ
↓
SSRF内部リクエスト
↓
Axis / Webサービス処理
↓
制御可能なデプロイメント記述またはログ書き込み
↓
指定パスへのファイル生成
セキュリティ分析の観点から、ここにはいくつかの重要なポイントがあります:
したがって、CVE-2026-20230の高リスク点はSSRFだけではなく、SSRFが信頼境界を越え、内部管理/サービスデプロイチェーンに入り、最終的に制御可能なファイル書き込みをトリガーできることです。
PoC設計では通常、1ステップでコマンド実行を完了するのではなく、2段階書き込みを採用します。
第1段階は、単純なファイル書き込み能力を作成するために使用されます。この段階の目標は、攻撃者がWebアクセス可能なパスを介してサーバーの指定位置に内容を書き込めるようにすることです。
第2段階では、第1段階で書き込んだ能力を利用して、コマンド実行スクリプトをWebアクセス可能なディレクトリに書き込みます。その後、攻撃者はHTTPパラメータを介してシステムコマンド実行をトリガーできます。
2段階設計の利点は次のとおりです:
しかし、防御の観点から見ると、2段階書き込みはより明確な検出面をもたらします:
現在のPoCのフローは次のように要約できます:
悪用成功率の観点から、最も重要な失敗点は通常次の点に集中します:
したがって、このPoCは特定の影響を受けるバージョンとデフォルトパスが一致する場合に悪用可能性が高いですが、すべてのCUCMアセットに対して安定して有効というわけではありません。
CVE-2026-20230の成功判断は、スクリプトが完了したかだけを見るべきではありません。より合理的な判断は4段階に分けるべきです。
条件:
WebDialer WSDLにアクセス可能
または servicesページにアクセス可能
または cmplatform関連インターフェースにアクセス可能
これはターゲットに関連する攻撃面が存在することを示すだけであり、脆弱性が悪用可能であることを証明するものではありません。
条件:
ターゲットバージョンが影響範囲内
WebDialerが有効
ホスト名が解析可能
SSRFエントリポイントが異常だが妥当なサーバーレスポンスを返す
この場合、サーバーサイドログや許可されたターゲット環境での検証を続けるべきです。
条件:
SSRF後にサーバーサイドに制御されたファイルが出現
または Webディレクトリにサーバープロセスによって作成された異常ファイルが出現
または servicesページに異常な新規サービスが出現
またはログに制御可能なデプロイメント記述内容が出現
この段階に達すると、脆弱性チェーンが通常のSSRF段階を突破し、任意ファイル書き込みリスクに入ったことを確認できます。
条件:
書き込まれたWebアクセス可能なスクリプトが正常に解析・実行され
かつ許可されたテストコマンドを介してサーバーサイドの実行結果が観察できる
この段階のみでリモートコマンド実行が成立したと判断できます。ファイル書き込みの成功は必ずしもRCEの成功を意味しませんが、CUCMのような高権限サービス環境では、ファイル書き込みだけで重大なリスクを構成するのに十分です。
本記事では、攻撃に直接使用できるエクスプロイトの実行例を提供しません。
許可された環境では、優先的に「読み取り専用チェック」または「非破壊的検証」方式を使用することを推奨します。例えば:
python3 CVE-2026-20230-check.py https://127.0.0.1 --check
推奨されるチェック項目:
本番システムで完全なファイル書き込みやコマンド実行の検証を行うことは推奨しません。許可されたテストであっても、隔離されたターゲット、スナップショット環境、またはベンダー推奨の検証フローを優先すべきです。
この種のPoCのセキュリティ境界は明確にすべきです。
第一に、デフォルトでコマンドを実行してはいけません。コマンド実行フェーズは高リスクな検証であり、システム状態の変更、ログ汚染、サービス異常、セキュリティ機器の連動応答を引き起こしやすいです。
第二に、デフォルトでWebShellを書き込んではいけません。たとえテストファイルであっても、EDR、WebShellマルウェア対策、ファイル整合性監視、コンプライアンス監査システムによって実際の侵害行為と判断される可能性があります。
第三に、公開ネットワークのターゲットに対してバルクプローブを行ってはいけません。この脆弱性は認証不要であり、ターゲットの多くは企業通信インフラであるため、許可されていないスキャンと悪用のリスクは極めて高いです。
第四に、チェックモードと悪用モードは分離すべきです。PoCを2つのスクリプトに分割することを推奨します。1つはアセット識別とサービス状態判断専用、もう1つはローカルターゲットまたは明確に許可された環境でのみファイル書き込みを検証するものです。
第五に、ターゲット範囲を制限すべきです。PoCにはローカルアドレス、プライベートネットワークセグメント、ホワイトリストドメイン、許可確認パラメータなどの保護メカニズムを追加し、誤ってサードパーティシステムを攻撃しないようにする必要があります。
第六に、デフォルトでRCEフェーズを無効にする必要があります。研究コードを保持する場合でも、ユーザーが明示的に許可確認パラメータを渡した場合にのみファイル書き込みまたはコマンド実行の検証を許可するようにすべきです。
トラフィック検出の観点から、特定の固定ファイル名、固定サービス名、固定JSP名だけにマッチングしてはいけません。公開PoCのサービス名、ファイル名、パスはすべて変更可能であり、単一の文字列ルールでは見逃しが発生しやすいです。
より合理的な検出アプローチは、攻撃チェーンのフェーズごとに特徴を抽出することです。
重点的に監視:
/webdialer/Version.jws?wsdl
/webdialer/services
WebDialer WSDL
Axis services listing
短時間に外部クライアントがWSDLにアクセスした後、cmplatformのインストール状態インターフェースにアクセスした場合、リスクレベルを上げるべきです。
重点的に監視:
/cmplatform/installClusterStatusExecute
action=clusterNodeInstallStatus
hostnameパラメータの異常な長さ
hostnameパラメータにURLエンコードされたパス区切り文字が出現
hostnameパラメータにwebdialer、services、AdminService、platformcom、installstagesなどの内部パス特徴が含まれる
このフェーズの鍵は、hostnameパラメータが通常のホスト名ではなくなり、パス化、URL化、エンコード化、XML化の特徴が現れることです。
重点的に監視:
deployment
wsdd
java:RPC
requestFlow
LogHandler
allowedMethods
className
fileName
writeToConsole
これらのフィールドが同時に出現する場合、攻撃者がAxisサービスのデプロイメント記述ファイルを介して制御可能なコンテンツを書き込もうとしている可能性が高いと疑うべきです。
重点的に監視:
axis2-web
platform-services
JSPファイル書き込み
パラメータにファイル名とファイル内容の組み合わせが出現
Webディレクトリパストラバーサル
common/log/taos-log-a
tomcat/webapps
攻撃トラフィックに大量の ../、URLエンコードされたパストラバーサル、JSP拡張子、Tomcat WebAppパスが出現した場合、高リスクと判断すべきです。
重点的に監視:
新規JSPへのアクセス
リクエストパラメータにpwd、cmd、command、exec、iなどのコマンドパラメータが出現
レスポンスにシステムコマンド出力形式が出現
同一ソースIPが短時間にWSDL取得、SSRF、書き込み、実行の連続動作を完了
ルール設計の観点からは、フェーズごとの検出を推奨します:
緊急調査時には、以下の場所と現象を重点的に確認することを推奨します:
installClusterStatusExecuteの異常リクエストが存在するか。/tmp、WebAppディレクトリ、ログディレクトリにテストファイルや未知のファイルが出現していないか。もし悪用された疑いがある場合は、管理面アクセスを優先的に隔離し、ログとファイルシステムの証拠を保持した上で、パッチアップグレード、WebShellのクリーンアップ、異常サービスのクリーンアップ、アカウント/認証情報のローテーションを実施すべきです。
根本的な修正方法は、Cisco公式修正バージョンにアップグレードするか、公式が提供する一時修正パッケージを適用することです。
一般的な対応推奨事項は以下の通りです:
CVE-2026-20230の鍵は単一のインターフェース露出ではなく、CUCMのWebDialer、cmplatformインストール状態照会ロジック、内部Axisサービス処理、ファイル書き込み能力の間に形成された連鎖可能な信頼境界の破綻にあります。
このチェーンは次のように要約できます:
未認証の外部リクエスト
↓
WebDialer露出面の確認
↓
実際のホスト名取得
↓
cmplatform SSRF
↓
内部Axisサービスへのアクセス
↓
制御可能なサービス記述またはログ書き込み
↓
Webアクセス可能なファイルの配置
↓
コマンド実行とroot権限昇格リスク
実際の悪用可能性は、WebDialerが有効か、ターゲットバージョンが影響を受けるか、ホスト名フィルタがバイパス可能か、パス着弾点が適合するか、Webコンテナが書き込まれたファイルを実行するか、ターゲットがパッチを適用済みかによって決まります。
防御の観点からは、「特定のJSPファイルが存在するか」だけに依存して攻撃を判断してはいけません。より確実な方法は、多段階チェーンに沿った関連検出です:WSDL情報取得、cmplatform異常hostname、Axis/WSDD特徴、パストラバーサル書き込み、JSP配置アクセス、コマンドパラメータアクセス。これらの複数の段階が短時間に同一ソースから連続して出現した場合、高リスクの侵入イベントとして処理すべきです。