في ظل ظروف معينة، يمكن للمهاجمين ربط مجموعة من الثغرات الأمنية في مكونات متعددة لنظام الطباعة مفتوح المصدر CUPS لتنفيذ تعليمات برمجية عشوائية عن بعد على الأجهزة المعرضة للخطر.
يتم تتبعها كـ CVE-2024-47076 (libcupsfilters)، وCVE-2024-47175 (libppd)، وCVE-2024-47176 (متصفح الكؤوس)، وCVE-2024-47177 (مرشحات الكؤوس) و”https://www.evilsocket.net/2024/09/26/Attacking-UNIX-systems-via-CUPS-Part-I/#Summary” الهدف=”_blank” rel=”nofollow noopener”> اكتشفه سيمون مارجريتيلي، لا تؤثر هذه العيوب الأمنية على الأنظمة في تكوينها الافتراضي.
يعد CUPS (اختصار لـ Common UNIX Printing System) نظام الطباعة الأكثر استخدامًا على أنظمة Linux، وهو أيضًا”http://github.com/OpenPrinting/cups/wiki/Platforms” الهدف=”_blank” rel=”nofollow noopener”> مدعوم بشكل عام على الأجهزة التي تعمل بأنظمة التشغيل المشابهة لـ Unix مثل FreeBSD وNetBSD وOpenBSD ومشتقاتها.
أحد مكوناته هو البرنامج الخفي للأكواب، الذي يبحث في الشبكة المحلية عن الشبكة المعلن عنها أو الطابعات المشتركة ويجعلها متاحة للطباعة على الجهاز. يشبه هذا الطريقة التي يمكن بها لنظامي التشغيل Windows وMac البحث في الشبكة عن طابعات الشبكة البعيدة للطباعة عليها.
وجدت Margaritelli أنه إذا تم تمكين البرنامج الخفي لتصفح الكؤوس، وهو غير موجود في معظم الأنظمة، فسوف يستمع على منفذ UDP 631. وسيسمح أيضًا، بشكل افتراضي، بالاتصالات عن بعد من أي جهاز على الشبكة لإنشاء طابعة جديدة.
اكتشف أنه يمكنه إنشاء طابعة PostScript Printer description (PPD) ضارة يمكن الإعلان عنها يدويًا لخدمة تصفح الكؤوس المكشوفة التي تعمل على منفذ UDP رقم 631.
يؤدي هذا إلى قيام الجهاز البعيد بتثبيت الطابعة الضارة تلقائيًا وإتاحتها للطباعة. إذا قام المستخدم الموجود على ذلك الخادم المكشوف بالطباعة إلى الطابعة الجديدة، فسيتم تنفيذ الأمر الضار الموجود في ملف PPD محليًا على الكمبيوتر.
الأمر الذي سيتم تنفيذه عند إضافة الطباعة من خلال ملف”https://linux.die.net/man/1/foomatic-rip” الهدف=”_blank” rel=”nofollow noopener”> مرشح فوماتيك مزق، الذي ينفذ الأوامر على الجهاز بحيث يتم عرض مهمة الطباعة بشكل صحيح.
تأثير عالمي محدود
على الرغم من أن هذه سلسلة تنفيذ تعليمات برمجية عن بعد، إلا أنه تجدر الإشارة منذ البداية إلى أنه يجب على المهاجمين التغلب على بعض العقبات لاستغلال نقاط الضعف وتحقيق تنفيذ التعليمات البرمجية عن بعد فعليًا.
الأول هو أنه يجب على الأنظمة المستهدفة تمكين البرنامج الخفي لتصفح الكؤوس، والذي لا يتم تمكينه افتراضيًا عادةً، لكشف منافذ UDP الخاصة بها على الشبكة. بعد ذلك، يتعين على المهاجم خداع المستخدم للطباعة من خادم طابعة ضار على شبكته المحلية والذي يظهر فجأة على أجهزته.
“It is a chain of bugs that rely on spoofing a printer in your local network that is automatically added via network discovery if it is turned on at all – usually not in its default configuration. Then an unverified variable that is used to exploit other vulnerabilities in the CUPS system to execute code, but only when a print job is triggered,” قال إيلكا تورونن، المدير التنفيذي للتكنولوجيا الميداني في Sonatype.
“Good news then – it’s an RCE but with several mitigations, including the fact the attacker needs to be able to connect to a computer via UDP which is widely disabled on network ingress and the service is usually not on by default. It seems like the real world impact is low.”
لهذه الأسباب،”https://www.redhat.com/en/blog/red-hat-response-openprinting-cups-vulnerabilities” الهدف=”_blank” rel=”nofollow noopener”> قامت شركة Red Hat بتقييم العيوب كوجود “Important” تأثير شدة بدلا من الحرجة.
في حين أظهرت اختبارات BleepingComputer أن معظم خوادم Linux لدينا لم يتم تمكين الخدمة بها افتراضيًا، إلا أن أحد أجهزة Ubuntu VM الخاصة بنا تم تمكينها. آخرون لديهم”https://x.com/QuinnyPig/status/1839404608055390634″ الهدف=”_blank” rel=”nofollow noopener”> وأشار أيضا على تويتر أن تصفح الكؤوس كان”https://x.com/evilsocket/status/1839397793775116751″ الهدف=”_blank” rel=”nofollow noopener”> ممكّن افتراضيًا على أجهزتهم التي تعمل بنظام Linux.
لا توجد تصحيحات، ولكن تتوفر تدابير التخفيف
بينما لا تزال التصحيحات قيد التطوير، شاركت Red Hat إجراءات التخفيف التي تتطلب من المسؤولين إيقاف خدمة تصفح الكؤوس من التشغيل ومنعها من البدء عند إعادة التشغيل باستخدام الأوامر التالية لكسر سلسلة الاستغلال:
sudo systemctl stop cups-browsedsudo systemctl disable cups-browsed
يمكن لمستخدمي Red Hat أيضًا استخدام الأمر التالي لمعرفة ما إذا كان تطبيق cup-browsed يعمل على أنظمتهم:
sudo systemctl status cups-browsed
إذا ظهرت النتيجة “Active: inactive (dead),” ومن ثم يتم إيقاف سلسلة الاستغلال، ولا يصبح النظام عرضة للخطر. إذا ظهرت النتيجة “running” أو “enabled,” و “BrowseRemoteProtocols” يحتوي التوجيه على القيمة “cups” في ملف التكوين /etc/cups/cups-browsed.conf، فإن النظام معرض للخطر.