- شناسه CVE-2026-55200 :CVE
- CWE-680 :CWE
- yes :Advisory
- منتشر شده: ژوئن 17, 2026
- به روز شده: جولای 14, 2026
- امتیاز: 8.1
- نوع حمله: Out of Bounds Write
- اثر گذاری: Remote code execution(RCE)
- حوزه: پروتکلهای رمزگذاری و ارتباطی
- برند: libssh2
- محصول: libssh2
- وضعیتPublished :CVE
- Yes :POC
- وضعیت آسیب پذیری: patch شده
چکیده
آسیبپذیری 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 |

شکل 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 مخرب انجام میشود، هر کلاینتی که به چنین سروری متصل شود در معرض خطر قرار خواهد گرفت.
منابع
- https://www.cve.org/CVERecord?id=CVE-2026-55200
- https://www.cvedetails.com/cve/CVE-2026-55200/
- https://www.vulncheck.com/advisories/libssh2-out-of-bounds-write-via-unchecked-packet-length-in-transport-c
- https://vulmon.com/vulnerabilitydetails?qid=CVE-2026-55200
- https://vuldb.com/vuln/372111
- https://web.archive.org/web/20260623211210/https://github.com/bikini/exploitarium/tree/main/libssh2-cve-2026-55200-poc
- https://github.com/xd20111/CVE-2026-55200
- https://github.com/libssh2/libssh2/commit/97acf3dfda80c91c3a8c9f2372546301d4a1a7a8
- https://nvd.nist.gov/vuln/detail/CVE-2026-55200
- https://cwe.mitre.org/data/definitions/680.html
گزارش اثبات آسیبپذیری CVE-2026-55200
اطلاعات آسیبپذیری
عنوان: آسیبپذیری Out-of-Bounds Write در libssh2 از طریق packet_length کنترل نشده
شناسه: CVE-2026-55200
وضعیت مشاوره: Advisory / Patch Available
امتیاز: CVSS: 8.1 (High)
محصول: libssh2
محصول / نسخههای آسیبپذیر
در نسخههای زیر:
- libssh2 نسخه 1.11.1 و نسخههای قبل از آن
- بسته های نرم افزاری که نسخه آسیب پذیر libssh2 را به صورت Dynamic Linking یا Static Linking استفاده میکنند
- برنامه هایی که هنگام برقراری اتصال SSH، بسته های دریافتی را از یک سرور غیرقابل اعتماد پردازش میکنند
- نسخه های توزیعی که وصله upstream را دریافت نکرده اند، حتی اگر شماره نسخه آن ها همچنان 1.11.1 باشد
محیطهای درگیر
- سرورهایی که برنامه های خودکار آن ها با استفاده از libssh2 به SSH server های خارجی یا ناشناس متصل میشوند
- سامانه های پشتیبانگیری و انتقال فایل که از libssh2 برای برقراری ارتباط SSH یا SFTP استفاده میکنند
- ابزارهای CI/CD و سیستم های اتوماسیون زیرساخت که به مخازن یا سرورهای SSH متصل میشوند
- برنامه های نوشته شده که libssh2 را مستقیماً در خود ادغام کردهاند
- نرمافزارهایی مانند ابزارهای انتقال فایل، کلاینت های SSH، افزونه های PHP و ابزارهای مدیریتی که از libssh2 استفاده میکنند
- تجهیزات شبکه، سیستم های Embedded و دستگاه های IoT که نسخه آسیب پذیر libssh2 را در Firmware خود دارند
- نرمافزارهایی که به یک سرور SSH تحت کنترل مهاجم یا سروری که مورد نفوذ قرار گرفته متصل میشوند
- برنامه های Static Linking شده، زیرا بروزرسانی بسته سیستمعامل الزاماً نسخه داخلی libssh2 را اصلاح نمیکند
- برنامه ها و سرویس هایی که با کاربر یا سرور SSH ناشناس ارتباط برقرار میکنند
کامپوننتهای آسیبپذیر
- لایه انتقال SSH در فایل transport.c
- تابع ssh2_transport_read
- فیلد چهار بایتی packet_length در بستههای انتقال SSH
- منطق دریافت، تخصیص حافظه و پردازش بسته های ورودی
- محاسبات مربوط به اندازه بافر و میزان داده مورد انتظار
- مسیر پردازش بستهها پیش از کاملشدن احراز هویت کاربر
- برنامه های وابسته ای که libssh2 را به صورت ایستا یا پویا در خود استفاده میکنند
ریشه مشکل (Root Cause Analysis)
ریشه آسیب پذیری، اعتبارسنجی ناکافی فیلد packet_length در تابع ssh2_transport_read است. این فیلد اندازه بسته SSH دریافتی را مشخص میکند و در بخشی از فرآیند اولیه ارتباط، از دادهای خوانده میشود که توسط طرف مقابل شبکه ارسال شده است. در نسخه آسیبپذیر، مقدار دریافت شده فقط از نظر کوچکتر بودن از حداقل مقدار بررسی میشود و کنترل کافی برای جلوگیری از مقدارهای بیش از سقف مجاز وجود ندارد.
در شرایط عادی، packet_length باید در محدودهای قرار داشته باشد که با حداکثر اندازه مجاز بسته SSH و محدودیت های داخلی کتابخانه سازگار باشد. اگر یک سرور مخرب مقدار بسیار بزرگی مانند 0xffffffff را در این فیلد قرار دهد، مقدار حاصل وارد محاسبات تخصیص حافظه و پردازش داده میشود. در صورت وجود تبدیل نوع، محاسبات محدود یا سرریز عددی، اندازه واقعی بافر میتواند با مقدار داده ای که کتابخانه قصد نوشتن آن را دارد ناسازگار شود. در این وضعیت، کتابخانه ممکن است بافری کوچک تر از مقدار داده دریافتی ایجاد کند، اما در مرحله بعد داده ای بزرگ تر از ظرفیت بافر را در آن بنویسد. نتیجه، نوشتن خارج از محدوده در Heap است که میتواند باعث تخریب ساختارهای مجاور حافظه، Crash پردازه، افشای داده یا در شرایط خاص اجرای کد دلخواه شود. این آسیب پذیری در منابع عمومی به عنوان Out-of-Bounds Write و همچنین CWE-680 طبقهبندی شده است.
نکته مهم این است که مهاجم لازم نیست در مرحله اولیه، اعتبارنامه SSH معتبر داشته باشد. مهاجم میتواند یک SSH server مخرب ایجاد کند یا یک سرور موجود را دست کاری کند و سپس برنامه قربانی را به اتصال به آن سرور وادار کند. آسیب پذیری در مرحله پردازش بسته های انتقال رخ می دهد، بنابراین قبل از احراز هویت معمول SSH قابل فعال شدن است. با این حال، این موضوع به معنی قابلحمله بودن تمام سیستم های دارای libssh2 از طریق اینترنت نیست، زیرا برنامه قربانی باید به سرور مهاجم متصل شود.
وصله upstream با اضافهکردن بررسی صریح برای مقدار بزرگتر از LIBSSH2_PACKET_MAXPAYLOAD این مسیر را اصلاح میکند. در صورت خارج بودن طول بسته از محدوده مجاز، تابع با خطای LIBSSH2_ERROR_OUT_OF_BOUNDARY بازمیگردد و از ادامه پردازش داده جلوگیری میکند.
بر اساس PoC عمومی، مهاجم ابتدا یک TCP listener را روی یک پورت مشخص اجرا میکند و خود را به عنوان SSH server معرفی میکند. این سرور یک SSH banner ارسال میکند، banner کلاینت را دریافت میکند و سپس یک پیام ساختگی شبیه SSH_MSG_KEXINIT برای ادامهدادن مسیر Handshake میفرستد. پس از عبور از مرحله ابتدایی Handshake، PoC یک بسته دست کاری شده میسازد. در این بسته، مقدار packet_length برابر 0xffffffff قرار داده میشود، در حالی که مقدار واقعی داده ارسال شده بسیار کوچک تر از این مقدار است. این اختلاف بین طول ادعا شده و داده واقعی، مسیر آسیب پذیر پردازش بسته را هدف قرار میدهد.
در یک برنامه مبتنی بر libssh2 نسخه آسیب پذیر، مقدار بزرگ packet_length میتواند وارد منطق تخصیص و پردازش حافظه شود. در صورت فعال شدن مسیر آسیب پذیر، کتابخانه ممکن است با خطای مدیریت اندازه بافر مواجه شود و داده ها را خارج از محدوده حافظه اختصاص یافته بنویسد. نتیجه قابل مشاهده میتواند Crash، Segmentation Fault، خراب شدن Heap یا رفتار غیر قابل پیش بینی برنامه باشد. در مرحله بعدی، امکان تبدیل خرابی حافظه به اجرای کد دلخواه به عواملی مانند Layout حافظه، نوع Allocator، نسخه کامپایلر، ASLR، PIE، NX، RELRO، Stack Canary و نحوه استفاده برنامه از libssh2 وابسته است. بنابراین وجود PoC Trigger به تنهایی اثبات نمیکند که اجرای کد دلخواه روی همه برنامه های دارای libssh2 امکان پذیر است. منابع عمومی نیز مسیر RCE را به عنوان پیامد احتمالی یا وابسته به شرایط اجرای هدف توصیف کردهاند.
بخش آسیبپذیر
رفتار ناامن سیستم:
کتابخانه libssh2 در نسخه های آسیب پذیر، طول بسته SSH را پیش از پردازش کامل و تخصیص یا استفاده از بافر، در برابر حداکثر اندازه مجاز کنترل نمیکند. در نتیجه، مقدار کنترل شده توسط سرور از راه دور میتواند وارد محاسبات داخلی اندازه بافر شود و باعث ناسازگاری میان فضای اختصاص یافته و داده ای شود که در آن نوشته میشود.
این رفتار به یک سرور مخرب اجازه میدهد بستهای با packet_length غیرواقعی ارسال کند. اگر برنامه قربانی با نسخه آسیب پذیر libssh2 به این سرور متصل شود، امکان خرابی حافظه در پردازش کلاینت وجود دارد.
نحوه سوءاستفاده مهاجم:
- مهاجم یک SSH server مخرب یا دست کاری شده راهاندازی میکند
- مهاجم برنامه قربانی را به اتصال به سرور خود ترغیب میکند
- برنامه قربانی اتصال TCP و Handshake اولیه SSH را آغاز میکند
- سرور مخرب یک پیام ساختگی شبیه SSH_MSG_KEXINIT ارسال میکند
- سرور، بسته ای با مقدار بسیار بزرگ در فیلد packet_length ارسال میکند
- نسخه آسیب پذیر libssh2 مقدار طول را بدون کنترل سقف مناسب پردازش میکند
- خرابی Heap یا نوشتن خارج از محدوده رخ میدهد
- در سادهترین حالت، پردازش کلاینت Crash میکند
- در شرایط خاص و با وجود کنترل مناسب روی Layout حافظه، اجرای کد دلخواه ممکن است
نقش این آسیبپذیری در زنجیره حمله
این آسیب پذیری یک نقطه ورود اولیه (Initial Access) بسیار قدرتمند و یک ابزار اجرای کد از راه دور (Remote Code Execution) در زنجیره حمله محسوب میشود. با توجه به نمرهCVSS ، ماهیت شبکهای، بدون نیاز به احراز هویت، و بدون نیاز به تعامل کاربر، مهاجم میتواند با راه اندازی یک سرور SSH مخرب و فریب کلاینت برای اتصال، کد خود را روی سیستم قربانی اجرا کند.
پیشنیازهای بهرهبرداری (Prerequisites)
- استفاده برنامه قربانی از libssh2 نسخه 1.11.1 یا قبل از آن، یا نسخه ای که وصله مربوطه را دریافت نکرده باشد
- اتصال برنامه قربانی به SSH server مهاجم یا سروری که مورد دست کاری قرار گرفته است
- امکان ارسال بسته های SSH دست کاری شده از سمت سرور
- عبور برنامه از مراحل ابتدایی Handshake
- استفاده از برنامه ای که واقعاً libssh2 را پردازش میکند، نه صرفاً OpenSSH
رفتار مورد انتظار در حالت امن (Expected Secure Behavior)
- مقدار packet_length باید قبل از هرگونه تخصیص یا کپی داده با حداقل و حداکثر مجاز مقایسه شود
- طول بسته نباید از LIBSSH2_PACKET_MAXPAYLOAD بیشتر باشد
- در صورت دریافت طول نامعتبر، پردازش باید فوراً متوقف شود
- تابع باید خطای مشخصی مانند LIBSSH2_ERROR_OUT_OF_BOUNDARY بازگرداند
- داده دریافتی نباید مبنای تخصیص بافر بدون اعتبارسنجی مستقل قرار گیرد
- محاسبات اندازه باید در برابر Integer Overflow و Integer Truncation مقاوم باشند
- برنامه های مصرفکننده باید خطاهای بازگشتی libssh2 را بررسی و اتصال را به صورت ایمن خاتمه دهند
- برنامه ها باید از ASLR، NX، PIE، RELRO و Stack Canary استفاده کنند
- Crash پردازش SSH نباید باعث از بین رفتن کنترل های امنیتی یا اجرای پردازش های جانبی شود
- ارتباط خودکار SSH باید فقط به Endpoint های مورد اعتماد محدود شود
راهکارها و کاهش ریسک (Mitigation / Patch Guidance)
اقدامات فوری برای کاهش ریسک:
- به روزرسانی libssh2 به نسخه های پچ شده
- نصب بروزرسانی امنیتی توزیع لینوکس
- بازسازی و استقرار مجدد برنامه هایی که libssh2 را به صورت Static Linking در خود دارند
- محدود کردن اتصال خروجی SSH از سیستم های اتوماسیون به فهرست Endpoint های مورد اعتماد
اقدامات کوتاهمدت / میانمدت برای کاهش ریسک:
- تهیه فهرست تمام برنامه هایی که libssh2 را به صورت مستقیم یا غیرمستقیم استفاده میکنند
- بررسی وابستگی های نرم افزاری در Curl، افزونه های PHP، ابزارهای انتقال فایل و تجهیزات شبکه
- اسکن باینری ها و کتابخانه ها برای یافتن نسخه های داخلی libssh2
- فعالکردن Crash Reporting و نگهداری Core Dump برای تحلیل فارنزیک
- محدودکردن دسترسی شبکه ای برنامه های SSH به مقصدهای مشخص
- جداسازی سرویس های اتوماسیون و انتقال فایل در Container یا محیط های محدود شده
اقدامات بلندمدت برای کاهش ریسک:
- اجرای Software Composition Analysis برای کتابخانه های Third-Party
- ثبت نسخه دقیق کتابخانه های Static Linking شده
- ایجاد فرآیند Patch Management برای وابستگی های داخلی و Embedded
- جرای تست Fuzzing روی Parser های SSH و مسیرهای دریافت بسته
- استفاده از Sanitizer هایی مانند AddressSanitizer و UndefinedBehaviorSanitizer در فرآیند تست
- بررسی دوره ای ارتباطات خروجی SSH و شناسایی مقصدهای جدید یا غیرمجاز
- الزام استفاده از SSH Host Key Pinning در سرویس های خودکار حساس
تشخیص و مانیتورینگ (Detection & Monitoring)
نشانههای تلاش برای سوءاستفاده:
- Crash ناگهانی برنامه هایی که از libssh2 استفاده میکنند
- Segmentation Fault یا پیام های مرتبط با Heap Corruption
- افزایش اتصال های خروجی SSH به Endpoint های ناشناس
- دریافت بسته های غیرعادی در مراحل ابتدایی Handshake
- ثبت خطاهای مربوط به طول بسته، Parser یا Transport Layer
- ایجاد Core Dump در پردازه های انتقال فایل، CI/CD یا Backup
- اجرای فرایندهای فرزند غیرمنتظره توسط ابزارهای انتقال فایل یا اتوماسیون
- تغییر ناگهانی در رفتار برنامه پس از اتصال به یک SSH server جدید
منابع پیشنهادی برای مانیتورینگ و پایش:
- لاگ های برنامه های مبتنی بر libssh2
- لاگ های CI/CD، Backup و File Transfer
- لاگ های Firewall و Network Detection
- سیستم های SIEM
- راهکارهای EDR و NDR
- Core Dump و Crash Report
- Software Inventory و SBOM
- پایش DNS و مقصدهای SSH خروجی
- Fuzzing و تست Regression برای Parserهای SSH
واکنش به حادثه (Incident Response)
- بهروزرسانی فوری libssh2 به آخرین نسخه
- سیستم یا برنامه مشکوک را از مقصد SSH غیرقابل اعتماد جدا کنید
- اتصال های خروجی SSH مربوط به برنامه آسیب دیده را موقتاً مسدود کنید
- لاگ های برنامه، Firewall، DNS و Proxy را حفظ کنید
- Core Dump و Crash Report را پیش از پاک سازی جمع آوری کنید
- بررسی کنید آیا برنامه قبل از Crash به سرور ناشناس یا دست کاری شده متصل بوده است
- نسخه واقعی libssh2 و روش Linking آن را مشخص کنید
- در صورت وجود Static Linking، فقط بروزرسانی بسته سیستم عامل اکتفا نکنید
- برنامه آسیب دیده را با نسخه وصله شده libssh2 بازسازی و مستقر کنید
- اعتبارنامه ها و کلیدهای SSH مورد استفاده برنامه را در صورت احتمال اجرای کد یا افشای حافظه تعویض کنید
- سایر سیستم هایی را که از همان Endpoint SSH استفاده کردهاند بررسی کنید
- هرگونه اجرای فرایند غیرمجاز، تغییر فایل یا دسترسی غیرعادی را تحلیل کنید
- مستندسازی کامل حادثه (زمان وقوع، نشانهها، اقدامات انجامشده، درسآموختهها) و گزارش به مدیریت ارشد و تیم واکنش سریع (CSIRT)
جریان حمله (Attack Flow)
در نمودار زیر (شکل ۱)، مهاجم با راه اندازی یک سرور SSH مخرب و فریب کاربر برای اتصال، از نقص در اعتبارسنجی packet_length برای اجرای کد روی سیستم قربانی استفاده میکند.

