iTerm2 یک نرمافزار ترمینال جایگزین برای macOS است که امکانات پیشرفتهتری نسبت به ترمینال پیشفرض macOS ارائه میدهد. این نرمافزار ویژگیهای متعددی مانند پشتیبانی از چندین پنجره و تب، تقسیمبندی پنجرهها، ادغام با tmux، جستجوی پیشرفته، و قابلیتهای شخصیسازی گسترده را شامل میشود.
اخیرا دو آسیبپذیری جدید در iTerm2 کشف شده است که جزئیات هریک از آنها به شرح ذیل است:
- CVE-2024-38395
این آسیبپذیری در iTerm2 مربوط به عدم اعمال تنظیمات "Terminal may report window title" در این نسخهها است که باعث میشود ترمینال به درستی اجازه ندهد که برنامههای خارجی عنوان پنجره را تنظیم کنند. مهاجم میتواند با ارسال دنبالههای فرار (escape sequences) خاص، عنوان پنجره ترمینال را تغییر دهد. اگر این دنبالههای فرار شامل کدهای مخرب باشند، میتوانند باعث اجرای کد دلخواه مهاجم در سیستم قربانی شوند. با این حال، آسیبپذیری به سادگی قابل بهرهبرداری نیست و نیاز به شرایط خاص و ترکیب اطلاعات خاصی دارد تا به طور کامل بهرهبرداری شود.
دنبالهی فرار (escape sequence) مجموعهای از کاراکترها است که به ترمینال یا دستگاههای دیگر داده میشود تا یک عملیات خاص را انجام دهند. این دنبالهها معمولاً با کاراکتر ESC (Escape) آغاز میشوند و میتواند به دنبال آن یک یا چند کاراکتر دیگر باشد که دستور خاصی را تعیین میکنند. در محیطهای ترمینال، دنبالههای فرار برای انجام وظایف مختلفی مانند تغییر رنگ متن، حرکت دادن نشانگر (cursor)، پاک کردن صفحه و تنظیم عنوان پنجره استفاده میشوند. یک مثال ساده از یک دنباله فرار میتواند چیزی شبیه ESC [ 31m باشد. این دنباله باعث میشود که متن بعد از آن به رنگ قرمز نمایش داده شود. ESC نشاندهنده کاراکتر Escape است (که معمولاً به صورت \033 یا \x1b نوشته میشود) و [31m کد رنگ قرمز است.
در مورد آسیبپذیری مذکور، دنبالههای فرار ممکن است برای تنظیم عنوان پنجره استفاده شوند. به عنوان مثال ESC ] 0; new title BEL عنوان پنجره ترمینال را به "new title" تغییر میدهد. در اینجا ESC (یا \033)، ]0; برای شروع تنظیم عنوان پنجره، و BEL (یا \007) برای پایان دادن به دنباله استفاده میشود.
اگر مهاجم بتواند یک دنباله فرار مخرب را به ترمینال بفرستد و تنظیمات ایمنی به درستی اعمال نشده باشند، این دنبالهها میتوانند دستورات مخربی را اجرا کنند. برای مثال، دنبالهای که شامل دستوری مانند rm -rf / باشد، میتواند باعث حذف تمامی فایلهای سیستم شود.
- CVE-2024-38396
این آسیبپذیری به دلیل استفاده بدون فیلتر از یک دنباله فرار برای گزارش عنوان پنجره، که در ترکیب با ویژگی ادغام tmux داخلی (که به طور پیشفرض فعال است)، به یک حملهکننده اجازه میدهد تا کد دلخواه خود را به ترمینال تزریق کند. tmux یک برنامه مولتیپلکسر ترمینال است که به کاربران اجازه میدهد چندین جلسه ترمینال را در یک پنجره واحد مدیریت کنند. این برنامه به ویژه برای کاربرانی که به طور مداوم در محیطهای خط فرمان کار میکنند، مفید است.
این آسیبپذیری به این نحو از نقص قبلی متمایز می شود که در نقص قبلی، ارسال کد مخرب دنبالهی فرار، از طریق یک برنامه مخرب خارجی و مستقیما صورت میپذیرفت؛ اما در این مورد، غیر مستقیم و از طریق تزریق دستور توسط tmux انجام میگیرد.
برای توضیح این امر، ادغام tmux با iTerm2 و چگونگی بهرهبرداری از این ادغام را شرح میدهیم:
iTerm2 دارای یک ویژگی داخلی برای ادغام با tmux است که به کاربران اجازه میدهد از قابلیتهای tmux در داخل iTerm2 بهرهمند شوند. این ادغام به طور پیشفرض فعال است. tmux، مانند بسیاری از برنامههای ترمینال، از دنبالههای فرار برای کنترل و تنظیمات مختلف استفاده میکند. این دنبالههای فرار میتوانند شامل دستورات مختلفی باشند که توسط tmux پردازش میشوند و سپس به iTerm2 ارسال میشوند.
در نسخههای آسیبپذیر iTerm2، دنبالههای فرار ارسال شده از tmux به iTerm2 به طور مناسب فیلتر نمیشوند که باعث میشود دستورات مخرب از طریق این دنبالهها به iTerm2 تزریق شوند و بدون محدودیت اجرا شوند. حال اگر مهاجم یک دنباله فرار مخرب ایجاد کند که شامل دستوراتی برای اجرای کد مخرب است، آن دنباله میتواند به عنوان بخشی از یک برنامه، یک فایل متنی، یا ورودی ترمینال ارسال شود. iTerm2 به دلیل عدم فیلتر مناسب، دنباله فرار را پردازش میکند و بهرهبرداری موفقیتآمیز خواهد بود.
محصولات آسیبپذیر
CVE-2024-38395: تمامی نسخههای قبل از 3.5.2 آسیبپذیر هستند.
CVE-2024-38396: تمامی نسخههای 3.5.x تا قبل از 3.5.2 آسیبپذیر هستند.
توصیههای امنیتی
اقدام سریع نسبت به به روزرسانی به آخرین نسخه به کاربران توصیه میگردد.
در مورد CVE-2024-38395 غیرفعال کردن تنظیمات "Terminal may report window title" برای جلوگیری از امکان تغییر عنوان پنجرهی ترمینال توصیه میگردد.
برای CVE-2024-38396، درصورتی که نیازی به ادغام tmux وجود ندارد توصیه میشود این ادغام غیرفعال شود.
به عناون توصیههای بیشتر، در صورت امکان، استفاده از فیلترهایی برای دنبالههای فرار که از ورود دستورات مخرب جلوگیری میکنند، مانند واسطهای امنیتی بین کاربر و ترمینال از جمله نرمافزارهای پروکسی که دنبالههای فرار را بررسی و فیلتر میکنند، یا اسکریپتهایی که ورودیهای ترمینال را قبل از ارسال به ترمینال اصلی بررسی و فیلتر میکنند یا نرمافزارهایی مانند NoEscape و Termcap/Terminfo توصیه میشود.
همچنین اجرای ترمینالها در محیطهای ایزوله مانند Docker یا ماشینهای مجازی میتواند خطرات را کاهش دهد. در این صورت، حتی اگر کد مخرب اجرا شود، اثرات آن محدود به محیط ایزوله خواهد بود.
استفاده از ابزارهای امنیتی مانند آنتیویروسها و سیستمهای تشخیص نفوذ (IDS) نیز میتوانند با شناسایی و مسدود کردن فعالیتهای مخرب کمک کننده باشند.
منابع خبر:
[1] https://nvd.nist.gov/vuln/detail/CVE-2024-38395
[2] https://nvd.nist.gov/vuln/detail/CVE-2024-38396
[3] https://vin01.github.io/piptagole/escape-sequences/iterm2/rce/2024/06/16/iterm2-rce-window-title-tm…
- 46