
NextGen Connect 4.5.2の3つの脆弱性に対する動作するPoC。
NextGen Connect (Mirth Connect) 4.5.2 に存在するネットワーク到達可能な3つの脆弱性に対する、動作する概念実証エクスプロイトです。ハーネスは公式コンテナイメージを実行し、発見事項に必要なチャネル設定のみを作成し、別のコンテナから攻撃を実行し、主張されたセキュリティ効果が観測されない限り失敗します。
このレビューでは、公開されている Refute-or-Promote 手法 とその オープンソースのオーケストレーションプレイブック を使用しました。この手法は候補生成とフレッシュコンテキストでの敵対的レビューを分離し、昇格の前に実証的な証明を要求します。脆弱な 4.5.2 のソースとレビュー手法はどちらも公開されています。通常のモデルアクセス、ソース、そしてラボで安全に検証する能力を持つ誰もが同じプロセスを適用でき、これらのバグクラスを独立に発見できた可能性があります。1つのレポートに関する機密性が、基盤となるレビュー能力を非公開にするものではありません。
これらは実際のエクスプロイトであり、パーサーの単体テストではありません。SQL インジェクションを通じて生きたパスワードハッシュを回収し、2つの異なる未認証 XML パスを通じてターゲットローカルのファイル内容を窃取し、再起動まで同梱の Derby に支えられた操作をブロックします。
| CVE | 発見事項 | 攻撃者 | 実証された影響 | CVSS 3.1 / 4.0 | PoC |
|---|---|---|---|---|---|
| CVE-2026-82583 | _getTables selectLimit インジェクション | 認証済み API ユーザー | パスワードテーブルの公開ウェブルートへのエクスポート; 再起動までの同梱 Derby のフリーズ | 8.3 / 7.2 | sql-selectlimit-injection/ |
| CVE-2026-78224 | XSLT ステップ XXE | 未認証のチャネルクライアント | ターゲットローカルファイルの OOB 読み取り; チャネルローカルの低速エンティティ DoS | 8.2 / 8.8 | xslt-step-xxe/ |
| CVE-2026-82578 | XML バッチアダプタ XXE | 未認証のチャネルクライアント | ターゲットローカルファイルの OOB 読み取り | 7.5 / 8.7 | xml-batch-xxe/ |
CVSS 3.1 と 4.0 は異なる標準です。対になったスコアはビフォーアフターの比較ではありません。
3つすべてが以下に対して再現されました:
nextgenhealthcare/connect:4.5.2
sha256:4afa295cfe7c5ffd596efee69594157fea87202e33d66bb4a98a52db4598f836
NextGen は、XSLT の問題が 4.7.1 で修正され、SQL インジェクションと XML バッチの問題が 4.7.2 で修正されたと非公開で報告しました。CISA アドバイザリ ICSMA-26-253-01 は 4.7.1 以前を影響を受けるものとして扱い、4.7.2 以降を推奨しています。4.5 以降のリリースはプロプライエタリであるため、このリポジトリがオープンソースのパッチリリースに対して使用するのと同じ種類の再現可能なネガティブコントロールを提供できる公開修正済みイメージは存在しません。
管理 API 上の認証済みの足場が、そのアカウントがエクスポートすることを意図されていなかったデータへのアクセスになります。パッケージ化されたエクスプロイトは、生きた PERSON_PASSWORD 行を public_html の下に書き込み、結果として得られたファイルが認証なしでダウンロード可能であることを証明します。重要なステップは、制限された API アクションから、もはや攻撃者のセッションを全く必要としないディスク上のファイルへと移行することです。
実際の統合環境では、データベースはチャネル、エンドポイント、およびデータベース、SFTP サーバー、メールリレー、API、その他の臨床システムに到達するために使用される認証情報を記述できます。別の制御されたテストでは、エクスポートされたチャネル XML から意図的に植え付けられたコネクタパスワードを回収しました。これにより、このプリミティブは環境マッピングとシークレット窃取に有用になります。回収された認証情報をダウンストリームシステムに対して使用することはテストされておらず、主張もされていません。
オプションのサービス拒否の部分は、同梱の Derby データベースをフリーズさせます。DB に支えられた API 呼び出しはその後タイムアウトし、同じインジェクションは自身のエントリポイントをアンフリーズできず、プロセスの再起動が必要になります。これは Derby に支えられたインストールにとって実用的な復旧負担であり、外部の本番データベースが同じように動作するという証明ではありません。
影響を受ける XSLT チャネルがデプロイされると、攻撃者は Mirth アカウントを必要としません。受信 XML はサービスにターゲットローカルのファイルを読み取らせ、その内容を攻撃者が制御するコールバックに送信させます。これは、通常のチャネル応答が変換されたデータを含まず、攻撃者がメッセージ履歴を読めない場合でも有用です。
スタンドアロンクライアントは、呼び出し元が選択した単一行の file: URI を受け入れます。ホスト識別子、トークン、設定フラグメント、認証情報などのファイルは、Mirth サービスアカウントがそれらを読み取ることができ、サーバーがコールバックに到達できる場合、実用的に価値があります。パッケージ化された証明は生成されたカナリアのみを使用し、普遍的な任意ファイル回収、複数行トランスポート、またはサービスアカウントを超えたアクセスを主張しません。
低速な外部エンティティはまた、デフォルトの単一スレッドの被害者チャネルを占有します。これは、エンティティが解放されるまで、そのチャネルにマッピングされた特定の臨床インターフェースを遅延または停止させる可能性があります。コントロールチャネルと管理 API は健全なままであるため、これはサーバー全体の停止ではなくチャネルローカルの中断です。
影響を受ける XML バッチモードが有効になっている場合、未認証の送信者が生のバッチボディを使用して、同じ種類のアウトバウンドファイル開示をトリガーできます。サーバーは HTTP 500 を返しますが、攻撃者はすでに OOB コールバックを通じてターゲット専用のファイル内容を取得しています。これにより、レスポンスコードのみのテストではリクエストをパーサー障害として却下する場合でも、この欠陥はブラインド窃取パスとして実用的に有用になります。
バッチ処理はデフォルトでオフであり、分割モードは XPath に支えられたパーサーに到達する必要があり、サーバーのエグレスが必要です。このリポジトリは CVE-2026-82578 について実証されたサービス拒否を主張しません。
要件: Bash、Docker、x86-64 Linux、および初回イメージプルのためのネットワークアクセス。両方のイメージはダイジェストで固定されています。ホストポートは公開されません。ターゲットと攻撃者はタスク固有の内部 Docker ブリッジ上でのみ通信します。
./run-all.sh
または単一の発見事項を実行します:
./sql-selectlimit-injection/poc/run.sh
./xslt-step-xxe/poc/run.sh
./xml-batch-xxe/poc/run.sh
各呼び出しは一意に命名されたコンテナとブリッジネットワークを作成し、evidence/current-run.log を記録し、終了時に自身のラボリソースを削除します。チェックインされた evidence/vulnerable-4.5.2.log ファイルは、x86-64 Linux でのリプレイのトランスクリプトです。
PERSON_PASSWORD 行をエクスポートし、認証なしでファイルを取得します。そのオプションのラボ部分は SYSCS_FREEZE_DATABASE を呼び出し、その後ターゲットが再起動するまで DB に支えられた API 呼び出しが応答しなくなります。file: URI を受け入れます。ラボラッパーはランダムなカナリアと正確なアサーションを使用します。同じ実行は、健全な第2チャネルと管理 API を用いてチャネルローカルの利用不能性を証明し、その後復旧を検証します。Element Name バッチモードを有効にします。攻撃者は未認証のバッチボディのみを制御します。そのスタンドアロンクライアントは同じ --file-uri モードと単一行 OOB 制限を持ちます。自分が所有する使い捨てのラボでのみ実行してください。SQL PoC は意図的にターゲットデータベースをフリーズさせます。復旧にはターゲットの再起動が必要です。XXE PoC はデフォルトでマウントされたカナリアを読み取りますが、そのスタンドアロンクライアントは任意のリスナー URL と単一行のターゲットローカルファイル URI を受け入れます。許可なくシステムに向けないでください。
CISA によると、Connect 4.7.2 以降にアップグレードしてください。即時のアップグレードが不可能な場合は、管理 API を信頼された管理ネットワークに制限し、不要な XSLT ステップを削除し、必要でない場合は XML バッチ処理を無効にし、不要なサーバーエグレスをブロックしてください。これらの対策は露出を減らしますが、脆弱なコードを修復するものではありません。
発見事項 1 と 3 は Abhinav Agarwal にクレジットされるべきです。発見事項 2 は Abhinav Agarwal によって独立に発見され、Youngdu によって最初に NextGen に報告されました。NextGen が修正と CVE の割り当てを調整しました。
このリポジトリは、防御者がアドバイザリのテキストを観測可能でテスト可能な動作に変えるのを助けることを意図しています。環境の分離されたコピーにおいて、防御者はこれを使用して以下を行うことができます:
_getTables リクエスト、予期しない Derby エクスポートまたはフリーズプロシージャ、public_html の下の新しいファイル、DOCTYPE を含むインバウンド XML、およびリスナーエラー後の Mirth 発信コールバックに対する検出を構築する;すべての PoC はコンテナ内で実行され、イメージをダイジェストで固定し、ランダムなカナリアが返らない限りフェイルクローズします。防御者は、スクリーンショットや重大度の数値を鵜呑みにするのではなく、実際のセキュリティ境界を再現できます。これは、人々が自分たちが実行しているものを発見し、テストし、パッチが機能したことを確認するのを助けるために存在します。病院に向けるためのものではありません。