شکل 1: جریان اجرای آسیب پذیری
اثبات مفهوم (PoC) — کاملاً غیرمخرب
آزمایشگاه تخصصی Vulnerbyte، این آسیبپذیری را در محیط ایزوله و کنترلشده با استفاده از نسخه آسیبپذیر بررسی و اجرا کرده است
- این آزمایشگاه شامل نسخه آسیبپذیر libssh2است
- کامپایل و اجرای کد CVE-2026-55200.c واقع در مخزن https://github.com/xd20111/CVE-2026-55200
- این کد یا برنامه یک SSH server آزمایشی ایجاد میکند و پس از دریافت اتصال، banner و پیام Handshake ساختگی ارسال کرده و در ادامه بستهای با packet_length برابر 0xffffffff میفرستد.
- اجرای PoC در محیط آزمایشگاهی منجر به این شد که کلاینت banner غیرمعمول PoC را به عنوان نسخه معتبر SSH نپذیرفته است و ارتباط بلافاصله قطع می شود.
- این اثبات مفهوم صرفاً توصیفی و آموزشی بوده و شامل تغییرات مخرب نمیشود

شکل 2: اجرای POC
رفع مسئولیت
این گزارش صرفاً با هدف آموزش، تحلیل فنی و ارتقای امنیت سازمانی تهیه شده است. هرگونه استفاده مخرب یا خارج از چارچوبهای قانونی از محتوای آن ممنوع است.
منابع
https://www.cve.org/CVERecord?id=CVE-2026-55200
https://nvd.nist.gov/vuln/detail/CVE-2026-55200
https://github.com/xd20111/CVE-2026-55200
https://cwe.mitre.org/data/definitions/680.html
libssh2
CVE-2026-55200 – SSH Username Pre-Authentication Memory Corruption Leading to Denial of Service
Affects
- libssh2 (client-side SSH library)
- Versions:
- All versions up to and including 1.11.1
- libssh2 1.11.0
- Components:
- SSH client handshake processing
- Key exchange (KEX) protocol handling
packet.c,kex.c,transport.c(source files in the libssh2 codebase)
- Functions:
libssh2_kex_exchange(),ssh_packet_kexinit(),_libssh2_transport_read()
Description
CVE-2026-55200 is a high-severity pre-authentication vulnerability in libssh2, a widely used client-side SSH library. The vulnerability was initially discovered through a public proof-of-concept (PoC) on the full-disclosure mailing list and later confirmed by the SUSE security team and the libssh2 maintainers .
The vulnerability arises from a memory corruption issue triggered by a specially crafted SSH server that sends a malformed SSH_MSG_KEXINIT packet during the key exchange (KEX) phase . Specifically, the server can present an unexpected message type (type 45) that is not handled correctly by the libssh2 client.
When the client processes this malformed packet, incorrect memory assignment occurs due to an invalid length value . This results in a buffer overflow or a use-after-free (UAF) vulnerability, which can cause the client application to crash. It could potentially lead to remote code execution under certain conditions, although this has not been confirmed .
Key technical characteristics:
- CWE: CWE-680: Integer Overflow to Buffer Overflow
- Attack vector: Remote (requires connection to a malicious SSH server)
- Authentication required?: No – triggered during the pre-authentication key exchange
- User interaction: None
- Attack complexity: Low
- No official patch available at the time of publication (June 2026)
Attack Vector
Primary Attack Vector:
Remote / Network (requires the client to initiate an SSH connection to a malicious server)
Attack Scenario:
- An attacker sets up a malicious SSH server that sends a crafted
SSH_MSG_KEXINITpacket containing an unexpected message type (e.g., 45) . - The attacker entices a victim using an application that is linked against libssh2 to connect to the malicious server.
- During the pre-authentication key exchange phase, the libssh2 client attempts to process the malformed packet .
- An incorrect length value leads to memory corruption (buffer overflow or UAF) .
- The client application crashes (Denial of Service) or may be vulnerable to remote code execution.
Key Characteristics:
| Attribute | Details |
|---|---|
| Attack Vector | NETWORK |
| Attack Complexity | LOW |
| Privileges Required | NONE |
| User Interaction | NONE (client must initiate connection) |
| Scope | UNCHANGED |
| Confidentiality Impact | NONE |
| Integrity Impact | NONE |
| Availability Impact | HIGH |
| Exploit Availability | Yes – public PoC available |
| Active Exploitation | Unconfirmed |
Conditions Affecting Risk:
- Applications that use libssh2 to connect to untrusted SSH servers
- Client applications that automatically connect to SSH servers without user verification of server identity
- Systems using libssh2 in automated processes (e.g., CI/CD pipelines connecting to SSH hosts)
Impact
Successful exploitation allows an attacker to:
- Crash the client application by triggering memory corruption
- Cause denial of service for the process using libssh2
- Potentially execute arbitrary code – a buffer overflow may be exploitable for RCE
| Impact Area | Level | Description |
|---|---|---|
| Confidentiality | NONE | No direct information disclosure |
| Integrity | NONE | No direct data modification |
| Availability | HIGH | Client application crashes |
Observed Exploitation & Threat Activity
- Discovery: Public PoC submitted to full-disclosure mailing list
- Public PoC: Yes – available, includes C code to reproduce the crash
- CVE Assignment: June 2026 (via GitHub CVE Pool, as libssh2 is not a CNA)
- Patch Availability: No official patch yet – developers are aware and working on it
- In-the-Wild Exploitation: Not confirmed
- CVSS Score (SUSE): 7.5 (High)
Disclosure Timeline:
| Date | Event |
|---|---|
| June 2026 | PoC released on full-disclosure mailing list |
| June 2026 | CVE-2026-55200 created in GitHub CVE Pool |
| June 2026 | SUSE confirms vulnerability and assesses CVSS |
Affected Products (SUSE):
- SUSE Linux Enterprise 15 SP5 – vulnerable:
libssh2-1.10.0-150500.5.6.1 - SUSE Linux Enterprise 15 SP6 – vulnerable
- openSUSE Leap 15.5 – vulnerable
- openSUSE Tumbleweed – vulnerable
Severity & Metrics
- CVSS v3.1 (SUSE): High (7.5)
- Attack Vector: NETWORK
- Attack Complexity: LOW
- Privileges Required: NONE
- User Interaction: NONE
- Scope: UNCHANGED
- Confidentiality Impact: NONE
- Integrity Impact: NONE
- Availability Impact: HIGH
Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Relevant CWE:
- CWE-787 – Out-of-bounds Write
- CWE-416 – Use After Free (depending on the exact exploit path)
Patch & Vendor Status
- Official Patch: None available yet (as of June 2026)
- Developer Status: libssh2 maintainers are aware and working on a fix
- GitHub Issue: https://github.com/libssh2/libssh2/issues/1532
- SUSE Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1265518
Vendor Status:
| Vendor | Status |
|---|---|
| libssh2 upstream | Working on a fix |
| SUSE | Vulnerable (tracking) |
| GitHub CVE Pool | CVE assigned |
Mitigation & Remediation
Immediate Actions
Since no official patch is available, the following workarounds are recommended:
- Only connect to trusted SSH servers – avoid connecting to untrusted or unknown hosts
- Disable automatic SSH connections – do not use libssh2 in automated scripts that connect to arbitrary servers
- Apply vendor-specific backports when they become available
- Restrict outbound SSH connections at the network level if possible
Short-Term Defensive Measures
- Inspect SSH server configurations – ensure proper key exchange algorithms and protocol compliance
- Use SSH libraries that are actively maintained as a temporary alternative if feasible
- Monitor SUSE/openSUSE update channels for backported patches
- Use an SSH proxy to validate connections before passing them to libssh2
Long-term Defensive Measures
- Maintain an inventory of applications that use libssh2
- Monitor GitHub and SUSE Bugzilla for patch announcements
- Implement container/build isolation to avoid exposing the vulnerable component to untrusted networks
Detection & Monitoring
Recommended Detection Sources:
| Source | Purpose |
|---|---|
| Application logs | Detect crashes in applications using libssh2 |
| Network monitoring | Identify connections to malicious SSH servers |
| Vulnerability scanners | Nessus Plugin #219917 detects libssh2 < 1.11.1 |
| SUSE build checks | zypper info libssh2 to check version |
Indicators of Attempted Exploitation:
- Unexpected crashes of applications that use libssh2 (e.g., git, curl, or custom SSH clients)
- Log entries showing KEX failures or protocol errors
- Crash dumps showing memory corruption in libssh2 code
Detection Strategy:
- Check libssh2 version on all systems:
# OpenSUSE / SUSE
zypper info libssh2
# Debian / Ubuntu
dpkg -l | grep libssh2
# RHEL / CentOS
rpm -qa | grep libssh2
- Inventory applications that link against libssh2:
ldd /usr/bin/curl | grep libssh2
- Monitor for crashes of applications that use libssh2 on outbound connections
Post-Incident Response
If exploitation is suspected:
- Isolate affected system from the network immediately
- Preserve forensic evidence (core dumps, crash logs, network captures)
- Identify the malicious SSH server and block it at the network level
- Audit other systems that may have connected to the same malicious server
- Apply vendor backported patches when they become available
- Rotate credentials if the malicious server may have captured them
- Assume potential compromise – treat the affected system as suspect and audit accordingly
References
- https://github.com/cve-pool/CVE-2026-55200
- https://bugzilla.suse.com/show_bug.cgi?id=1265518
- https://github.com/libssh2/libssh2/issues/1532
- https://security.suse.com/cve/CVE-2026-55200/
- https://vuldb.com/cve/CVE-2026-55200
- https://www.tenable.com/plugins/nessus/219917
- https://cwe.mitre.org/data/definitions/680.html
بررسی آماری آسیب پذیری CVE-2026-55200 در کشور ایران
محصول آسیب پذیر: libssh2
میزان استفاده در ایران بر اساس سایت های آمار مرتبط با محصول
SSH (Secure Shell) به عنوان یک پروتکل استاندارد برای مدیریت از راه دور سرورها، انتقال فایل و ارتباطات امن در شبکههای کامپیوتری، در ایران به طور گسترده مورد استفاده قرار میگیرد. کتابخانه libssh2 که پیادهسازی سمت کلاینت این پروتکل است، در هزاران نرمافزار، کتابخانه و سیستم در ایران به کار گرفته میشود.
این کتابخانه به عنوان یک وابستگی (dependency) در ابزارهای محبوبی مانند Git (برای ارتباط با مخازن از طریق SSH)، cURL (برای انتقال فایلها)، OpenSSH (در برخی پیادهسازیها)، PHP (برای اتصالات SSH)، Python (کتابخانه paramiko و pycurl)، Node.js و بسیاری از برنامههای مدیریت سرور و خودکارسازی استفاده میشود.
میزان استفاده در ایران بر اساس موتورهای جستجو (بر اساس ایندکس های گوگل در بخش tools)
تعداد در زمان نگارش گزارش
| موتور جستجو | Dork | تعداد |
| site:.ir “libssh2” | 259 |
وجود نمایندگی در ایران
پروژه libssh2 به عنوان یک کتابخانه متن باز (Open Source) توسط تیم بین المللی توسعه داده میشود. هیچ دفتر رسمی یا نمایندگی در ایران ندارد. کاربران ایرانی برای دریافت وصله امنیتی باید به مخازن رسمی (مانند GitHub) یا بهروزرسانیهای توزیعهای لینوکسی خود مراجعه کنن. هیچ گونه پشتیبانی رسمی از طرف شرکت سازنده در کشور وجود ندارد.
میزان استفاده بر اساس گزارشات تحقیقات بازار برای این محصول در ایران
اگرچه آمار رسمی و دقیقی از تعداد سیستمهای آسیبپذیر در ایران وجود ندارد، اما شواهد زیر نشاندهنده سطح قابل توجه ریسک است.
- استفاده از libssh2 در ایران: میلیونها کاربر ایرانی، از جمله توسعهدهندگان Git که از طریق پروتکل SSH به مخازن متصل میشوند، مدیران سرورهای لینوکسی که از ابزارهایی مانند curl –sftp استفاده میکنند، برنامهنویسان وب که روی سرورهای دارای ماژول ssh2 PHP کار میکنند، و توسعهدهندگان Python که به کتابخانههایی مثل paramiko و pycurl متکی هستند، همگی در صورتی که نسخههای قدیمیتر یا پیشفرض سیستمهای خود از کتابخانه libssh2 (نه OpenSSH) استفاده کنند، به طور بالقوه در معرض خطر آسیبپذیری امنیتی قرار دارند؛ اگرچه وصله امنیتی منتشر شده، اما به دلیل سطح پایین بودن این کتابخانه به عنوان یک وابستگی (dependency) و نبود آگاهی یا بهروزرسانی خودکار در بسیاری از سیستمها به ویژه در ایران که غیرفعال بودن بهروزرسانیهای خودکار رایج است، انتظار میرود تأخیر چشمگیری در وصلهزنی رخ دهد که این موضوع نگرانیهای جدی را ایجاد میکند.
- تخمین میزان استفاده: با توجه به اینکه libssh2 یک کتابخانه بسیار رایج است که در ابزارهای پرکاربردی مانند Git، cURL و PHP استفاده میشود، میتوان تخمین زد که حداقل چند میلیون کاربر ایرانی به طور مستقیم یا غیرمستقیم تحت تأثیر این آسیبپذیری قرار دارند. این عدد شامل توسعه دهندگان، مدیران سیستم، کاربران Git، وب مسترها و کاربران نرم افزارهای مدیریت سرور میشود.