CUPS یک فریمورک منبع باز برای مدیریت و کنترل چاپگرها در سیستمهای لینوکس و یونیکس میباشد. این یکی از پرکاربردترین کتابخانههای چاپ است که توسط یونیکس، لینوکس و برخی از دستگاههای اپل پشتیبانی میشود.
ما در مقالات قبل به طور مفصل به این موضوع پرداختیم. چندین آسیب پذیری بحرانی در CUPS وجود دارد که وقتی با هم زنجیر میشوند، میتوانند منجر به اجرای کد از راه دور شوند.
این آسیب پذیریها به مهاجم از راه دور اجازه میدهند تا چاپگرهای شبکه را به گونهای اضافه یا پیکربندی مجدد کند که وقتی کاربران سعی دارند از آنها چاپ انجام دهند، چاپگرها کد دلخواه را اجرا کنند.
CUPS همچنین میتواند توسط هکرها برای راهاندازی حملات انکار سرویس توزیع شده ([1]DDoS) با قدرت 600 برابر مورد سوء استفاده قرار گیرد.
وجود یک نقص امنیتی (CVE-2024-47176) در cups-browsed daemon میتواند با سه آسیب پذیری دیگر (CVE-2024-47076، CVE-2024-47175 و CVE-2024-47177) زنجیر شود تا منجر به اجرای کد از راه دور در سیستمهای مشابه یونیکس از طریق یک پکت UDP شود و حملات DDoS را تقویت کند.
خبر خوب این است که یک اسکنر خودکار توسط محقق امنیت سایبری مارکوس هیچینز (معروف به “MalwareTech”) برای کمک به مدیران شبکه نوشته شده است. این اسکنر با اسکن یک شبکه لوکال، دستگاههایی را که از سرویسهای آسیب پذیر CUPS-Browed استفاده میکنند، شناسایی خواهد کرد.
اسکن سیستمهای آسیب پذیر CUPS
مروری سریع بر آسیب پذیری CVE-2024-47176
همانطور که گفته شد، آسیب پذیری CVE-2024-47176، یک نقص امنیتی در cups-browsed daemon است و از این واقعیت ناشی میشود که cups-browsed پورت کنترل خود (پورت UDP 631) را به INADDR_ANY متصل میکند و آن را در معرض دید عموم قرار میدهد.
از آنجایی که درخواستها احراز هویت نمیشوند، هر کسی که بتواند به این پورت دسترسی پیدا کند، خواهد توانست به cups-browsed دستور دهد تا چاپگر را شناسایی کند.
در مواردی که پورت از طریق اینترنت قابل دسترسی نیست (به دلیل فایروال یا NAT)، ممکن است همچنان از طریق شبکه لوکال قابل دسترس باشد، که این خود امکان افزایش سطح دسترسی و حرکت جانبی در شبکه را فراهم میآورد.
نحوه اسکن CVE-2024-47176
یک هکر به طور معمول، فرآیند سوء استفاده از آسیب پذیری را با ارسال یک درخواست طراحی شده خاص به cups-browsed به پورت UDP 631 آغاز میکند و باعث میشود که به یک URL مخرب تحت کنترل خود دسترسی پیدا کند.
به عنوان مثال، یک پکت UDP حاوی http://<attacker_server>/printers/malicious_printer است که میتواند باعث ایجاد یک درخواست HTTP به http://<attacker_server>/printers/malicious_printer شود.
چنانچه URL به عنوان یک چاپگر مخرب ارائه شود، میتواند با سایر CVEها زنجیره گردد تا شرایط اجرای کد از راه دور را به دست آورد.
اگر دستگاهی که نمونه cups-browsed آسیب پذیر را اجرا میکند، پکت UDP را دریافت کند، درخواست را تفسیر کرده و یک فراخوانی HTTP به سرور ارسال میکند، بنابراین فقط آنهایی پاسخ میدهند که به عنوان سرور آسیب پذیر مشخص شدهاند.
اسکن خودکار با cups_scanner.py
این اسکنر پایتون همه چیز را برای شما مدیریت میکند (هم سرور HTTP و هم اسکن). اسکریپت، یک سرور HTTP موقت را از طریق http.server روی یک ip و پورت مشخص راهاندازی میکند، سپس پکتهای UDP را به هر IP در محدوده مشخص ارسال میکند.
سرور HTTP به طور خودکار نمونههای آسیب پذیر cups-browsed را فراخوانی کرده و آنها را در دیسک ثبت میکند. لاگهای کاربرپسند به صورت logs/cups.log و درخواستهای HTTP خام در logs/requests.log نوشته میشوند.
مدیران شبکه با استفاده از این اسکنر میتوانند، سیستمهای آسیب پذیر را شناسایی کرده و نسبت به پچ یا پیکربندی مجدد آنها اقدام کنند.
[1] distributed denial-of-service