خانه » CVE-2026-55200

CVE-2026-55200

آسیب‌پذیری Out-of-Bounds Write در libssh2 از طریق packet_length کنترل نشده

توسط Vulnerbyte Alerts
8 بازدید

چکیده

آسیب‌پذیری CVE-2026-55200 در کتابخانه libssh2 ناشی از اعتبارسنجی نامناسب مقدار packet_length هنگام پردازش بسته‌های پروتکل SSH است. این ضعف می‌تواند باعث نوشتن داده خارج از محدوده مجاز حافظه (Out-of-Bounds Write) شود و به مهاجم اجازه دهد با ارسال بسته‌های دستکاری‌شده، عملکرد برنامه‌های مبتنی بر این کتابخانه را تحت تأثیر قرار دهد. در صورت سوءاستفاده موفق، این آسیب‌پذیری می‌تواند منجر به اجرای کد از راه دور (RCE) و انکار سرویس (DoS) شود.

توضیحات

آسیب‌پذیری CVE-2026-55200 در کتابخانه libssh2 به دلیل یک ضعف در محاسبه و مدیریت اندازه حافظه است که مطابق با CWE-680 در دسته سرریز عدد صحیح که باعث سرریز بافر می‌شود (Integer Overflow to Buffer Overflow) قرار می‌گیرد. این نوع ضعف زمانی رخ می‌دهد که یک مقدار عددی بدون بررسی محدوده معتبر، در محاسبات مربوط به اندازه حافظه استفاده شود. در چنین شرایطی، سرریز مقدار عددی می‌تواند باعث محاسبه اشتباه اندازه حافظه موردنیاز شود و در ادامه، داده‌ها خارج از محدوده مجاز حافظه پردازش یا ذخیره شوند. چنین وضعیتی می‌تواند شرایط لازم برای سوءاستفاده مهاجم، از جمله اجرای کد دلخواه یا ایجاد اختلال در عملکرد برنامه، را فراهم کند.

منشأ این آسیب‌پذیری به تابع ssh2_transport_read() واقع در فایل transport.c بازمی‌گردد؛ این تابع در کتابخانه libssh2 مسئول دریافت، رمزگشایی و پردازش بسته‌های دریافتی پروتکل SSH (Secure Shell) است. در نسخه‌های آسیب‌پذیر، مقدار packet_length که از هدر بسته SSH استخراج می‌شود، پیش از استفاده در محاسبات مربوط به تخصیص حافظه، از نظر حداکثر اندازه مجاز بررسی نمی‌شود. در نتیجه، مهاجم می‌تواند بسته‌ای با مقدار غیرعادی برای این فیلد ارسال کند تا اندازه حافظه موردنیاز برای پردازش بسته به‌صورت نادرست محاسبه شود.

بر اساس تحلیل فنی منتشرشده، مقدار packet_length به همراه مقادیر mac_len و auth_len برای محاسبه اندازه حافظه موردنیاز جهت تخصیص در ناحیه Heap استفاده می‌شود. در نسخه‌های آسیب‌پذیر، این محاسبات ابتدا با مقادیر عددی 32 بیتی انجام می‌شوند که می‌تواند باعث بروز سرریز عدد صحیح  شود. به‌عنوان مثال، مهاجم می‌تواند مقدار بسیار بزرگ 0xffffffff را در فیلد packet_length قرار دهد. در این شرایط، نتیجه محاسبات پس از سرریز به مقدار کوچکی تبدیل می‌شود و برنامه حافظه‌ای کمتر از مقدار واقعی موردنیاز را تخصیص می‌دهد. بااین‌حال، در مراحل بعدی پردازش، همچنان از مقدار اصلی packet_length برای پردازش داده‌های بسته استفاده می‌شود. این اختلاف میان اندازه حافظه تخصیص‌یافته و حجم داده پردازش‌شده، باعث نوشتن داده خارج از محدوده مجاز حافظه می‌شود و می‌تواند عملکرد پردازه را تحت تأثیر قرار دهد.

