
حالات إثبات مفهوم (PoCs) عاملة لثلاث ثغرات في NextGen Connect 4.5.2.
نقاط استغلال عملية (proof-of-concept) لثلاث ثغرات يمكن الوصول إليها عبر الشبكة في NextGen Connect (Mirth Connect) 4.5.2. تقوم أدوات الاختبار بتشغيل صورة الحاوية الرسمية، وإنشاء إعدادات القناة المطلوبة فقط للاكتشاف، وتنفيذ الهجوم من حاوية منفصلة، وتفشل ما لم يُثبَت التأثير الأمني المزعوم.
استخدمت هذه المراجعة منهجية Refute-or-Promote العامة و**دليل التنسيق مفتوح المصدر** الخاص بها. تفصل المنهجية بين توليد المرشحين والمراجعة العدائية بسياق جديد، وتتطلب إثباتًا تجريبيًا قبل الترقية. المصدر المعرّض للثغرة 4.5.2 وطريقة المراجعة كلاهما عام: أي شخص لديه وصول عادي للنموذج، والمصدر، والقدرة على التحقق بأمان في مختبر، يمكنه تطبيق نفس العملية، وكان بإمكانه اكتشاف هذه الفئات من الأخطاء بشكل مستقل. السرية حول تقرير واحد لا تجعل قدرة المراجعة الأساسية خاصة.
هذه استغلالات حقيقية، وليست اختبارات وحدة للمحلل. فهي تستعيد تجزئة كلمة مرور حية عبر حقن SQL، وتسرّب محتويات ملفات محلية على الهدف عبر مسارين مختلفين لـ XML بدون مصادقة، وتعطّل العمليات المدعومة بـ Derby المضمّن حتى إعادة التشغيل.
| CVE | الاكتشاف | المهاجم | التأثير المُثبَت | CVSS 3.1 / 4.0 | PoC |
|---|---|---|---|---|---|
| CVE-2026-82583 | حقن selectLimit في _getTables | مستخدم API مُصادَق | تصدير جدول كلمات المرور إلى جذر الويب العام؛ تجميد Derby المضمّن حتى إعادة التشغيل | 8.3 / 7.2 | sql-selectlimit-injection/ |
| CVE-2026-78224 | XSLT Step XXE | عميل قناة بدون مصادقة | قراءة OOB لملف محلي على الهدف؛ DoS بكيان بطيء محلي للقناة | 8.2 / 8.8 | xslt-step-xxe/ |
| CVE-2026-82578 | XML Batch Adaptor XXE | عميل قناة بدون مصادقة | قراءة OOB لملف محلي على الهدف | 7.5 / 8.7 | xml-batch-xxe/ |
CVSS 3.1 و4.0 معياران مختلفان؛ الدرجات المزدوجة ليست مقارنة قبل وبعد.
تم إعادة إنتاج الثلاثة جميعًا مقابل:
nextgenhealthcare/connect:4.5.2
sha256:4afa295cfe7c5ffd596efee69594157fea87202e33d66bb4a98a52db4598f836
أبلغت NextGen بشكل خاص أن مشكلة XSLT تم إصلاحها في 4.7.1 وأن مشكلتي حقن SQL وXML Batch تم إصلاحهما في 4.7.2. يعتبر تحذير CISA ICSMA-26-253-01 الإصدار 4.7.1 وما قبله متأثرًا ويوصي بالإصدار 4.7.2 أو أحدث. الإصدارات بعد 4.5 خاصة (proprietary)، لذا لا توجد صورة مُصلَحة عامة يمكن لهذا المستودع أن يوفّر منها نفس نوع الضابط السلبي القابل لإعادة الإنتاج المستخدم لإصدار تصحيح مفتوح المصدر.
تتحول موطئ قدم مُصادَق عليه على واجهة API الإدارية إلى وصول لبيانات لم يكن من المفترض
أن يُصدّرها الحساب. يكتب الاستغلال المُحزَّم صف PERSON_PASSWORD الحي أسفل public_html
ويُثبت أن الملف الناتج قابل للتنزيل بدون مصادقة. الخطوة المهمة هي الانتقال من إجراء API
مقيّد إلى ملف على القرص لم يعد يحتاج جلسة المهاجم على الإطلاق.
في بيئة تكامل حقيقية، يمكن لقاعدة البيانات أن تصف القنوات ونقاط النهاية وبيانات الاعتماد المستخدمة للوصول إلى قواعد البيانات وخوادم SFTP ومرحّلات البريد وواجهات API والأنظمة السريرية الأخرى. استعاد اختبار مُتحكَّم به منفصل كلمة مرور موصّل مزروعة عن قصد من XML قناة مُصدَّرة. هذا يجعل البدائية مفيدة لرسم خرائط البيئة وسرقة الأسرار؛ لم يُختبر استخدام أي بيانات اعتماد مُستعادة ضد نظام لاحق ولم يُدَّعَ ذلك.
ذراع حجب الخدمة الاختياري يجمّد قاعدة بيانات Derby المضمّنة. عندها تنتهي مهل استدعاءات API المدعومة بـ DB، ولا يمكن لنفس الحقن إلغاء تجميد نقطة دخوله الخاصة، ويلزم إعادة تشغيل العملية. هذا عبء استرداد عملي لعمليات التثبيت المدعومة بـ Derby، وليس دليلًا على أن قواعد البيانات الإنتاجية الخارجية تتصرف بنفس الطريقة.
بمجرد نشر قناة XSLT متأثرة، لا يحتاج المهاجم إلى حساب Mirth. يجعل XML الوارد الخدمة تقرأ ملفًا محليًا على الهدف وترسل محتوياته إلى استدعاء عكسي يتحكم به المهاجم. هذا مفيد حتى عندما لا تحتوي استجابة القناة العادية على البيانات المحوَّلة ولا يستطيع المهاجم قراءة سجل الرسائل.
يقبل العميل المستقل URI بصيغة file: أحادي السطر يختاره المتصل. الملفات مثل معرّفات
المضيف أو الرموز أو أجزاء الإعدادات أو بيانات الاعتماد ذات قيمة عملية إذا كان حساب
خدمة Mirth قادرًا على قراءتها وكان الخادم قادرًا على الوصول إلى الاستدعاء العكسي.
يستخدم الإثبات المُحزَّم فقط canary مُولَّدًا ولا يدّعي استعادة عشوائية عالمية للملفات،
أو نقل متعدد الأسطر، أو وصولًا يتجاوز حساب الخدمة.
كما يشغل كيان خارجي بطيء قناة الضحية الافتراضية ذات الخيط الواحد. يمكن أن يؤخر ذلك أو يوقف الواجهة السريرية المحددة المرتبطة بتلك القناة حتى يُحرَّر الكيان. تبقى قناة التحكم وواجهة API الإدارية سليمتين، لذا هذا تعطيل محلي للقناة وليس انقطاعًا للخادم بأكمله.
عند تمكين وضع دفعات XML المتأثر، يمكن لمرسل بدون مصادقة استخدام جسم الدفعة الخام لتحفيز نفس نوع كشف الملفات الصادر. يعيد الخادم HTTP 500، لكن المهاجم يملك بالفعل محتوى الملف الخاص بالهدف عبر الاستدعاء العكسي OOB. هذا يجعل الثغرة مفيدة عمليًا كمسار تسريب أعمى حتى عندما يرفض الاختبار المعتمد على رمز الاستجابة فقط الطلب كفشل في المحلل.
معالجة الدفعات معطّلة افتراضيًا، ويجب أن يصل وضع التقسيم إلى المحلل المدعوم بـ XPath، ويلزم خروج الشبكة من الخادم. لا يدّعي هذا المستودع حجب خدمة مُثبَتًا لـ CVE-2026-82578.
المتطلبات: Bash، وDocker، وLinux x86-64، ووصول للشبكة لسحب الصورة الأولي. كلتا الصورتين مثبّتتان بالـ digest. لا يُنشر أي منفذ مضيف؛ يتواصل الهدف والمهاجم فقط على جسر 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 المُودَعة هي نصوص من إعادة تشغيل على Linux x86-64.
PERSON_PASSWORD الحي ويستعيد الملف بدون مصادقة. ذراعه الاختياري في
المختبر يستدعي SYSCS_FREEZE_DATABASE، وبعدها تتوقف استدعاءات API المدعومة بـ DB
عن الاستجابة حتى يُعاد تشغيل الهدف.file: أحادي السطر محلي على الهدف؛ يستخدم غلاف المختبر
canary عشوائيًا وتأكيدًا دقيقًا. يُثبت نفس التشغيل عدم توفر محلي للقناة مع قناة
ثانية سليمة وواجهة API إدارية، ثم يتحقق من الاسترداد.Element Name الخاص بالمنتج.
يتحكم المهاجم فقط بجسم الدفعة بدون مصادقة. عميله المستقل لديه نفس وضع --file-uri
وقيود OOB أحادية السطر.شغّلها فقط في مختبر قابل للتخلص منه تملكه. يُجمّد PoC الخاص بـ SQL قاعدة بيانات الهدف عن قصد؛ يتطلب الاسترداد إعادة تشغيل الهدف. تقرأ نقاط XXE canary مُثبَّتًا افتراضيًا، لكن عملاءها المستقلين يقبلون عناوين URL عشوائية للمستمعين وURIs أحادية السطر لملفات محلية على الهدف. لا توجّهها أبدًا إلى أنظمة بدون تصريح.
وفقًا لـ CISA، قم بالترقية إلى Connect 4.7.2 أو أحدث. حيث لا تكون الترقية الفورية ممكنة، قيّد واجهة API الإدارية على شبكات إدارة موثوقة، وأزل خطوات XSLT غير الضرورية، وعطّل معالجة دفعات XML حيث لا تكون مطلوبة، واحجب خروج الشبكة غير الضروري من الخادم. تقلل هذه الإجراءات التعرض لكنها لا تصلح الكود المعرّض للثغرة.
يجب أن يُنسب الاكتشافان 1 و3 إلى Abhinav Agarwal. اكتُشف الاكتشاف 2 بشكل مستقل من قبل Abhinav Agarwal وأُبلغ به NextGen أولًا من قبل Youngdu. نسّقت NextGen الإصلاحات وتخصيص CVE.
يهدف هذا المستودع إلى مساعدة المدافعين على تحويل نص التحذير إلى سلوك قابل للملاحظة والاختبار. في نسخة معزولة من بيئة ما، يمكن للمدافعين استخدامه من أجل:
_getTables المشبوهة، وإجراءات تصدير أو تجميد Derby غير
المتوقعة، والملفات الجديدة أسفل public_html، وXML الوارد الذي يحتوي على DOCTYPE،
والاستدعاءات العكسية الصادرة من Mirth بعد أخطاء المستمع؛يعمل كل PoC في حاوية، ويثبّت صوره بالـ digest، ويفشل مغلقًا ما لم يعد canary عشوائي. يمكن للمدافع إعادة إنتاج الحدود الأمنية الفعلية بدلًا من أخذ لقطة شاشة أو رقم خطورة على الثقة. إنه موجود لمساعدة الناس على معرفة ما يشغّلونه، واختباره، وتأكيد نجاح التصحيح. ليس هنا ليُوجَّه نحو مستشفى.