PuTTY

محبوب‌ترین برنامه SSH Clinet یعنی PuTTY آخرین نسخه از نرم‌افزار خود را منتشر کرد که شامل وصله‌های امنیتی برای ۸ آسیب‌پذیری شدید امنیتی است.

PuTTY یکی از محبوب‌ترین و مورداستفاده‌ترین برنامه‌های منبع باز از نوع client-side است که اجازه می‌دهد تا کاربران از راه دور به کامپیوترها و از طریق SSH، Telnet و پروتکل شبکه Rlogin دسترسی داشته باشند.

تقریباً ۲۰ ماه پس از انتشار آخرین نسخه از این نرم‌افزار، توسعه‌دهندگان PuTTY در اوایل این هفته آخرین نسخه یعنی نسخه ۰٫۷۱ از این نرم‌افزار را برای سیستم‌عامل‌های ویندوز و یونیکس منتشر کردند.

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

در اینجا، تمام ۸ آسیب‌پذیری که در PuTTY  نسخه ۰٫۷۱ وصله شده‌اند به همراه اطلاعات مختصری در مورد هر یک، آورده شده‌اند:

۱) Authentication Spoofing Prompt – ازآنجایی‌که PuTTY راهی برای نشان دادن اینکه آیا یک قطعه خروجی ترمینال واقعی است، ندارد؛ مسئله‌ی رابط-کاربر می‌تواند توسط یک سرور موذی مورد بهره‌برداری قرار گیرد تا یک خطای احراز هویت جعلی در طرف مشتری ایجاد شود و قربانیان را مجبور می‌کند که رمز عبور کلید خصوصی خود را وارد کنند.

در این گزارش آمده است: “اگر سرور همچنین یک کپی از فایل کلیدی رمزگذاری شده شما را به دست آورد (برای مثال، شما ممکن است در نظر گرفته باشید که به علت دارای رمز بودن این فایل، قرار دادن کپی آن در بخش‌های مختلف فرآیندی ایمن است)، درنهایت می‌تواند به کلید خصوصی شما دسترسی پیدا کند.”

۲) Code Execution via CHM Hijacking – هنگامی‌که یک کاربر راهنمای آنلاین را در ابزارهای PuTTY GUI راه‌اندازی می‌کند، این نرم‌افزار تلاش می‌کند که محل فایل کمک را شناسایی کرده درحالی‌که فایل قابل‌اجرای مهاجم به‌جای آن قرار گرفته است.

این رفتار می‌تواند به مهاجم اجازه دهد تا کاربر را گول بزند تا کد موذی را روی سیستم مشتری از طریق فایل CHM ربوده شده اجرا کند.

“اگر شما PuTTY را از یک دایرکتوری اجرا کنید که مهاجم بتواند به‌گونه‌ای برنامه‌ریزی کند تا کد نامربوط خود را در آن فایل قرار دهد، این بدان معنی است که اگر کسی فایلی به نام putty.chm را در آن دایرکتوری قرار دهد، سپس PuTTY فکر می‌کند که این فایل یک فایل کمک واقعی است و آن را به htmlhelp.exe می‌دهد.”

۳) Overflow Buffer in Unix PuTTY Tools – طبق گزارش منتشرشده، اگر یک سرور پورت‌های forwarding بیش‌ازحدی را باز کند، PuTTY برای یونیکس توصیف‌کننده فایل ورودی را bounds-check نمی‌کند، که درنهایت منجر به یک مسئله سرریز بافر می‌شود.

در این گزارش آمده است: “ما نمی‌دانیم که آیا این مسئله از راه دور قابل بهره‌برداری است یا نه، اما اگر شما هر گزینه‌ای را فعال کرده باشید که سرور را قادر به باز کردن یک کانال کند برای forwarding، agent forwarding و یا X11 forwarding حداقل می‌تواند از طریق یک سرور SSH موذی و از راه دور فعال شود.”

۴) Reusing Cryptographic Random Numbers – این مسئله درروشی قرار دارد که یک عدد تصادفی رمزنگاری‌شده در PuTTY تولید می‌شود و گاهی اوقات از یک دسته از بایت‌های تصادفی دو بار استفاده می‌کند.

“این امر به دلیل یک سرریز بافر یک بایتی در pool کد تصادفی اتفاق می‌افتاد. اگر آنتروپی از یک منبع خارجی به pool تصادفی به‌طور دقیق درزمانی که شاخص current-position در انتهای pool قرار دارد، تزریق شود؛ باعث می‌شود بافر pool توسط یک بایتoverrun  شود و بایت کمتری از position index خود را بازنویسی کند.”

۵) Integer Overflow Flaw – تمام نسخه‌های قبلی از نرم‌افزار PuTTY از یک مسئله سرریز Integer رنج  می‌برند که به دلیل عدم بررسی اندازه کلید در مبادله کلید RSA به وجود می‌آید.

یک سرور از راه دور می‌تواند از این آسیب‌پذیری با ارسال یک کلید RSA کوتاه، بهره‌برداری کند که منجر به سرریز Integer و بازنویسی غیرمجاز حافظه می‌شود.

توسعه‌دهندگان PuTTY مطمئن نیستند که آیا این نقص می‌تواند برای کنترل کردن مشتری مورد بهره‌برداری قرار گیرد یا نه، اما ازآنجایی‌که این مسئله در هنگام مبادله کلید اتفاق می‌افتد و قبل از بررسی کلید میزبان، سرریز می‌تواند توسط حمله MitM به وجود آید حتی اگر مردمیانی کلید میزبان صحیح را نداند.

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

۶، ۷ و ۸) Terminal DoS Attacks – سه آسیب‌پذیری آخر در PuTTY اجازه می‌دهد تا یک سرور crash کند یا ترمینال مشتری از طریق ارسال خروجی‌های متن متفاوت سرعتش کاهش یابد.

سرورها می‌توانند یک رشته شکسته نشده بلند از کاراکترهایUnicode  را به ترمینال سرویس‌گیرنده ارسال کنند، که می‌تواند منجر به حمله DoS شود که باعث می‌شود سیستم به مقدار نامحدود، حافظه اختصاص دهد.

دومین حمله DoS می‌تواند توسط ارسال کاراکترهای ترکیبی، متن دو ستونی، تعداد فرد از ستون‌های ترمینال و GTK به ترمینال مشتری در خروجی ایجاد شود.

در حمله سوم DoS، با ارسال کاراکترهای width-2 که توسط مشتریان چینی، ژاپنی و کره‌ای استفاده می‌شود، شبیه‌ساز ترمینال PuTTY می‌تواند مجبور به crash شود.

اگر از PuTTY استفاده می‌کنید، مطمئن شوید که آخرین نسخه آن را دانلود کرده و از آن استفاده می‌کنید.

منابع

[۱] https://www.chiark.greenend.org.uk/~sgtatham/putty/releases/0.70.html

[۲] https://thehackernews.com/2019/03/putty-software-hacking.html