
NextGen Connect 4.5.2 की तीन vulnerabilities के लिए कार्यशील PoCs।
NextGen Connect (Mirth Connect) 4.5.2 में तीन नेटवर्क-पहुँच योग्य कमज़ोरियों के लिए कार्यशील proof-of-concept exploits। ये harnesses आधिकारिक container image चलाते हैं, केवल finding के लिए आवश्यक channel configuration बनाते हैं, हमले को एक अलग container से निष्पादित करते हैं, और तब तक विफल रहते हैं जब तक कि दावा किया गया सुरक्षा प्रभाव देखा न जाए।
इस समीक्षा में सार्वजनिक Refute-or-Promote methodology और इसकी open-source orchestration playbook का उपयोग किया गया। यह विधि candidate generation को fresh-context adversarial review से अलग करती है और promotion से पहले empirical proof की आवश्यकता होती है। कमज़ोर 4.5.2 source और समीक्षा विधि दोनों सार्वजनिक हैं: सामान्य model access, source, और lab में सुरक्षित रूप से validate करने की क्षमता रखने वाला कोई भी व्यक्ति इसी प्रक्रिया को लागू कर सकता है, और इन bug classes को स्वतंत्र रूप से खोज सकता था। एक रिपोर्ट के आसपास गोपनीयता अंतर्निहित समीक्षा क्षमता को निजी नहीं बनाती।
ये वास्तविक exploits हैं, parser unit tests नहीं। ये SQL injection के माध्यम से एक live password hash पुनर्प्राप्त करते हैं, दो अलग unauthenticated XML paths के माध्यम से target-local file contents को exfiltrate करते हैं, और restart तक bundled-Derby-backed operations को block करते हैं।
| CVE | Finding | Attacker | Demonstrated impact | CVSS 3.1 / 4.0 | PoC |
|---|---|---|---|---|---|
| CVE-2026-82583 | _getTables selectLimit injection | Authenticated API user | Password-table export to the public web root; bundled Derby freeze until restart | 8.3 / 7.2 | sql-selectlimit-injection/ |
| CVE-2026-78224 | XSLT Step XXE | Unauthenticated channel client | OOB read of a target-local file; channel-local slow-entity DoS | 8.2 / 8.8 | xslt-step-xxe/ |
| CVE-2026-82578 | XML Batch Adaptor XXE | Unauthenticated channel client | OOB read of a target-local file | 7.5 / 8.7 | xml-batch-xxe/ |
CVSS 3.1 और 4.0 अलग-अलग मानक हैं; युग्मित स्कोर before-and-after तुलना नहीं हैं।
तीनों को निम्नलिखित के विरुद्ध पुनरुत्पादित किया गया:
nextgenhealthcare/connect:4.5.2
sha256:4afa295cfe7c5ffd596efee69594157fea87202e33d66bb4a98a52db4598f836
NextGen ने निजी तौर पर बताया कि XSLT समस्या 4.7.1 में ठीक की गई थी और SQL injection तथा XML Batch समस्याएँ 4.7.2 में ठीक की गई थीं। CISA advisory ICSMA-26-253-01 4.7.1 और उससे पहले को प्रभावित मानता है और 4.7.2 या बाद के संस्करण की सिफारिश करता है। 4.5 के बाद के releases proprietary हैं, इसलिए कोई सार्वजनिक fixed image नहीं है जिससे यह repository open-source patch release के लिए उपयोग किए गए उसी प्रकार का reproducible negative control प्रदान कर सके।
administrative API पर एक authenticated foothold उस डेटा तक पहुँच बन जाता है जिसे account को export करने के लिए नहीं बनाया गया था। packaged exploit live PERSON_PASSWORD row को public_html के नीचे लिखता है और सिद्ध करता है कि परिणामी फ़ाइल बिना authentication के डाउनलोड करने योग्य है। महत्वपूर्ण चरण एक restricted API action से disk पर ऐसी फ़ाइल तक जाना है जिसके लिए अब हमलावर के session की बिल्कुल भी आवश्यकता नहीं है।
वास्तविक integration environment में, database उन channels, endpoints, और credentials का वर्णन कर सकता है जिनका उपयोग databases, SFTP servers, mail relays, APIs, और अन्य clinical systems तक पहुँचने के लिए किया जाता है। एक अलग controlled test ने exported channel XML से जानबूझकर लगाया गया connector password पुनर्प्राप्त किया। यह primitive को environment mapping और secret theft के लिए उपयोगी बनाता है; downstream system के विरुद्ध किसी भी पुनर्प्राप्त credential का उपयोग परीक्षण नहीं किया गया और इसका दावा नहीं किया जाता।
वैकल्पिक denial-of-service arm bundled Derby database को freeze कर देता है। DB-backed API calls तब time out हो जाती हैं, वही injection अपने ही entrypoint को unfreeze नहीं कर सकता, और process restart आवश्यक होता है। यह Derby-backed installations के लिए एक व्यावहारिक recovery burden है, यह प्रमाण नहीं कि external production databases भी इसी तरह व्यवहार करते हैं।
एक बार प्रभावित XSLT channel deploy हो जाने के बाद, हमलावर को किसी Mirth account की आवश्यकता नहीं होती। आने वाला XML service को एक target-local file पढ़ने और उसकी सामग्री attacker-controlled callback पर भेजने के लिए बाध्य करता है। यह तब भी उपयोगी है जब सामान्य channel response में transformed data शामिल न हो और हमलावर message history न पढ़ सके।
standalone client caller-selected single-line file: URI स्वीकार करता है। host identifiers, tokens, configuration fragments, या credentials जैसी फ़ाइलें व्यावहारिक रूप से मूल्यवान हैं यदि Mirth service account उन्हें पढ़ सकता है और server callback तक पहुँच सकता है। packaged proof केवल एक generated canary का उपयोग करता है और universal arbitrary-file recovery, multiline transport, या service account से परे access का दावा नहीं करता।
एक slow external entity default one-thread victim channel पर भी कब्जा कर लेती है। यह उस channel से mapped विशिष्ट clinical interface को तब तक विलंबित या रोक सकता है जब तक entity release न हो जाए। control channel और administrative API स्वस्थ रहते हैं, इसलिए यह channel-local disruption है, पूरे server का outage नहीं।
जब प्रभावित XML batch mode सक्षम होता है, तो unauthenticated sender raw batch body का उपयोग करके उसी प्रकार का outbound file disclosure trigger कर सकता है। Server HTTP 500 लौटाता है, लेकिन हमलावर के पास पहले से ही OOB callback के माध्यम से target-only file content होता है। यह इस flaw को blind exfiltration path के रूप में व्यावहारिक रूप से उपयोगी बनाता है, भले ही केवल response-code पर आधारित testing request को parser failure मानकर खारिज कर दे।
Batch processing default रूप से बंद होती है, split mode को XPath-backed parser तक पहुँचना चाहिए, और server egress आवश्यक है। यह repository CVE-2026-82578 के लिए demonstrated denial of service का दावा नहीं करता।
Requirements: Bash, Docker, x86-64 Linux, और प्रारंभिक image pull के लिए network access। दोनों images digest-pinned हैं। कोई host port publish नहीं किया जाता; target और attacker केवल task-specific internal Docker bridge पर संवाद करते हैं।
./run-all.sh
या एक single finding चलाएँ:
./sql-selectlimit-injection/poc/run.sh
./xslt-step-xxe/poc/run.sh
./xml-batch-xxe/poc/run.sh
प्रत्येक invocation uniquely named containers और एक bridge network बनाता है, evidence/current-run.log रिकॉर्ड करता है, और exit पर अपने स्वयं के lab resources हटा देता है। checked-in evidence/vulnerable-4.5.2.log फ़ाइलें x86-64 Linux replay की transcripts हैं।
PERSON_PASSWORD row export करता है और फ़ाइल को बिना authentication के पुनर्प्राप्त करता है। इसका वैकल्पिक lab arm SYSCS_FREEZE_DATABASE को invoke करता है, जिसके बाद DB-backed API calls तब तक प्रतिक्रिया देना बंद कर देती हैं जब तक target restart न हो।file: URI स्वीकार करता है; lab wrapper एक random canary और exact assertion का उपयोग करता है। वही run एक स्वस्थ दूसरे channel और admin API के साथ channel-local unavailability सिद्ध करता है, फिर recovery सत्यापित करता है।Element Name batch mode को सक्षम करता है। हमलावर केवल unauthenticated batch body को नियंत्रित करता है। इसके standalone client में वही --file-uri mode और single-line OOB limitation है।केवल अपने स्वयं के disposable lab में चलाएँ। SQL PoC जानबूझकर target database को freeze करता है; recovery के लिए target restart करना आवश्यक है। XXE PoCs default रूप से एक mounted canary पढ़ते हैं, लेकिन उनके standalone clients arbitrary listener URLs और single-line target-local file URIs स्वीकार करते हैं। इन्हें कभी भी बिना authorization के systems पर निर्देशित न करें।
CISA के अनुसार, Connect 4.7.2 या बाद के संस्करण में upgrade करें। जहाँ तत्काल upgrade संभव न हो, administrative API को trusted management networks तक सीमित करें, अनावश्यक XSLT steps हटाएँ, जहाँ आवश्यक न हो वहाँ XML batch processing अक्षम करें, और अनावश्यक server egress block करें। ये उपाय exposure कम करते हैं लेकिन कमज़ोर code की मरम्मत नहीं करते।
Findings 1 और 3 का श्रेय Abhinav Agarwal को दिया जाना चाहिए। Finding 2 की स्वतंत्र रूप से Abhinav Agarwal द्वारा खोज की गई और पहली बार Youngdu द्वारा NextGen को रिपोर्ट किया गया। NextGen ने fixes और CVE assignment का समन्वय किया।
यह repository defenders को advisory text को observable, testable behavior में बदलने में मदद करने के लिए है। किसी environment की isolated copy में, defenders इसका उपयोग यह करने के लिए कर सकते हैं:
_getTables requests, अप्रत्याशित Derby export या freeze procedures, public_html के नीचे नई फ़ाइलें, DOCTYPE युक्त inbound XML, और listener errors के बाद Mirth-originated callbacks के लिए detections बनाएँ;प्रत्येक PoC एक container में चलता है, अपनी images को digest द्वारा pin करता है, और तब तक fail closed करता है जब तक random canary वापस न आए। एक defender वास्तविक security boundary को पुनरुत्पादित कर सकता है बजाय किसी screenshot या severity number को आँख बंद करके मानने के। यह लोगों को यह खोजने में मदद करने के लिए है कि वे क्या चला रहे हैं, इसका परीक्षण करें, और पुष्टि करें कि patch काम कर गया। यह किसी hospital पर निर्देशित करने के लिए नहीं है।