از آنجا که این ضعف در مرحله پردازش بسته‌های لایه انتقال SSH رخ می‌دهد، مهاجم می‌تواند تنها با ارسال بسته‌های SSH دستکاری‌شده و پیش از احراز هویت مسیر آسیب‌پذیر را فعال کند. این حمله به تعامل کاربر یا داشتن حساب کاربری روی سامانه هدف نیاز ندارد و در صورت فراهم بودن شرایط مناسب، ممکن است منجر به اجرای کد از راه دور (RCE) یا انکار سرویس (DoS) شود.

برای این آسیب‌پذیری، کد اثبات مفهوم (POC) منتشر شده است. این POC شامل یک سرور SSH مخرب، ابزار بررسی محاسبات آسیب‌پذیر و نمونه‌ای کنترل‌شده از سناریوی اجرای کد است که نشان می‌دهد چگونه ارسال بسته‌ای با مقدار غیرمجاز packet_length می‌تواند باعث فعال شدن مسیر آسیب‌پذیر، تخصیص نادرست حافظه و در نهایت نوشتن خارج از محدوده مجاز شود.

بر اساس ارزیابی 3.1CVSS ، این آسیب‌پذیری امتیاز 8.1 و شدت بالا (High) را دریافت کرده است. بردار حمله از طریق شبکه است و مهاجم بدون نیاز به سطح دسترسی قبلی یا تعامل کاربر می‌تواند حمله را آغاز کند. بااین‌حال، شرایط لازم برای حمله (Attack Complexity: High) نشان می‌دهد که سوءاستفاده موفق از این ضعف به شرایط فنی خاصی در محیط هدف، مانند نحوه استفاده برنامه از کتابخانه و وضعیت حافظه، وابسته است. این آسیب‌پذیری تأثیر بالایی بر محرمانگی (Confidentiality)، یکپارچگی (Integrity) و دسترس‌پذیری (Availability) دارد.

در ارزیابی CVSS 4.0، این آسیب‌پذیری امتیاز 9.2 و شدت بحرانی (Critical) را دریافت کرده است. در این نسخه، علاوه بر بردار حمله شبکه و نبود نیاز به احراز هویت یا تعامل کاربر، معیارهای جدیدی مانند نیازمندی‌های حمله  نیز در محاسبه امتیاز لحاظ شده‌اند. با توجه به امکان سوءاستفاده پیش از احراز هویت و پیامدهای بالقوه اجرای کد از راه دور (RCE)، این آسیب‌پذیری در CVSS 4.0 امتیاز بالاتری دریافت کرده است

توسعه‌دهندگان libssh2 این آسیب‌پذیری را با انتشار کامیت 97acf3dfda80c91c3a8c9f2372546301d4a1a7a8 پچ کرده‌اند. در این پچ، پیش از محاسبه اندازه حافظه موردنیاز، مقدار packet_length با حداکثر اندازه مجاز بسته (LIBSSH2_PACKET_MAXPAYLOAD) بررسی می‌شود و اگر این مقدار از حد مجاز بیشتر باشد، پردازش بسته متوقف می‌شود. این کنترل محدوده (Boundary Check) از وقوع سرریز عدد صحیح و در ادامه نوشتن داده خارج از محدوده مجاز حافظه جلوگیری کرده و مسیر اصلی سوءاستفاده از این آسیب‌پذیری را مسدود می‌کند.

CVSS

Score Severity Version Vector String
9.2 CRITICAL 4.0 CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
8.1 HIGH 3.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
هشدار سایبری CVE-2026-55200

شکل 1: تفسیر جدول CVSS

 لیست محصولات آسیب پذیر

Versions Product
affected from 0 through 1.11.1 libssh2

لیست محصولات بروز شده

Versions Product
fixed in commit 7acf3dfda80c91c3a8c9f2372546301d4a1a7a8 libssh2

استفاده محصول در ایران

