توضیحات

آسیب ‌پذیری CVE-2026-8932 در کتابخانه libcurl به ضعف در نحوه تطبیق پیکربندی احراز هویت متقابل TLS (mTLS) هنگام استفاده از اتصال موجود مربوط می‌شود. libcurl برای بهبود کارایی، اتصال‌ های ایجاد شده را در مخزن اتصال (Connection Pool) قرار می‌دهد تا در درخواست‌ های بعدی، در صورت تطبیق پیکربندی، به ‌جای برقراری یک اتصال جدید، از همان اتصال موجود استفاده کند. مشکل زمانی ایجاد می‌شود که برخی تنظیمات TLS مرتبط با گواهی کلاینت در بررسی تطبیق پیکربندی در نظر گرفته نشوند. در این شرایط، libcurl ممکن است اتصالی را که با پیکربندی جدید سازگار نیست، همچنان قابل استفاده تشخیص دهد و درخواست جدید را از طریق همان اتصال TLS ارسال کند.

این آسیب ‌پذیری در دسته دور زدن احراز هویت به‌ دلیل ضعف اصلی (Authentication Bypass by Primary Weakness) مطابق با CWE-305 طبقه ‌بندی شده است. دلیل این طبقه ‌بندی آن است که تغییر برخی مشخصات احراز هویت کلاینت، از جمله اطلاعات مربوط به کلید خصوصی، لزوماً باعث برقراری یک اتصال TLS جدید نمی‌شود. در نتیجه، درخواست جدید می‌تواند از طریق اتصال TLS قبلی و بدون احراز هویت مجدد کلاینت ارسال شود و ساز و کار احراز هویت مورد انتظار را دور بزند.

ریشه فنی آسیب‌ پذیری به نحوه تطبیق پیکربندی اتصال در libcurl مربوط می‌شود. libcurl هنگام دریافت یک درخواست جدید، اتصال ‌های موجود را بررسی می‌کند تا مشخص شود آیا پیکربندی یکی از آن‌ ها با نیازهای درخواست جدید سازگار است یا خیر. در حالت عادی، تغییر یکی از پارامترهای مهم mTLS باید باعث شود اتصال قبلی برای درخواست جدید قابل استفاده نباشد و اتصال دیگری برقرار شود. با این حال، در نسخه‌ های آسیب‌ پذیر، برخی پارامترهای مرتبط با گواهی کلاینت، از جمله cert_type، key، key_type، key_passwd و key_blob، به‌طور کامل در این بررسی لحاظ نمی‌شدند. به همین دلیل، تغییر این پارامترها لزوماً مانع استفاده از اتصال قبلی نمی‌شد. این ضعف به ‌ویژه در گزینه ‌های مرتبط با کلید خصوصی (Private Key) اهمیت دارد.

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

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

در اثبات مفهوم (PoC)، این عملکرد با ارسال دو درخواست HTTPS روی یک اتصال mTLS نشان داده شده است. درخواست نخست با رمز عبور صحیح کلید خصوصی ارسال می‌شود و اتصال TLS را برقرار می‌کند. سپس همان گواهی و کلید در درخواست دوم، این بار با رمز عبور نادرست، مورد استفاده قرار می‌گیرند. با وجود این تغییر، اتصال قبلی همچنان مورد استفاده قرار می‌گیرد و درخواست دوم ارسال می‌شود. در خروجی حالت Verbose نیز پیام Re-using existing https: connection مشاهده می‌شود.

این سناریو به استفاده مجدد از اتصال موجود (Connection Reuse) مربوط می‌شود، نه ادامه نشست TLS (TLS Session Resumption). در این حالت، همان اتصال TCP/TLS که در درخواست اول برقرار شده است، برای ارسال درخواست ‌های بعدی نیز مورد استفاده قرار می‌گیرد و در نتیجه، برای درخواست دوم نیازی به برقراری اتصال جدید یا انجام دوباره هندشیک TLS (Handshake) نیست.

از منظر CVSS، سوء استفاده از این آسیب ‌پذیری از طریق شبکه امکان ‌پذیر است و به سطح دسترسی قبلی مهاجم یا تعامل کاربر نیاز ندارد. پیامد این آسیب ‌پذیری نیز به یکپارچگی (Integrity) محدود می‌شود و اثری بر محرمانگی یا دسترس ‌پذیری سیستم ندارد.

این آسیب ‌پذیری مربوط به libcurl است و ابزار خط فرمان curl را تحت تأثیر قرار نمی‌دهد. این آسیب ‌پذیری در نسخه ‌های 8.14.2، 8.16.1، 8.20.1 و 8.21.0 پچ شده است. برای رفع کامل این ضعف امنیتی، بروزرسانی curl و libcurl به نسخه 8.21.0 توصیه می‌شود.

CVSS

Score Severity Version Vector String
7.5 HIGH 3.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
شکل 1: تفسیر جدول CVSS

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

Versions Product
Affected from 7.7.0 before 8.14.2 curl
Affected from 8.15.0 before 8.16.1 curl
Affected from 8.17.0 before 8.20.1 curl
8.20.0 curl

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

Versions Product
8.14.2 curl
8.16.1 curl
8.20.1 curl
8.21.0 curl

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

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

Approx. Usage in .ir Domain via Google (Total Pages) Search Query (Dork) Product
591,000 site:.ir “curl” curl
1,680 site:.ir “libcurl” libcurl

نتیجه گیری

