آسیب‌پذیری در کلاینت‌های مختلف SCP

کلاینت‌های مختلف SCP دچار آسیب‌پذیری‌هایی هستند که به سرور بدخواه اجازه می‌دهد بدون مجوز تغییراتی را در پوشه مقصد کلاینت ایجاد کند و/یا خروجی نمایش داده شده در کلاینت را دستکاری کند.

 آسیب‌پذیری در کلاینت‌های مختلف SCP

کلاینت‌های مختلف SCP دچار آسیب‌پذیری‌هایی هستند که به سرور بدخواه اجازه می‌دهد بدون مجوز تغییراتی را در پوشه مقصد کلاینت ایجاد کند و/یا خروجی نمایش داده شده در کلاینت را دستکاری کند.

SCP پروتکلی است که با کمک آن می‌توان دستور cp (کپی) را از راه دور اجرا کرد (وقتی مبدا و مقصد روی دو ماشین جداگانه باشند). این پروتکل فایل‌ها را از طریق یک کانال ssh عبور می‌دهد. با استفاده از scp کلاینت می‌تواند از سرور فایل‌هایی را درخواست کند. اگر سرور، سرور بدخواهی باشد (مثلا یک هکر توانسته باشد خود را به جای سرور اصلی جا بزند)، می‌تواند اقدامات مخربی روی کلاینت انجام دهد.

 

آسیب‌پذیری‌ها

1.     اعتبارسنجی نامناسب اسامی دایرکتوری در کلاینت scp (CVE-2018-20685)

سرور می‌تواند مجوزهای فایل‌هایی که به کلاینت می‌فرستد را تعیین کند. اگر سرور نام فایل را خالی یا نقطه (.) قرار دهد و مجوز را برابر 0777 قرار دهد، می‌تواند مجوز دایرکتوری مقصد را به 0777 تبدیل کند، یعنی مجوز خواندن، نوشتن و browse برای همه (“D0777 0 n” یا “D0777 0 .n”). در اصل مشکل اینجا است که کلاینت بررسی نمی‌کند تا نام فایل خالی یا نقطه نباشد.

2.     عدم اعتبارسنجی نام اشیاء دریافت شده در کلاینت (CVE-2019-6111)

در scp سرور تصمیم می‌گیرد چه فایل‌ یا دایرکتوری‌هایی را به کلاینت بفرستد. کلاینت اعتبارسنجی ساده‌ای روی نام اشیاء انجام می‌دهد که باعث جلوگیری از حملات پیمایش دایرکتوری می‌شود. سرور می‌تواند در دایرکتوری مقصد کلاینت، فایل‌ها را رونویسی کند. اگر گزینه -r فعال باشد، سرور می‌تواند زیردایرکتوری‌ها را نیز دستکاری کند. این آسیب‌پذیری در WinSCP با CVE-2018-20684 شناخته می‌شود.

3.     جعل خروجی در کلاینت (CVE-2019-6109)

به علت نبود کدگذاری کاراکترها در نوار پیشرفت (progress bar)، سرور با استفاده از نام اشیاء می‌تواند خروجی کلاینت را دستکاری کند. بنابراین سرور می‌تواند فایل‌های ناخواسته‌ای بفرستد و کاری کند تا نام آنها در خروجی نمایش داده نشود.

4.     جعل خروجی کلاینت از طریق stderr (CVE-2019-6110)

کلاینت  scp خروجی stderr را می‌پذیرد و نمایش می‌دهد که این امر نیز به سرور در جعل خروجی کمک می‌کند.

راه حل

OpenSSH

– در صورت امکان از sftp استفاده کنید یا: از وصله https://sintonen.fi/advisories/scp-name-validator.patch استفاده کنید تا جلو اکثر دستکاری‌های سمت سرور گرفته شود. البته اگر کلاینت و سرور از انطباق الگوی یکسانی در glob() استفاده نکنند ممکن است مشکل ایجاد شود.

Putty

– هنوز راه حلی وجود ندارد.

WinSCP

– WinSCP را به نسخه 5.14 یا بالاتر ارتقاء دهید.

منبع:

 

کلمات کلیدی