در این جدول، تعداد صفحات ایندکس‌شده در گوگل با دامنه .ir که libssh2 را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.

Approx. Usage in .ir Domain via Google (Total Pages) Search Query (Dork) Product
202 site:.ir “libssh2” libssh2

نتیجه گیری

این آسیب‌پذیری در کتابخانه libssh2 به دلیل اعتبارسنجی نامناسب مقدار packet_length هنگام پردازش بسته‌های پروتکل SSH ایجاد می‌شود و در شرایطی که مهاجم بتواند بسته‌های SSH دستکاری‌شده را از طریق شبکه ارسال کند، می‌تواند باعث نوشتن داده خارج از محدوده مجاز حافظه شود. با توجه به امکان سوءاستفاده پیش از احراز هویت، عدم نیاز به تعامل کاربر، انتشار POC و پیامدهای بالقوه‌ای مانند اجرای کد از راه دور (RCE) و انکار سرویس (DoS)، اعمال اقدامات پیشگیرانه برای کاهش ریسک این آسیب‌پذیری ضروری است. راهکارهای زیر برای کاهش احتمال سوءاستفاده از این ضعف پیشنهاد می‌شوند:

  • به‌روزرسانی libssh2: سازمان‌ها و مدیران سامانه‌ها باید کتابخانه libssh2 را به نسخه‌ای شامل کامیت اصلاحی 97acf3dfda80c91c3a8c9f2372546301d4a1a7a8 به‌روزرسانی کنند تا بررسی محدوده مقدار packet_length پیش از پردازش بسته‌ها اعمال شده و مسیر اصلی سوءاستفاده از آسیب‌پذیری برطرف شود. این اقدام مهم‌ترین راهکار برای رفع ضعف امنیتی محسوب می‌شود.
  • محدود کردن دسترسی شبکه‌ای به سرویس‌های مبتنی بر SSH: تا زمان اعمال پچ امنیتی، دسترسی به سرویس‌های SSH باید تنها به منابع مورداعتماد محدود شود؛ برای این منظور می‌توان با استفاده از فایروال شبکه ، ابزارهایی مانند UFW، iptables یا firewalld را برای محدودسازی اتصال به پورت 22 و جلوگیری از دسترسی غیرضروری پیاده‌سازی کرد.
  • تقویت مکانیزم‌های امنیتی برنامه‌ها: توسعه‌دهندگان و مدیران نرم‌افزارهایی که از کتابخانه libssh2 استفاده می‌کنند، باید برنامه‌ها را با فعال‌سازی قابلیت‌های امنیتی مانند محافظت از پشته (Stack Protector)، جلوگیری از اجرای کد در بخش‌های غیرمجاز حافظه (NX)، تصادفی‌سازی فضای آدرس حافظه (ASLR) و مکانیزم‌های حفاظتی لینک‌کننده مانند RELRO کامپایل و اجرا کنند
  • ایزوله‌سازی محیط اجرای برنامه‌ها: برنامه‌هایی که از libssh2 استفاده می‌کنند و با داده‌های غیرقابل اعتماد در ارتباط هستند، باید در محیط‌های محدودشده مانند کانتینرها اجرا شوند. همچنین فعال‌سازی کنترل‌هایی مانند فایل‌سیستم فقط‌خواندنی (Read-only File System)، حذف دسترسی‌های غیرضروری، محدودسازی فراخوانی‌های سیستمی با Seccomp و اعمال سیاست‌های امنیتی مانند AppArmor یا SELinux می‌تواند سطح دسترسی مهاجم را در صورت سوءاستفاده کاهش داده و از گسترش اثرات حمله جلوگیری کند.
  • مانیتورینگ و شناسایی عملکردهای غیرعادی: تیم‌های امنیتی باید سامانه‌های مانیتورینگ را برای شناسایی الگوهای مشکوک مانند تلاش‌های غیرعادی اتصال SSH، خطاهای پردازش بسته، توقف ناگهانی برنامه، خطاهای مرتبط با حافظه و اندازه‌های غیرمعمول بسته‌های شبکه فعال کنند.