این آسیب‌ پذیری در libcurl به ضعف در منطق تطبیق پیکربندی احراز هویت متقابل TLS (mTLS) هنگام استفاده مجدد از اتصال موجود مربوط می‌شود. این ضعف امنیتی باعث می‌شود برخی تغییرات در تنظیمات احراز هویت کلاینت، به‌ ویژه پارامترهای مرتبط با کلید خصوصی، مانع استفاده مجدد از اتصال TLS قبلی نشوند. در نتیجه، درخواست جدید می‌تواند از طریق همان اتصال TLS قبلی و بدون انجام دوباره احراز هویت کلاینت ارسال شود و امکان دور زدن احراز هویت کلاینت را فراهم کند.

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

  • بروزرسانی libcurl: بروزرسانی libcurl به نسخه 21.0 مهم‌ ترین اقدام برای رفع این آسیب ‌پذیری است. این نسخه، ضعف امنیتی مربوط به تطبیق پیکربندی mTLS و استفاده مجدد از اتصال را برطرف می‌کند.
  • بروزرسانی نسخه ‌های قدیمی ‌تر: در صورت استفاده از شاخه ‌های قدیمی ‌تر، libcurl را به یکی از نسخه‌ های پچ ‌شده 14.2، 8.16.1 یا 8.20.1 بروزرسانی کنید تا آسیب‌ پذیری برطرف شود.
  • عدم استفاده مجدد از اتصال پس از تغییر گواهی کلاینت: پس از تغییر گواهی کلاینت، کلید خصوصی یا سایر تنظیمات mTLS، از اتصال قبلی برای ارسال درخواست جدید استفاده نشود تا درخواست با اتصال متناسب با پیکربندی جدید برقرار گردد.
  • مدیریت دقیق کلیدهای خصوصی: تغییرات مربوط به گواهی کلاینت، کلید خصوصی و رمز عبور کلید با دقت مدیریت شود تا تغییر تنظیمات احراز هویت منجر به استفاده ناخواسته از اتصال قبلی نشود.
  • نظارت بر اتصال‌های TLS: لاگ‌ ها و خروجی حالت Verbose را بررسی کنید تا استفاده درخواست‌ ها از اتصال TLS و ادامه استفاده از اتصال قبلی پس از تغییر تنظیمات مشخص شود.

اجرای این اقدامات، به ‌ویژه بروزرسانی libcurl به نسخه 8.21.0، ریسک سوء استفاده از این آسیب‌ پذیری را کاهش می‌دهد و از استفاده از اتصال TLS با پیکربندی نامتناسب جلوگیری می‌کند.

امکان استفاده در تاکتیک‌های MITRE ATT&CK (در زمان اجرای حمله)

Initial Access (TA0001)

این آسیب پذیری در برخی معماری‌ ها می‌تواند در سناریویی قرار گیرد که مهاجم از طریق یک public-facing application یا سرویس شبکه ‌ای که از libcurl آسیب ‌پذیر استفاده می‌کند، به منابعی دسترسی پیدا کند که نیازمند احراز هویت mTLS هستند. با این حال، این ارتباط وابسته به معماری برنامه است و خود libcurl یک سازوکار مستقل برای ورود مهاجم به سیستم فراهم نمی‌کند. شرط مهم اکسپلویت این است که برنامه از connection یا SSL session sharing استفاده کند و چند client identity را روی همان connection/session pool مدیریت کند. در چنین محیطی، نقص می‌تواند مرز احراز هویت بین دو identity را نقض کند و در نتیجه در زنجیره حمله پس از دسترسی مهاجم به سرویس قرار گیرد.

Credential Access (TA0006)

نقص در بررسی پارامترهای مرتبط با mTLS client certificate هنگام استفاده مجدد از connection های قبلی است. در شرایط آسیب‌ پذیر، برخی تنظیمات مربوط به کلید خصوصی و گواهی client در فرآیند تطبیق connection در نظر گرفته نمی‌شوند؛ در نتیجه، یک connection ایجاد شده با هویت TLS قبلی ممکن است برای درخواست بعدی که با هویت client متفاوتی پیکربندی شده است مجدداً مورد استفاده قرار گیرد. در یک سناریوی چند کاربره یا multi-tenant، این رفتار می‌تواند باعث شود درخواست یک هویت، از دید سرویس مقصد با client identity متعلق به هویت دیگری احراز هویت شود. بنابراین، در صورت وجود شرایط لازم برای استفاده از connection/session sharing، مهاجم می‌تواند از این نقص برای عبور از مرز احراز هویت مبتنی بر client certificate و دسترسی به منابعی که باید به هویت دیگری محدود باشند استفاده کند.

Impact (TA0040)

پیامد اصلی CVE-2026-8932، نقض مرز احراز هویت و تمامیت هویت ارتباط TLS است، نه تخریب یا از کار انداختن سیستم. اگر درخواست متعلق به یک هویت کلاینت با connection احراز هویت ‌شده متعلق به هویت دیگری ارسال شود، سرویس مقصد ممکن است درخواست را به اشتباه متعلق به هویت قبلی تشخیص دهد. در نتیجه، مهاجم می‌تواند در شرایط مناسب عملیاتی را با سطح دسترسی هویت دیگری انجام دهد و به داده یا قابلیت‌ هایی دسترسی پیدا کند که برای هویت واقعی او مجاز نیست.

منابع

  1. https://www.cve.org/CVERecord?id=CVE-2026-8932
  2. https://www.cvedetails.com/cve/CVE-2026-8932/
  3. https://curl.se/docs/CVE-2026-8932.html
  4. https://vulmon.com/vulnerabilitydetails?qid=CVE-2026-8932
  5. https://vuldb.com/vuln/376074
  6. https://github.com/nimaarek/CVE-2026-8932-PoC
  7. https://curl.se/docs/CVE-2026-8932.json
  8. https://hackerone.com/reports/3733910
  9. https://cwe.mitre.org/data/definitions/305.html