بعضی از کارشناسان امنیت سایبری در این هفته در توئیتر در مورد این موضوع بحث کردند که از HTTPS استفاده نشود[۱] و پیشنهاد کردند که توسعه‌دهندگان نرم‌افزار تنها به تائید بسته‌های امضا پایبند باشند، زیرا APT در لینوکس هم همین کار را می‌کند.

به طرز عجیبی، یک محقق امنیتی بلافاصله پس‌ازاین بحث جزئیات جدیدی از یک نقص اجرای کد از راه دور در ابزار apt-get را آشکار کرد که از راه دور می‌تواند مورد بهره‌برداری قرار گیرد و توسط یک حمله‌کننده مردی-در-میان و از راه دور ماشین‌های لینوکس را در معرض خطر قرار دهد.

این نقص، ظاهراً، یک‌بار دیگر نشان می‌دهد که اگر اکوسیستم دانلود نرم‌افزار از HTTPS برای برقراری ارتباط ایمن استفاده کند، از چنین حملاتی به‌سادگی می‌تواند در وهله اول جلوگیری شود.

این آسیب‌پذیری (CVE-2019-3462) که توسط Max Justicz کشف شد، در مدیریت بسته APT قرار دارد و ابزاری است که به‌طور گسترده مورداستفاده قرار می‌گیرد و نصب، به‌روزرسانی و حذف نرم‌افزارها را در Debian، Ubuntu و سایر توزیع‌های لینوکس مدیریت می‌کند.

بر اساس یک پست وبلاگ که توسط Justicz منتشرشده[۲] و جزئیات آن با The Hacker News به اشتراک گذاشته‌ شده است، ابزار APT به‌درستی تنظیمات پارامترهای خاصی را در هنگام تغییر HTTP انجام نمی‌دهد و به مهاجمان مردی-در-میان اجازه می‌دهد تا محتوای موذی را تزریق کرده و سیستم را گول می‌زنند تا بسته‌های تغییر داده‌شده را نصب کند.

هدایت‌کننده‌های APT HTTP در حقیقت به ماشین‌های لینوکس کمک می‌کند تا به‌طور خودکار سرور mirror مناسب را برای دانلود بسته‌های نرم‌افزاری درزمانی که دیگران در دسترس نیستند پیدا کنند. اگر سرور اول به نحوی نتواند این کار را انجام دهد، یک پاسخ را به همراه محل سرور بعدی از جایی که مشتری باید بسته را درخواست کند، بازمی‌گرداند.

Justicz دراین‌باره توضیح می‌دهد: “متأسفانه، URL فرایند HTTP fetcher در حقیقت HTTP Location header را رمزگشایی کرده و کورکورانه آن را به پاسخ ۱۰۳ تغییر مسیر داده‌شده، می‌افزاید.”

همان‌طور که توسط این محقق در یک ویدیوی اثبات ادعا که با The Hacker News به اشتراک گذاشته‌شده آمده است[۳]، یک مهاجم توسط مداخله کردن در ترافیک HTTP بین ابزار APT و یک سرور mirror می‌تواند بسته‌های مخرب را در ترافیک شبکه تزریق کند و کد دلخواه را روی سیستم مورد هدف و با بالاترین سطح امتیازات اجرا کند.

Justicz به THN گفت: “شما می‌توانید بسته‌ی درخواستی را به‌طور کامل جایگزین کنید، همان‌طور که در اثبات ادعای من آورده شده است، شما می‌توانید یک بسته تغییر داده‌شده را نیز جایگزین کنید.”

بدون تردید برای محافظت از یکپارچگی بسته‌های نرم‌افزاری، استفاده از تائید مبتنی بر امضا مهم است، زیرا توسعه‌دهندگان نرم‌افزار روی سرورهای mirror کنترل ندارند، اما این بدان معنا نیست که باید مزایای استفاده از پروتکل HTTPS را به علت پیچیدگی در ارتقاء زیربناها در برخی موارد خاص نادیده بگیرند.

هیچ نرم‌افزار، پلتفرم یا سروری نمی‌تواند ادعا کند که ۱۰۰ درصد امن است، بنابراین تصویب ایده دفاع در عمق(۱) هرگز ایده بدی برای در نظر گرفته شدن نیست.

لازم به ذکر است که کارشناسان امنیت سایبری انتظار ندارند سازمان‌ها یا توسعه‌دهندگان منبع باز، HTTPS را یک‌شبه به‌کارگیرند، اما نباید اقدامات دفاعی را نیز به‌طور کامل رد کنند.

این محقق دراین‌باره توضیح می‌دهد: “به‌طور پیش‌فرض، Debian و Ubuntu هر دو از مخازن http ساده و خارج از جعبه استفاده می‌کنند (Debian در طول نصب به شما اجازه می‌دهد تا انتخاب کنید چه mirror را می‌خواهید، اما در حقیقت با پشتیبانی از مخازن https ارسال نمی‌شود و شما ابتدا باید apt-transport-https را نصب کنید).

“پشتیبانی از http خوب است. من فقط فکر می‌کنم که قرار دادن مخزن https به‌طور پیش‌فرض دارای اهمیت بیشتری است و به کاربران اجازه می‌دهد که امنیت خود را در صورت عدم نیاز به https با تغییر آن به http کاهش دهند.”

توسعه‌دهندگان نرم‌افزار APT نسخه به‌روز شده ۱٫۴٫۹ را منتشر کرده‌اند تا این آسیب‌پذیری ناشی از اجرای کد از راه دور را رفع کنند.

ازآنجاکه apt-get بخش اصلی بسیاری از توزیع‌های مهم لینوکس از قبیل Debian و Ubuntu است که هر دو نقص را تائید کرده و به‌روزرسانی‌های امنیتی را منتشر کرده‌اند، به‌شدت توصیه می‌شود تا کاربران لینوکس سیستم خود را در اسرع وقت به‌روزرسانی کنند.

منابع

[۱] https://twitter.com/TheHackersNews/status/1086659984958652416

[۲] https://justi.cz/security/2019/01/22/apt-rce.html

[۳] https://youtu.be/POrzJvtZY_g

[۴] https://thehackernews.com/2019/01/linux-apt-http-hacking.html


(۱) defense-in-depth