بلاگ/باگ بحرانی اجرای کد از راه دور در FreeSWITCH (CVE-2026-116779)؛ کدام نسخه‌ها آسیب‌پذیرند و چطور وصله کنیم
به‌روز شده

باگ بحرانی اجرای کد از راه دور در FreeSWITCH (CVE-2026-116779)؛ کدام نسخه‌ها آسیب‌پذیرند و چطور وصله کنیم

1405/08/230 بازدید
باگ بحرانی اجرای کد از راه دور در FreeSWITCH (CVE-2026-116779)؛ کدام نسخه‌ها آسیب‌پذیرند و چطور وصله کنیم

باگ بحرانی اجرای کد از راه دور در FreeSWITCH (CVE-2026-116779)؛ کدام نسخه‌ها آسیب‌پذیرند و چطور وصله کنیم

یک آسیب‌پذیری با شناسهٔ CVE-2026-116779 در FreeSWITCH، نرم‌افزار متن‌باز PBX و سوییچ VoIP که خیلی از سرورهای مجازی و اختصاصی روی آن تلفن یا سیستم تماس خودشان را پیاده کرده‌اند، منتشر شده و طبق هشدار رسمی SignalWire در حال اکسپلویت فعال است. CVE در تاریخ ۱۹ آبان ۱۴۰۵ (۲۰۲۶/۱۱/۰۹) به فهرست KEV سازمان CISA اضافه شده، با مهلت رفع ۲۲ آبان (۲۰۲۶/۱۱/۱۲). اگر سرور تماس شما روی FreeSWITCH است، این مطلب را همین حالا بخوانید.

چه اتفاقی افتاده

تابع sofia_presence_handle_sip_i_message() در FreeSWITCH، فیلد «To» یک پیام SIP از نوع MESSAGE را روی کاراکتر + می‌شکافد و سمت چپ آن را به‌عنوان انتخاب‌کنندهٔ یک پروتکل چت در نظر می‌گیرد. ماژول mod_dptools که به‌طور پیش‌فرض همراه FreeSWITCH نصب می‌شود، یک رابط چت با نام api ثبت می‌کند که بدنهٔ پیام را مستقیم به switch_api_execute() می‌دهد.

نتیجه این می‌شود که یک کاربر از راه دور، بدون داشتن اکانت یا رمز عبور روی آن FreeSWITCH (در تنظیمات پیش‌فرض)، فقط با رساندن یک پیام SIP MESSAGE به یکی از پروفایل‌های سرور، می‌تواند تعیین کند کدام دستور داخلی API اجرا شود؛ از جمله دستورهایی که سطح سیستم‌عامل را با همان دسترسی پردازهٔ FreeSWITCH اجرا می‌کنند. یعنی اجرای کد دلخواه روی سرور، بدون نیاز به لاگین.

مسیر اکسپلویت آسیب‌پذیری CVE-2026-116779: یک پیام SIP MESSAGE از مهاجم تا اجرای دستور در FreeSWITCH

چه کسی آسیب‌پذیر است

محصولSignalWire FreeSWITCH (سوییچ VoIP/PBX متن‌باز، معمولا روی VPS یا سرور اختصاصی self-hosted)
نسخه‌های آسیب‌پذیرتمام نسخه‌های ۱.۱۱.۲ و پایین‌تر
نسخهٔ رفع‌شده۱.۱۱.۳ به بعد
شدتCVSS 3.1: ۹.۸ (بحرانی)
اکسپلویتطبق هشدار SignalWire، در حال اکسپلویت در دنیای واقعی

این موضوع برای فهرست KEV سازمان CISA هم تایید شده، یعنی دستگاه‌های دولتی فدرال آمریکا ملزم به رفع آن تا ۲۲ آبان بودند — نشانهٔ خوبی از اینکه اکسپلویت واقعی و فعال است، نه یک ریسک نظری و فرضی.

این روزها این تنها آسیب‌پذیری بحرانی اجرای کد از راه دور نیست که ادمین‌های سرور لینوکسی باید روی رادار داشته باشند؛ چند هفته پیش باگ ارتقا امتیاز Fragnesia در هسته لینوکس (CVE-2026-46300) هم همین سطح توجه را می‌خواست.

هر کسی که FreeSWITCH را خودش روی سرور نصب و مدیریت می‌کند (نه سرویس‌های PBX ابری که ارائه‌دهندهٔ دیگری آپدیت می‌کند) باید همین حالا نسخه را چک کند، چون حمله احتیاج به حساب کاربری در FreeSWITCH ندارد و فقط کافی است پورت SIP سرور از شبکه قابل دسترسی باشد.

این باگ چقدر خطرناک است

امتیاز CVSS برابر ۹.۸ یعنی هر سه بخش محرمانگی، یکپارچگی و دسترس‌پذیری به‌طور کامل تحت تاثیر قرار می‌گیرند (C:H/I:H/A:H) و حمله از راه شبکه، بدون نیاز به دسترسی قبلی یا تعامل کاربر انجام می‌شود (AV:N/AC:L/PR:N/UI:N). به زبان ساده: مهاجم فقط با فرستادن یک پیام SIP خاص می‌تواند کنترل کامل سرور را به دست بگیرد، تماس‌ها را دستکاری کند، فایل‌های پیکربندی و اطلاعات ورود را بخواند، یا هر دستور دیگری با سطح دسترسی FreeSWITCH اجرا کند.