اجرای این اقدامات می‌تواند احتمال سوءاستفاده از این آسیب‌پذیری را کاهش دهد، پیامدهای احتمالی حمله را محدود کند، از ایجاد اختلال در سرویس‌های وابسته به libssh2 جلوگیری نماید و امنیت برنامه‌ها و سامانه‌های مبتنی بر این کتابخانه را افزایش دهد.

امکان استفاده در تاکتیک‌های Mitre Attack (در زمان اجرای حمله)

Reconnaissance (TA0043)

پیش از آغاز حمله، مهاجم سیستم‌ هایی را شناسایی می‌ کند که از libssh2 برای برقراری ارتباطات SSH استفاده می ‌کنند. این مرحله می‌ تواند از طریق شناسایی نرم‌افزارهای مبتنی بر libssh2، بررسی نسخه‌ های مورد استفاده یا هدف قرار دادن کلاینت ‌هایی انجام شود که به سرور SSH مهاجم متصل می ‌شوند. هدف مهاجم، یافتن کلاینت‌ هایی است که از نسخه‌ های آسیب‌پذیر 1.11.1 و پایین ‌تر استفاده می‌کنند.

Initial Access (TA0001)

دسترسی اولیه زمانی آغاز می‌شود که کلاینت آسیب‌پذیر به یک سرور SSH مخرب یا به خطر افتاده متصل شود. در جریان برقراری ارتباط SSH، سرور بسته‌ های دستکاری ‌شده‌ ای ارسال می‌ کند که شامل مقدار غیرمجاز در فیلد packet_length هستند. این حمله به احراز هویت نیاز ندارد و قبل از تکمیل فرآیند نشست SSH قابل انجام است.

Execution (TA0002)

هسته اصلی بهره‌ برداری در این مرحله قرار دارد. تابع ssh2_transport_read() مقدار packet_length را بدون بررسی مناسب پردازش می‌کند و در نتیجه عملیات نوشتن خارج از محدوده (Out-of-Bounds Write) روی Heap رخ می‌دهد. مهاجم می‌تواند با کنترل داده‌های ارسال‌ شده، خرابی حافظه ایجاد کرده و در شرایط مناسب، جریان اجرای برنامه را در اختیار گرفته و کد دلخواه را در پردازه کلاینت اجرا کند.

Defense Evasion (TA0005)

از آنجا که Payload در قالب پردازه قانونی استفاده‌ کننده از libssh2 اجرا می‌ شود، فعالیت مخرب می ‌تواند در میان ترافیک عادی SSH پنهان شود. همچنین مهاجم می ‌تواند از تکنیک ‌های مبهم‌ سازی (Obfuscation) یا بارگذاری مرحله‌ای Payload برای کاهش احتمال شناسایی توسط راهکارهای امنیتی استفاده کند.

Impact (TA0040)

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

منابع

  1. https://www.cve.org/CVERecord?id=CVE-2026-55200
  2. https://www.cvedetails.com/cve/CVE-2026-55200/
  3. https://www.vulncheck.com/advisories/libssh2-out-of-bounds-write-via-unchecked-packet-length-in-transport-c
  4. https://vulmon.com/vulnerabilitydetails?qid=CVE-2026-55200
  5. https://vuldb.com/vuln/372111
  6. https://web.archive.org/web/20260623211210/https://github.com/bikini/exploitarium/tree/main/libssh2-cve-2026-55200-poc
  7. https://github.com/xd20111/CVE-2026-55200
  8. https://github.com/libssh2/libssh2/commit/97acf3dfda80c91c3a8c9f2372546301d4a1a7a8
  9. https://nvd.nist.gov/vuln/detail/CVE-2026-55200
  10. https://cwe.mitre.org/data/definitions/680.html

همچنین ممکن است دوست داشته باشید

پیام بگذارید