
Arbeitende PoCs für drei NextGen Connect 4.5.2-Schwachstellen.
Funktionierende Proof-of-Concept-Exploits für drei netzwerkerreichbare Schwachstellen in NextGen Connect (Mirth Connect) 4.5.2. Die Testumgebungen starten das offizielle Container- Image, erstellen nur die für den Befund benötigte Kanal-Konfiguration, führen den Angriff aus einem separaten Container aus und schlagen fehl, sofern nicht der behauptete Sicherheitseffekt beobachtet wird.
Diese Überprüfung verwendete die öffentliche Refute-or-Promote-Methodik und deren Open-Source-Orchestrierungs-Playbook. Die Methode trennt die Kandidatengenerierung von der adversarialen Überprüfung mit frischem Kontext und erfordert einen empirischen Nachweis vor der Beförderung. Der verwundbare 4.5.2-Quellcode und die Überprüfungsmethode sind beide öffentlich: Jeder mit gewöhnlichem Modellzugang, dem Quellcode und der Fähigkeit, sicher in einem Labor zu validieren, kann denselben Prozess anwenden und hätte diese Bug- Klassen unabhängig finden können. Vertraulichkeit um einen einzelnen Bericht macht die zugrunde liegende Überprüfungsfähigkeit nicht privat.
Dies sind echte Exploits, keine Parser-Unit-Tests. Sie erbeuten einen Live-Passwort-Hash durch SQL-Injection, exfiltrieren ziel-lokale Dateiinhalte über zwei verschiedene nicht authentifizierte XML-Pfade und blockieren gebündelte Derby-gestützte Operationen bis zum Neustart.
| CVE | Befund | Angreifer | Nachgewiesene Auswirkung | CVSS 3.1 / 4.0 | PoC |
|---|
| CVE-2026-82583 | _getTables selectLimit-Injection | Authentifizierter API-Benutzer | Passwort-Tabellen-Export in das öffentliche Web-Root; gebündeltes Derby friert bis zum Neustart ein | 8.3 / 7.2 | sql-selectlimit-injection/ |
| CVE-2026-78224 | XSLT-Step-XXE | Nicht authentifizierter Kanal-Client | OOB-Lesen einer ziel-lokalen Datei; kanal-lokaler Slow-Entity-DoS | 8.2 / 8.8 | xslt-step-xxe/ |
| CVE-2026-82578 | XML-Batch-Adaptor-XXE | Nicht authentifizierter Kanal-Client | OOB-Lesen einer ziel-lokalen Datei | 7.5 / 8.7 | xml-batch-xxe/ |
CVSS 3.1 und 4.0 sind unterschiedliche Standards; die gepaarten Scores sind kein Vorher-Nachher-Vergleich.
Alle drei wurden reproduziert gegen:
nextgenhealthcare/connect:4.5.2
sha256:4afa295cfe7c5ffd596efee69594157fea87202e33d66bb4a98a52db4598f836
NextGen meldete privat, dass das XSLT-Problem in 4.7.1 behoben wurde und die SQL-Injection- und XML-Batch-Probleme in 4.7.2 behoben wurden. CISA-Advisory ICSMA-26-253-01 betrachtet 4.7.1 und früher als betroffen und empfiehlt 4.7.2 oder später. Releases nach 4.5 sind proprietär, daher gibt es kein öffentliches korrigiertes Image, aus dem dieses Repository die gleiche Art reproduzierbarer Negativkontrolle bereitstellen kann, die für ein Open-Source-Patch-Release verwendet wird.
Ein authentifizierter Fußpunkt auf der administrativen API wird zu Zugriff auf Daten, die
das Konto nicht exportieren sollte. Der paketierte Exploit schreibt die Live-
PERSON_PASSWORD-Zeile unter public_html und beweist, dass die resultierende Datei
ohne Authentifizierung herunterladbar ist. Der entscheidende Schritt ist der Übergang von einer eingeschränkten API-Aktion zu einer Datei auf der Festplatte, die
die Sitzung des Angreifers überhaupt nicht mehr benötigt.
In einer echten Integrationsumgebung kann die Datenbank Kanäle, Endpunkte und Anmeldeinformationen beschreiben, die verwendet werden, um Datenbanken, SFTP-Server, Mail-Relays, APIs und andere klinische Systeme zu erreichen. Ein separater kontrollierter Test erbeutete ein absichtlich platziertes Connector-Passwort aus exportiertem Kanal-XML. Das macht das Primitiv nützlich für Umgebungs-Mapping und Geheimnisdiebstahl; die Verwendung einer erbeuteten Anmeldeinformation gegen ein nachgelagertes System wurde nicht getestet und wird nicht behauptet.
Der optionale Denial-of-Service-Arm friert die gebündelte Derby-Datenbank ein. DB-gestützte API- Aufrufe laufen dann in einen Timeout, dieselbe Injection kann ihren eigenen Einstiegspunkt nicht auftauen, und ein Prozessneustart ist erforderlich. Dies ist eine praktische Wiederherstellungslast für Derby-gestützte Installationen, kein Beweis dafür, dass sich externe Produktionsdatenbanken gleich verhalten.
Sobald ein betroffener XSLT-Kanal bereitgestellt ist, benötigt der Angreifer kein Mirth-Konto. Das eingehende XML veranlasst den Dienst, eine ziel-lokale Datei zu lesen und deren Inhalt an einen angreiferkontrollierten Callback zu senden. Dies ist selbst dann nützlich, wenn die normale Kanalantwort die transformierten Daten nicht enthält und der Angreifer den Nachrichtenverlauf nicht lesen kann.
Der eigenständige Client akzeptiert eine vom Aufrufer gewählte einzeilige file:-URI. Dateien wie
Host-Identifikatoren, Tokens, Konfigurationsfragmente oder Anmeldeinformationen sind praktisch
wertvoll, wenn das Mirth-Dienstkonto sie lesen kann und der Server den
Callback erreichen kann. Der paketierte Proof verwendet nur einen generierten Canary und behauptet keine universelle
beliebige Dateiwiederherstellung, keinen mehrzeiligen Transport und keinen Zugriff über das Dienstkonto hinaus.
Eine langsame externe Entity belegt zudem den standardmäßigen Ein-Thread-Opferkanal. Das kann die spezifische klinische Schnittstelle, die diesem Kanal zugeordnet ist, verzögern oder stoppen, bis die Entity freigegeben wird. Der Kontrollkanal und die administrative API bleiben gesund, daher ist dies eine kanal-lokale Störung und kein Ausfall des gesamten Servers.
Wenn ein betroffener XML-Batch-Modus aktiviert ist, kann ein nicht authentifizierter Sender den rohen Batch-Body verwenden, um dieselbe Art ausgehender Datei-Offenlegung auszulösen. Der Server gibt HTTP 500 zurück, aber der Angreifer hat den nur im Ziel vorhandenen Dateiinhalt bereits über den OOB- Callback. Das macht die Schwachstelle praktisch nützlich als blinden Exfiltrationspfad, selbst wenn ein Test, der nur auf den Antwortcode achtet, die Anfrage als Parser-Fehler abtun würde.
Die Batch-Verarbeitung ist standardmäßig deaktiviert, der Split-Modus muss den XPath-gestützten Parser erreichen, und Server-Egress ist erforderlich. Dieses Repository behauptet keinen nachgewiesenen Denial of Service für CVE-2026-82578.
Voraussetzungen: Bash, Docker, x86-64 Linux und Netzwerkzugriff für den initialen Image- Pull. Beide Images sind per Digest gepinnt. Es wird kein Host-Port veröffentlicht; das Ziel und der Angreifer kommunizieren nur über eine aufgabenspezifische interne Docker-Bridge.
./run-all.sh
Oder einen einzelnen Befund ausführen:
./sql-selectlimit-injection/poc/run.sh
./xslt-step-xxe/poc/run.sh
./xml-batch-xxe/poc/run.sh
Jeder Aufruf erstellt eindeutig benannte Container und ein Bridge-Netzwerk, zeichnet
evidence/current-run.log auf und entfernt seine eigenen Laborressourcen beim Beenden. Die eingecheckten
evidence/vulnerable-4.5.2.log-Dateien sind Transkripte einer x86-64-Linux-Wiedergabe.
PERSON_PASSWORD-Zeile und ruft die Datei
ohne Authentifizierung ab. Sein optionaler Labor-Arm ruft SYSCS_FREEZE_DATABASE auf,
wonach DB-gestützte API-Aufrufe nicht mehr antworten, bis das Ziel neu startet.file:-URI; der Labor-Wrapper verwendet einen zufälligen Canary und eine exakte Assertion.
Derselbe Lauf beweist kanal-lokale Nichtverfügbarkeit mit einem gesunden zweiten Kanal
und Admin-API und verifiziert dann die Wiederherstellung.Element Name-Batch-Modus des Produkts.
Der Angreifer kontrolliert nur den nicht authentifizierten Batch-Body. Sein eigenständiger Client
hat denselben --file-uri-Modus und dieselbe einzeilige OOB-Einschränkung.Nur in einem wegwerfbaren Labor ausführen, das Sie besitzen. Der SQL-PoC friert absichtlich die Ziel- Datenbank ein; die Wiederherstellung erfordert einen Neustart des Ziels. Die XXE-PoCs lesen standardmäßig einen gemounteten Canary, aber ihre eigenständigen Clients akzeptieren beliebige Listener-URLs und einzeilige ziel-lokale Datei-URIs. Richten Sie sie niemals ohne Autorisierung auf Systeme.
Laut CISA auf Connect 4.7.2 oder später aktualisieren. Wo ein sofortiges Upgrade nicht möglich ist, die administrative API auf vertrauenswürdige Management-Netzwerke beschränken, nicht benötigte XSLT-Steps entfernen, XML-Batch-Verarbeitung deaktivieren, wo sie nicht erforderlich ist, und unnötigen Server-Egress blockieren. Diese Maßnahmen reduzieren die Exposition, reparieren aber nicht den verwundbaren Code.
Befunde 1 und 3 sollten Abhinav Agarwal zugeschrieben werden. Befund 2 wurde unabhängig von Abhinav Agarwal entdeckt und zuerst von Youngdu an NextGen gemeldet. NextGen koordinierte Fixes und CVE-Zuweisung.
Dieses Repository soll Verteidigern helfen, Advisory-Text in beobachtbares, testbares Verhalten zu verwandeln. In einer isolierten Kopie einer Umgebung können Verteidiger es nutzen, um:
_getTables-Anfragen, unerwartete Derby-Export- oder
Freeze-Prozeduren, neue Dateien unter public_html, eingehendes XML mit einem
DOCTYPE und von Mirth ausgehende Callbacks nach Listener-Fehlern zu erstellen;Jeder PoC läuft in einem Container, pinnt seine Images per Digest und schlägt geschlossen fehl, sofern kein zufälliger Canary zurückkommt. Ein Verteidiger kann die tatsächliche Sicherheitsgrenze reproduzieren, anstatt einen Screenshot oder eine Schweregradzahl auf Treu und Glauben zu akzeptieren. Es existiert, um Menschen zu helfen, herauszufinden, was sie betreiben, es zu testen und zu bestätigen, dass ein Patch funktioniert hat. Es ist nicht dazu da, auf ein Krankenhaus gerichtet zu werden.