این سطح از ریسک برای یک سرویس تماس که معمولا به شبکه تلفن، دیتابیس مشتریان و گاهی سیستم‌های پرداخت هم وصل است، یعنی نفوذ به FreeSWITCH می‌تواند دروازهٔ ورود به بقیهٔ زیرساخت هم باشد.

چطور نسخهٔ سرور خودم را چک کنم

اگر FreeSWITCH از طریق پکیج سیستم نصب شده:

dpkg -l | grep freeswitch
# یا روی توزیع‌های RPM
rpm -qa | grep freeswitch

اگر از سورس کامپایل شده یا پکیج بالا چیزی نشان نداد:

freeswitch -version

یا از طریق کنسول مدیریتی خودش، وقتی سرویس در حال اجراست:

fs_cli -x "version"

هر خروجی که عدد نسخه را ۱.۱۱.۲ یا پایین‌تر نشان دهد (مثلا ۱.۱۰.x، ۱.۱۱.۰، ۱.۱۱.۱، ۱.۱۱.۲) آسیب‌پذیر است. فقط ۱.۱۱.۳ و نسخه‌های بعدی این مشکل را ندارند.

چطور وصله یا کاهش خطر کنیم

راه قطعی فقط یک چیز است: آپدیت به FreeSWITCH 1.11.3 یا بالاتر. این نسخه هم خود این حفره را می‌بندد و هم رفع‌های دیگری که در همان بازه برای ۱.۱۱.۲ منتشر شده بود را همراه خودش دارد.

# دبیان/اوبونتو، اگر از ریپازیتوری رسمی SignalWire استفاده می‌کنید
apt update && apt list --upgradable | grep freeswitch
apt install freeswitch

اگر همین امروز امکان آپدیت فوری نیست، تا قبل از وصله کردن:

  • دسترسی به پورت SIP/MESSAGE را با فایروال فقط به شبکه‌ها و همتاهای مورد اعتماد محدود کنید، نه کل اینترنت. اگر هنوز قانون‌های فایروال سرورتان را با nftables یا ابزار مشابهی مرتب نکرده‌اید، همین مرحله وقت خوبی برای آن است.
  • ماژول mod_dptools و رابط چت api آن را از نظر دسترسی بررسی کنید.
  • یک ابزار تشخیص نفوذ مثل Wazuh هم می‌تواند رفتار غیرعادی روی سرور را زودتر از حمله کامل نشان دهد.

هیچ راه‌حل جایگزینی که بدون آپدیت این حفره را کامل ببندد وجود ندارد — محدود کردن دسترسی شبکه فقط ریسک را کم می‌کند، رفعش نمی‌کند.

اگر FreeSWITCH روی سرور مجازی خودتان اجراست، همین حالا قبل از هر تغییری یک snapshot از سرور بگیرید تا اگر آپدیت مشکلی ایجاد کرد بتوانید سریع برگردید، بعد آپدیت را انجام دهید و فایروال سرور را هم یک‌بار مرور کنید. روی سرور مجازی آریانت کنترل کامل این مراحل با شماست: snapshot قبل از تغییر، دسترسی روت برای آپدیت و پیکربندی فایروال خودتان.

سؤالات متداول

آیا این باگ فقط مخصوص نسخهٔ متن‌باز FreeSWITCH است؟ بله، طبق توصیهٔ امنیتی SignalWire این مشکل مربوط به خود پروژهٔ متن‌باز FreeSWITCH است و نسخه‌های ۱.۱۱.۲ و پایین‌تر را شامل می‌شود.

برای اکسپلویت این باگ مهاجم باید اکانتی روی سرور داشته باشد؟ نه، در تنظیمات پیش‌فرض مهاجم بدون حساب یا رمز عبور، فقط با فرستادن یک پیام SIP MESSAGE می‌تواند حمله را انجام دهد.

اگر همین الان نمی‌توانم آپدیت کنم چه کار کنم؟ دسترسی به پورت SIP/MESSAGE را با فایروال فقط به شبکه‌های مورد اعتماد محدود کنید تا زمان آپدیت، اما این فقط ریسک را کم می‌کند و جای آپدیت را نمی‌گیرد.

چطور بفهمم سرورم اصلا اکسپلویت شده یا نه؟ لاگ‌های FreeSWITCH و دستورهای اجراشده از طریق رابط api را برای فراخوانی‌های غیرعادی یا اجرای دستورهای سیستم‌عامل بررسی کنید؛ هر رفتار ناشناخته در فایل‌های پیکربندی یا کاربرهای جدید هم باید بررسی شود. پیکربندی Auditd برای همین نوع بررسی روی سرورهای لینوکسی مفید است.

منابع