خادم طباعة متصل بالإنترنت قد لا يبدو للوهلة الأولى كهدف يضاهي بوابة VPN أو خادم بريد، لكن PaperCut NG وPaperCut MF وجدا نفسيهما في قلب سلسلة استغلال تجعل واجهة الإدارة نفسها نقطة دخول يمكن أن تنتهي بتنفيذ كود داخل عملية التطبيق.
المشكلة لا تعتمد على ثغرة واحدة تمنح المهاجم السيطرة مباشرة، بل على ربط خللين معًا: الأول يسمح لطلبات غير مصادق عليها بالوصول إلى وظائف إدارية لا يفترض أن تكون متاحة، والثاني يستغل إعدادًا يمكن التحكم فيه لتحميل Java Class بصورة غير آمنة.
النتيجة هي انتقال المهاجم من خارج النظام، ومن دون حساب صالح، إلى القدرة على تشغيل كود يختاره داخل بيئة PaperCut. والأهم أن هذا السيناريو لم يبقَ نظريًا؛ فقد رصدت Huntress نشاط استغلال محدودًا في بيئتين لعملائها، تضمن تنفيذ أوامر استطلاعية لمعرفة هوية المستخدم، إصدار نظام التشغيل، والعمليات الجارية.
#TL;DR
- يجري استغلال ثغرتين في
PaperCut NGوPaperCut MFضمن سلسلة تؤدي إلىRemote Code Execution (RCE)دون مصادقة. CVE-2026-81578بدرجةCVSS 8.8تسمح، تحت ظروف محددة، بتجاوز ضوابط الوصول وتشغيل وظائف إدارية قبل اكتمال التحقق من الصلاحيات.CVE-2026-82078بدرجةCVSS 9.4تتعلق بتحميل ديناميكي غير آمن لفئاتJavaداخل أدوات الاتصال بقاعدة البيانات.- وفق
watchTowr، يمكن استخدام الثغرة الأولى لتعديل الإعدادات ثم استغلال الثانية للوصول إلى تنفيذ الكود. Huntressرصدت أوامر مثلwhoami & verوwhoami & ver & tasklist، إضافة إلى تشغيل ملفJava .classيعمل علىWindowsوLinux.- أصدرت
PaperCutإصلاحًا طارئًا ثانيًا يتضمن إجراءاتHardeningإضافية، مع توصية بإزالة التعرض المباشر للإنترنت وتقييد الوصول الإداري.
#ما الذي حدث؟
أعلنت PaperCut عن ثغرتين أمنيتين تؤثران في PaperCut MF وPaperCut NG بعد ظهور نشاط هجومي يستهدف الأنظمة المعرضة.
بحسب تحليل Huntress، يستطيع المهاجم إرسال طلب غير مصادق عليه يؤدي إلى تغيير إعدادات الخادم، ثم الوصول إلى وظائف حساسة يمكن إساءة استخدامها للوصول في النهاية إلى تنفيذ كود يختاره المهاجم.
في الوقت نفسه، أوضحت watchTowr أن الثغرتين يمكن ربطهما في سلسلة واحدة: تبدأ بتجاوز المصادقة وضوابط الوصول عبر CVE-2026-81578، ثم تعديل إعداد داخل التطبيق، وبعدها استغلال CVE-2026-82078 لتحميل كود Java والوصول إلى RCE.
بهذا لا يحتاج المهاجم إلى سرقة حساب مسؤول أولًا؛ نقطة البداية نفسها قد تكون طلبًا قادمًا من مستخدم غير مصادق عليه.
#الثغرتان خلف سلسلة الهجوم
كشفت PaperCut عن الثغرتين التاليتين:
| الثغرة | CVSS | النوع | التأثير |
|---|---|---|---|
CVE-2026-81578 | 8.8 | Improper Access Control | تنفيذ وظائف إدارية تحت ظروف محددة قبل اكتمال التحقق من الوصول |
CVE-2026-82078 | 9.4 | Unsafe Dynamic Class Loading | تحميل Classes اعتمادًا على أسماء Drivers قابلة للتهيئة دون التحقق من Allowlist موثوقة |
#CVE-2026-81578: عندما لا يتطابق فحص الصلاحيات مع الإجراء الفعلي
جوهر الثغرة الأولى مرتبط بكيفية تعامل واجهة إدارة PaperCut مع الصفحة التي يتم عرضها، مقارنة بالـ Component أو الـ Action الذي يتم تنفيذه فعليًا في الخلفية.
وفق شرح Huntress، يمكن لطلب مُصمم بطريقة محددة الإشارة إلى صفحة يتم استخدامها لتوليد الاستجابة، بينما يعود الـ Component أو الإجراء الذي سيُنفذ إلى صفحة أخرى.
المشكلة تظهر عندما يعتمد فحص الصلاحيات على الصفحة المعروضة، ولا يفرض بشكل صحيح الصلاحيات المطلوبة للإجراء الخلفي نفسه. تحت هذه الظروف، يصبح من الممكن لطلب غير مصادق عليه تشغيل وظائف لا يفترض أن تكون متاحة قبل تسجيل الدخول.
عمليًا، لا يعني ذلك مجرد مشاهدة صفحة إدارية؛ بل يمكن استغلال هذه القدرة لإحداث تغييرات في إعدادات الخادم، وهي النقطة التي تمهّد لاستغلال الثغرة الثانية.
#CVE-2026-82078: عندما يتحول اسم Driver إلى مدخل لتحميل الكود
الثغرة الثانية موجودة في أدوات الاتصال بقاعدة البيانات داخل PaperCut.
التطبيق يستطيع إنشاء Database Driver Classes بصورة ديناميكية استنادًا إلى أسماء Drivers موجودة في الإعدادات. المشكلة أن هذه الأسماء لا يتم التحقق منها مقابل Allowlist محددة من Drivers معتمدة.
التحميل الديناميكي للفئات في Java ميزة مشروعة بحد ذاتها، لكن عندما يستطيع المهاجم التأثير في اسم الـ Class الذي سيقوم التطبيق بتحميله، تتحول هذه المرونة إلى سطح يمكن استغلاله لتنفيذ كود غير موثوق.
وفق watchTowr، هنا تكتمل السلسلة: CVE-2026-81578 تتيح الوصول غير المصرح به إلى الوظائف اللازمة لتغيير الإعداد، ثم يستخدم المهاجم هذا الإعداد للوصول إلى مسار التحميل الديناميكي المتأثر بـ CVE-2026-82078.
يمكن تلخيص المسار كالتالي:
Authentication Bypass
↓
Configuration Modification
↓
Dynamic Class Loading
↓
Remote Code Execution (RCE)
#كيف تعمل سلسلة الهجوم؟
تبدأ العملية بطلب غير مصادق عليه يصل إلى واجهة إدارة PaperCut. باستخدام CVE-2026-81578، يمكن تحت ظروف محددة تشغيل Backend Action قبل اكتمال عملية التحقق من صلاحيات الوصول.
بعد ذلك يحصل المهاجم على القدرة اللازمة للتأثير في إعدادات يستخدمها التطبيق. هذه المرحلة مهمة لأن CVE-2026-82078 تعتمد على قيم قابلة للتهيئة تحدد الـ Database Driver Class الذي سيتم تحميله.
عندما يصل التطبيق إلى مرحلة إنشاء الـ Class استنادًا إلى القيمة المعدلة، يؤدي غياب التحقق من الاسم مقابل Allowlist موثوقة إلى فتح الطريق أمام تحميل Class يتحكم فيه المهاجم.
هنا تنتقل السلسلة من خلل في Access Control إلى تنفيذ كود فعلي داخل عملية التطبيق.
#ماذا فعل المهاجمون بعد الوصول؟
أفادت Huntress بأنها رصدت استغلالًا محدودًا في بيئتين لعملائها. النشاط الذي شوهد حتى الآن يبدو أقرب إلى مرحلة الاستطلاع والتحقق من نجاح الاختراق أكثر من كونه حمولة نهائية واضحة.
في إحدى الحالات استخدم المهاجمون أوامر مشفرة باستخدام Base64، ثم نفذوا سلسلة أوامر لمعرفة حساب المستخدم وإصدار نظام التشغيل:
whoami & ver
الأمر whoami يعرض هوية الحساب الذي يعمل الكود ضمن صلاحياته، بينما يعرض ver إصدار نظام Windows.
وفي حادثة أخرى رُصدت بتاريخ 27 أغسطس 2026، استخدم المهاجمون نسخة مختلفة من ملف الـ .class تضيف أمرًا ثالثًا للحصول على قائمة العمليات الجارية:
whoami & ver & tasklist
بهذا يحصل المهاجم سريعًا على ثلاث معلومات أساسية عن البيئة: هوية المستخدم الحالي، إصدار نظام التشغيل، والعمليات العاملة على الخادم.
#Java Class يعمل على Windows وLinux
لم يقتصر النشاط على تنفيذ أوامر مباشرة. رصد الباحثون كذلك نشر ملف Java .class صُمم بطريقة تجعله غير مرتبط بنظام تشغيل واحد، ويمكنه تشغيل أوامر على كل من Windows وLinux.
الغرض الذي شوهد من هذا الـ Class كان تنفيذ عمليات Fingerprinting للنظام والحصول على قائمة بالملفات المخزنة على الجهاز.
ويتم حفظ المخرجات في ملف باسم:
Udydn.out
داخل المسار التالي نسبةً إلى مجلد تثبيت البرنامج:
/data/content/
وجود Payload مكتوب بـ Java يتوافق مع طبيعة التطبيق نفسه، ويمنح المهاجم طريقة واحدة للعمل على أكثر من نظام تشغيل بدل الاعتماد على Payload منفصل لكل منصة.
#إزالة آثار التنفيذ
بعد انتهاء مرحلة الاستطلاع، يقوم ملف الـ Java .class بحذف عدد من الملفات.
بحسب Huntress، شملت الملفات المحذوفة:
Udydn.out
server.log
/data/internal/derby.log
الملف Udydn.out هو الملف الذي استُخدم لتخزين نتائج الأوامر والاستطلاع، بينما يمثل server.log وderby.log سجلين قد يكونان مهمين أثناء التحقيق في النشاط.
حذف هذه الملفات يعني أن العملية لا تتوقف عند تنفيذ الأوامر، بل تمتد إلى إزالة بعض الآثار التي قد تساعد المحققين في إعادة بناء ما حدث لاحقًا.
#ما الهدف النهائي للمهاجمين؟
حتى الآن لا توجد إجابة مؤكدة.
أوضح John Hammond من Huntress أن الأدلة المتوفرة لا تكفي لتحديد الهدف النهائي للجهات المهاجمة. النشاط المرصود يتوافق أكثر مع مرحلة مبكرة من الاستطلاع أو التحقق من نجاح الوصول؛ فالعمليات التي شوهدت ركزت على معرفة هوية المستخدم، نظام التشغيل، الملفات، والعمليات الجارية.
لذلك لا يمكن من المعلومات الحالية الجزم بما إذا كان الهدف النهائي سرقة البيانات، زرع برمجيات خبيثة، التحرك داخل الشبكة، أو استخدام الخادم كنقطة انطلاق لمرحلة أخرى.
#لماذا يمثل PaperCut هدفًا جذابًا؟
PaperCut ليس مجرد برنامج طباعة يعمل على محطة مستخدم منفردة. في كثير من البيئات يعمل كخادم مركزي لإدارة الطباعة والمستخدمين والوثائق.
وهذا يمنحه قيمتين للمهاجم في الوقت نفسه: قد يكون نقطة دخول إلى الشبكة المؤسسية إذا كانت واجهته الإدارية متاحة مباشرة عبر الإنترنت، كما أن نظام إدارة الطباعة نفسه قد يتعامل مع معلومات ووثائق حساسة.
لهذا وصف Jake Knott من watchTowr PaperCut بأنه هدف جذاب لمهاجمين ذوي دوافع مختلفة، ليس فقط بسبب إمكانية استخدامه كنقطة ارتكاز داخل البيئة، بل أيضًا بسبب حساسية البيانات التي قد تمر عبر منظومة الطباعة.
#مشكلة Patch Bypass
القصة لم تتوقف عند إصدار أول Patch.
أعلنت PaperCut عن إصلاح طارئ ثانٍ يتضمن إجراءات Hardening إضافية تتجاوز الإصلاح الطارئ الأول.
في المقابل، قالت watchTowr إنها اكتشفت عدة وسائل لتجاوز الإصلاحات Patch Bypasses، إضافة إلى ثغرة أخرى تتعلق بتجاوز المصادقة. ووفق المعلومات المنشورة، تم التعامل مع أحد أساليب تجاوز الإصلاح ضمن التحديث الطارئ الثاني.
لكن watchTowr أشارت كذلك إلى العثور على وسائل تجاوز جديدة تؤثر في أحدث نسخة كانت مصححة بالكامل وقت البحث.
هذه النقطة تجعل التعامل مع الحادثة أكبر من مجرد التحقق من أن Patch سابق تم تثبيته؛ لأن مشهد الاستغلال والإصلاحات كان يتغير أثناء التحليل نفسه.
#كيف يمكن اكتشاف النشاط؟
من المؤشرات التي أشارت إليها watchTowr البحث في سجلات PaperCut عن أخطاء تحتوي على النص التالي:
Database error looking up cardID: VALUES CAST
ظهور هذه الرسالة يستحق التحقيق، خصوصًا على خادم PaperCut كان متاحًا من الإنترنت.
كما رصدت Huntress أوامر وملفات ومسارات مرتبطة بالنشاط الذي شاهدته، منها:
whoami & ver
whoami & ver & tasklist
Udydn.out
/data/content/
/data/internal/derby.log
server.log
لكن وجود Udydn.out قد يكون مؤقتًا، لأن ملف الـ Java .class المرصود يقوم بحذفه بعد انتهاء العملية.
#المعالجة والتخفيف
تنصح الجهات التي حققت في الحادثة المؤسسات التي تستخدم PaperCut NG أو PaperCut MF بإزالة التعرض المباشر للإنترنت وتطبيق تحديثات PaperCut الأخيرة في أسرع وقت ممكن.
كما توصي PaperCut بتقييد الوصول إلى واجهة الويب الخاصة بـ PaperCut Application Server بحيث يكون متاحًا فقط من عناوين IP موثوقة، أو وضع المسار الإداري خلف VPN أو قناة إدارة أخرى خاضعة للتحكم.
#ماذا يعني ذلك من منظور المخاطر؟
هذه السلسلة مثال واضح على الفرق بين تقييم كل ثغرة بشكل منفصل وتقييم المسار الهجومي الكامل.
CVE-2026-81578 وحدها مشكلة في Access Control، وCVE-2026-82078 وحدها مشكلة في طريقة تحميل Classes ديناميكيًا. لكن عندما يستطيع المهاجم استخدام الأولى للحصول على القدرة المطلوبة لتفعيل الثانية، تتحول النتيجة إلى مسار يؤدي إلى Unauthenticated Remote Code Execution.
من منظور المخاطر، لا تصبح المسألة مجرد CVE مرتفعة الخطورة، بل سؤالًا عن كيفية تفاعل أكثر من ضعف داخل النظام نفسه. وتزداد الخطورة عندما يكون النظام متاحًا من الإنترنت، يعمل كخدمة مركزية داخل المؤسسة، ويتعامل مع مستخدمين ووثائق وأنظمة داخلية.
القصة هنا ليست فقط أن PaperCut احتوى على ثغرتين؛ بل أن ضعفًا في التحقق من الصلاحيات استطاع فتح الطريق أمام ضعف آخر في تحميل الكود، وما بينهما تحولت سلسلة صغيرة من القرارات الداخلية في التطبيق إلى RCE كامل من دون مصادقة.
#مؤشرات الاختراق IOCs
Commands:
whoami & ver
whoami & ver & tasklist
File:
Udydn.out
Paths:
/data/content/
/data/internal/derby.log
Log File:
server.log
Detection String:
Database error looking up cardID: VALUES CAST



