مجموعه‌ای از آسیب‌پذیری‌های ۳۶ ساله در پیاده‌سازی پروتکل کپی ایمن(۱) یا SCP در بسیاری از برنامه‌های کاربردی مشتری کشف شدند که می‌توانند توسط سرورهای موذی مورد بهره‌برداری قرار گیرند تا فایل‌های دلخواه را در دایرکتوری مشتری SCP و به‌صورت غیرمجاز بازنویسی کنند.

پروتکل کنترل جلسه(۲) (SCP)، که به‌عنوان کپی ایمن نیز شناخته می‌شود، یک پروتکل شبکه است که به کاربران اجازه می‌دهد تا فایل‌ها را به‌صورت ایمن بین یک میزبان محلی و یک میزبان از راه دور با استفاده از RCP (پروتکل کپی از راه دور) و پروتکل SSH انتقال دهند.

به‌عبارت‌دیگر، SCP، که از سال ۱۹۸۳ شروع شده است، یک نسخه ایمن RCP است که از تأیید و رمزگذاری پروتکل SSH برای انتقال فایل بین یک سرور و یک مشتری استفاده می‌کند.

این آسیب‌پذیری‌ها که توسط Harry Sintonen، یکی از مشاوران امنیت ارشد F-Secure، کشف شده‌اند به دلیل اعتبارسنجی ضعیف که توسط مشتریان SCP انجام می‌شود، به وجود آمده است که می‌تواند توسط سرورهای موذی و مهاجمان مردی در میان(۳) (MiTM) مورد بهره‌برداری قرار گیرند تا فایل‌های دلخواه روی سیستم مشتری قرار داده‌شده یا نوشته شود.

Sintonen دراین‌باره این‌گونه توضیح می‌دهد: “بسیاری از مشتریان SCP قادر به تأیید اینکه آیا اشیاء بازگشت داده‌شده توسط سرور SCP با درخواست‌هایی که ارسال‌شده مطابقت دارند یا نه، نیستند. این مسئله به سال ۱۹۸۳ و rcp، که SCP مبتنی بر آن است، برمی‌گردد. نقص جداگانه‌ای در سمت مشتری اجازه می‌دهد که ویژگی‌های دایرکتوری موردنظر تغییر یابد. درنهایت، دو آسیب‌پذیری دیگر در سرویس‌گیرنده‌ها ممکن است به سرور اجازه دهد که خروجی مشتری را فریب دهند.”

در یک سناریوی حمله خاص، یک سرور تحت کنترل مهاجم می‌تواند فایل bash_aliases را به پوشه خانه قربانی انتقال دهد، که به‌محض اینکه کاربر لینوکس یک shell جدید را راه‌اندازی می‌کند، سیستم را فریب می‌دهد تا دستورات موذی را در آن اجرا کند.

همان‌طور که توسط این محقق توضیح داده شده است، “ارسال فایل‌های اضافی توسط ارسال کنترل ANSI از طریق stderr پنهان می‌شود.”

چندین آسیب‌پذیری مشتری SCP

با توجه به گزارش منتشرشده[۱]، آسیب‌پذیری‌هایی که در زیر ذکر شده است در اوت سال گذشته کشف شدند و همگی به توسعه‌دهندگان مشتریان آسیب‌پذیر، ازجمله OpenSSH ،PuTTY و WinSCP گزارش شدند.

اعتبارسنجی نامناسب نام دایرکتوری (CVE-2018-20685) – یک مشتری SCP آسیب‌پذیر می‌تواند به یک سرور SCP از راه دور اجازه دهد که مجوزهای دایرکتوری موردنظر را با استفاده از نام دایرکتوری خالی (D0777 0 \ n) یا نقطه (D0777 0. n ‘) ویرایش کند.

عدم اعتبارسنجی نام object دریافت شده (CVE-2019-6111) – این آسیب‌پذیری می‌تواند به یک سرور SCP موذی اجازه دهد تا فایل‌های دلخواه را در دایرکتوری موردنظر مشتری SCP بازنویسی کند. اگر عملیات بازگشتی (-r) انجام شود، سرور همچنین می‌تواند زیر فهرست‌های دایرکتوری را دست‌کاری کند (برای مثال بازنویسی .ssh/authorized_keys).

جاسوسی از طریق نام شیء (CVE-2019-6109) – به علت فقدان رمزگذاری کاراکتر در صفحه‌نمایش پیشرفت، خروجی مشتری را می‌توان با استفاده از کد ANSI برای مخفی کردن فایل‌های اضافی دست‌کاری کرد.

جاسوسی از طریق stderr  یا CVE-2019-6110 – این مسئله نیز مشابه مورد فوق است و اجازه می‌دهد یک سرور موذی، خروجی مشتری را دست‌کاری کند.

ازآنجاکه این آسیب‌پذیری‌ها بر اجرای پروتکل SCP تأثیر می‌گذارند، تمامی برنامه‌های کاربردی مشتری SCP، ازجمله OpenSSH، PuTTY و WinSCP، که از SCP به‌عنوان یک استاندارد برای انتقال فایل استفاده می‌کنند، تحت تأثیر این آسیب‌پذیری‌ها قرار می‌گیرند.

WinSCP در ماه اکتبر سال گذشته این آسیب‌پذیری‌ها را با انتشار نسخه ۵٫۱۴ برطرف کرد[۲] و این وصله همچنین در نسخه فعلی ۵٫۱۴٫۴ نیز موجود است.

CVE-2018-20685 در ماه نوامبر ۲۰۱۸ در پیاده‌سازی پروتکل SCP در OpenSSH وصله شد[۳]، هرچند هنوز توسط این توسعه‌دهنده منتشر نشده است. بقیه سه آسیب‌پذیری در نسخه ۷٫۹ همچنان وجود دارند[۴] و آخرین نسخه در ماه اکتبر ۲۰۱۸ منتشر شد.

بااین‌حال، اگر شما نگران سرور SCP موذی هستید، می‌توانید سیستم خود را برای استفاده از SFTP پیکربندی کنید.

به همین ترتیب، Sintonen همچنین یک وصله ارائه کرده است که SCP را در برابر بسیاری از تلاش‌ها برای دست‌کاری روی سرور مقاوم می‌کند، که شما می‌توانید آن را مستقیماً اعمال کنید، هرچند ممکن است برخی مشکلات را ایجاد کند.

به نظر می‌رسد PuTTY تاکنون این آسیب‌پذیری‌ها را برطرف نکرده است، زیرا آخرین نسخه منتشر شده توسط PuTTY نسخه ۰٫۷ بوده است که در ژوئیه ۲۰۱۷ منتشر شده است.

به کاربرانی که فکر می‌کنند این آسیب‌پذیری‌ها ممکن است به آن‌ها آسیب برساند، توصیه می‌شود تا وصله‌های منتشرشده را دنبال کرده و آن‌ها را به‌محض اینکه در دسترس قرار گرفتند، اعمال کنند.

منابع

[۱] https://sintonen.fi/advisories/scp-client-multiple-vulnerabilities.txt

[۲] https://winscp.net/tracker/1675

[۳]https://github.com/openssh/openssh-portable/commit/6010c0303a422a9c5fa8860c061bf7105eb7f8b2

[۴] https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

[۵] https://thehackernews.com/2019/01/scp-software-vulnerabilities.html


(۱) Secure Copy Protocol (SCP)
(۲) Session Control Protocol
(۳) man-in-the-middle