توضیحات
آسیب پذیری 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 |

لیست محصولات آسیب پذیر
| 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 احراز هویت شده متعلق به هویت دیگری ارسال شود، سرویس مقصد ممکن است درخواست را به اشتباه متعلق به هویت قبلی تشخیص دهد. در نتیجه، مهاجم میتواند در شرایط مناسب عملیاتی را با سطح دسترسی هویت دیگری انجام دهد و به داده یا قابلیت هایی دسترسی پیدا کند که برای هویت واقعی او مجاز نیست.
منابع
- https://www.cve.org/CVERecord?id=CVE-2026-8932
- https://www.cvedetails.com/cve/CVE-2026-8932/
- https://curl.se/docs/CVE-2026-8932.html
- https://vulmon.com/vulnerabilitydetails?qid=CVE-2026-8932
- https://vuldb.com/vuln/376074
- https://github.com/nimaarek/CVE-2026-8932-PoC
- https://curl.se/docs/CVE-2026-8932.json
- https://hackerone.com/reports/3733910
- https://cwe.mitre.org/data/definitions/305.html
گزارش اثبات آسیبپذیری CVE-2026-8932
اطلاعات آسیبپذیری
عنوان: آسیب پذیری دور زدن احراز هویت mTLS از طریق استفاده مجدد نادرست اتصال در libcurl
شناسه: CVE-2026-8932
وضعیت مشاوره: Advisory / Patch Available
امتیاز: CVSS: 7.5 (High)
محصول: libcurl
محصول / نسخههای آسیبپذیر
در نسخههای زیر:
- libcurl قبل از نسخه 8.20.0
محیطهای درگیر
- تمام برنامه و ابزارهای که libcurl را جاسازی کرده و از mutual TLS (mTLS) استفاده میکنند
- سرویس هایی که گواهی کلاینت را بین درخواست ها تغییر میدهند (مانند چرخش گواهی، multi-tenant API clients)
- برنامه ها و ابزارهای که از libcurl API استفاده میکنند
- برنامه ها و ابزارهای که از mTLS/client certificates استفاده میکنند
- برنامه ها و ابزارهای که configuration مربوط به certificate/private key را بین request های مختلف تغییر میدهند
- برنامه ها و ابزارهای که connection های libcurl را بین این request ها قابل reuse نگه میدارند
کامپوننتهای آسیبپذیر
- منطق connection reuse و مقایسه تنظیمات TLS در libcurl
- گزینه های مرتبط با client certificate و private key (به ویژه key_passwd، key، key_type، cert_type، key_blob)
- مکانیزم connection Pool libcurl
- منطق curl_conncache_find یا conn_match، عدم تطبیق فیلدهای مربوط به private key در mTLS
ریشه مشکل (Root Cause Analysis)
ریشه اصلی این آسیب پذیری یک ضعف منطقی در تطبیق تنظیمات هنگام reuse اتصال است (CWE-305 – Authentication Bypass by Primary Weakness)
libcurl اتصالات قبلی را در یک connection pool نگه میدارد و در صورت تطبیق تنظیمات، آن ها را برای درخواست های بعدی دوباره استفاده میکند. با این حال، برخی گزینه های مرتبط با mTLS (به خصوص تنظیمات مربوط به private key مانند رمز عبور کلید) در بررسی تطبیق پیکربندی لحاظ نشده بودند. در نتیجه، تغییر این گزینه ها مانع reuse اتصال نمیشد.
بخش آسیبپذیر
رفتار ناامن سیستم:
libcurl هنگام تصمیم گیری برای reuse اتصال TLS، تمام فیلدهای مرتبط با پیکربندی mTLS (از جمله key_passwd) را در مقایسه لحاظ نمیکند. این رفتار باعث میشود اتصال قبلی حتی پس از تغییر تنظیمات حساس client certificate/private key همچنان قابل استفاده باشد.
نحوه سوءاستفاده مهاجم:
نکتهی مهم این است که CVE به خودی خود یک remote code execution نیست آسیب پذیری زمانی ایجاد میشود که application از یک connection pool مشترک برای identity های متفاوت استفاده کند
- برنامه از libcurl با mTLS استفاده میکند
- درخواست اول با گواهی client و رمز صحیح private key برقرار میشود و اتصال TLS در pool باقی میماند
- درخواست دوم با تغییر تنظیمات mTLS (مثلاً رمز عبور اشتباه برای کلید) ارسال میشود
- در نسخه آسیب پذیر، libcurl اتصال قبلی را reuse میکند و handshake جدید انجام نمیدهد؛ بنابراین رمز اشتباه مانع موفقیت درخواست نمیشود در نتیجه، احراز هویت client بر اساس تنظیمات جدید اعمال نمیشود (authentication bypass در سطح reuse)
نقش این آسیبپذیری در زنجیره حمله
این آسیب پذیری یک نقض منطق احراز هویت (Authentication Logic Flaw) است که میتواند در سناریوهای خاص منجر به دور زدن احراز هویت گواهی کلاینت و استفاده از هویت اشتباه شود.
پیشنیازهای بهرهبرداری (Prerequisites)
- استفاده از libcurl آسیب پذیر
- فعال بودن mTLS با client certificate و private key (ترجیحاً رمزگذاری شده)
- تغییر تنظیمات مرتبط با کلید/گواهی بین درخواست ها روی handle هایی که connection pool را share میکنند
- پشتیبانی سرور از keep-alive
- عدم نصب وصله امنیتی
رفتار مورد انتظار در حالت امن (Expected Secure Behavior)
- مقایسه کامل تمام فیلد های مرتبط با mTLS (از جمله key_passwd و سایر گزینه های کلید) قبل از reuse اتصال
- ایجاد اتصال TLS جدید در صورت هرگونه تغییر در تنظیمات client certificate یا private key
- اصل Fail Secure، در صورت عدم تطابق کامل تنظیمات، اتصال نباید دوباره استفاده شود
راهکارها و کاهش ریسک (Mitigation / Patch Guidance)
اقدامات فوری برای کاهش ریسک:
- بروزرسانی libcurl
- اعمال پچ های توزیع کننده (مانند پکیج های Ubuntu/SUSE مربوطه)
اقدامات کوتاهمدت / میانمدت برای کاهش ریسک:
- اجتناب از reuse handle هنگام تغییر جزئیات client certificate (توصیه upstream)
- بازبینی کد برنامه هایی که از CURLOPT های مرتبط با cert/key استفاده میکنند
اقدامات بلندمدت برای کاهش ریسک:
- سیاست بروزرسانی منظم libcurl در تمام وابستگی ها
- استفاده از connection isolation مناسب در برنامه های multi-tenant
- پیاده سازی فرآیندهای منظم تست نفوذ (Penetration Testing) و ارزیابی امنیتی برای کشف زود هنگام آسیب پذیری های مشابه در زیرساخت
تشخیص و مانیتورینگ (Detection & Monitoring)
نشانههای تلاش برای سوءاستفاده:
- لاگ libcurl مبنی بر Re-using existing https: connection پس از تغییر تنظیمات mTLS
- موفقیت درخواست با رمز عبور یا تنظیمات کلید نامعتبر
- رفتار غیرمنتظره در برنامه هایی که client cert را بین درخواست ها عوض میکنند
منابع پیشنهادی برای مانیتورینگ و پایش:
- لاگ های verbose libcurl
- بررسی نسخه libcurl در سیستم ها و وابستگی ها
- تست های یکپارچگی برای سناریوهای تغییر mTLS
واکنش به حادثه (Incident Response)
- شناسایی نسخه های آسیب پذیر libcurl
- اعمال فوری بروزرسانی
- بازبینی برنامه هایی که از mTLS با libcurl استفاده میکنند
- بررسی لاگ ها برای نشانه های reuse غیرمجاز
- نصب فوری وصله امنیتی و بروزرسانی فوری
- مستندسازی کامل حادثه (زمان وقوع، نشانهها، اقدامات انجامشده، درسآموختهها) و گزارش به مدیریت ارشد و تیم واکنش سریع (CSIRT)
جریان حمله (Attack Flow)
در نمودار زیر (شکل ۱)، یک برنامه کاربردی از libcurl با mTLS استفاده میکند و گواهی کلاینت را بین درخواست ها تغییر میدهد. نقص در تطبیق اتصال libcurl باعث استفاده مجدد از اتصال قبلی با هویت اشتباه میشود.

اثبات مفهوم (PoC) — کاملاً غیرمخرب
آزمایشگاه تخصصی Vulnerbyte، این آسیبپذیری را در محیط ایزوله و کنترلشده با استفاده از نسخه آسیبپذیر بررسی و اجرا کرده است
- این آزمایشگاه شامل نسخه آسیب پذیر libcurlاست
- این آزمایشگاه شامل یک mTLS Server محلی است که با پایتون نوشته شده است فایل server.py
- این آزمایشگاه شامل فایل های گواهی ها و کلیدهای آزمایشگاهی است
- ایجاد CA :
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes \
- key ca.key \
- sha256 -days 3650 \
- subj "/CN=CVE-2026-8932-CA" \
- out ca.crt
- ایجاد گواهی سرور :
openssl genrsa -out server.key 2048
openssl req -new \
-key server.key \
-subj "/CN=server.test" \
-out server.csr
printf "subjectAltName=DNS:server.test\nextendedKeyUsage=serverAuth\n" > server.ext
openssl x509 -req \
- in server.csr \
- CA ca.crt \
- CAkey ca.key \
- CAcreateserial \
- out server.crt \
- days 3650 \
- sha256 \
- extfile server.ext
ایجاد گواهی کلاینت :
openssl genrsa -out client.key.tmp 2048
openssl req -new \
- key client.key.tmp \
- subj "/CN=Client-A" \
- out client.csr
openssl pkcs8 \
-topk8 \
-in client.key.tmp \
-out client.key \
-v2 aes-256-cbc \
-passout pass:correct-password
printf "extendedKeyUsage=clientAuth\n" > client.ext
openssl x509 -req \
-in client.csr \
-CA ca.crt \
-CAkey ca.key \
-CAcreateserial \
-out client.crt \
-days 3650 \
-sha256 \
-extfile client.ext
- در مرحله ی اول فایل PoC یک connection با مشخصات زیر ایجاد می کند :
Client certificate = client.crt
Private key = client.key
Key password = correct-password
- این request با موفقیت handshake کرده و connection در connection cache باقی میماند
- در مرحله ی دوم در easy handle دوم همان certificate و private key استفاده میشود، اما با تغیر زیر قرار می گیرد:
key_passwd = WRONG-PASSWORD
- اگر libcurl مجبور شود یک TLS connection جدید ایجاد کند، این password نامعتبر نباید اجازه ی استفاده ی صحیح از encrypted private key را بدهد اما در نسخه ی آسیب پذیر، configuration جدید به اندازه ی کافی متفاوت تشخیص داده نمیشود و connection قبلی میتواند reuse شود
- اجرای PoC در محیط آزمایشگاهی منجر اثبات connection reuse پس از تغییر mTLS configuration شد
- این اثبات مفهوم صرفاً توصیفی و آموزشی بوده و شامل تغییرات مخرب نمیشود


رفع مسئولیت
این گزارش صرفاً با هدف آموزش، تحلیل فنی و ارتقای امنیت سازمانی تهیه شده است. هرگونه استفاده مخرب یا خارج از چارچوبهای قانونی از محتوای آن ممنوع است.
منابع
https://www.cve.org/CVERecord?id=CVE-2026-8932
https://nvd.nist.gov/vuln/detail/cve-2026-8932
https://hackerone.com/reports/3733910
https://curl.se/docs/CVE-2026-8932.html
https://github.com/nimaarek/CVE-2026-8932-PoC
https://cwe.mitre.org/data/definitions/305.html
libcurl
CVE-2026-8932 – Incomplete mTLS Configuration Matching in Connection Reuse
Affects
- libcurl (client-side URL transfer library used by countless applications)
- Versions:
- curl 7.7 through 8.20.0
- Fixed in curl 8.21.0 (released June 24, 2026)
- Components:
- Connection pool matching logic
- mTLS (mutual TLS) client certificate handling
- NOT VULNERABLE:
- curl versions < 7.7** and **>= 8.21.0
- The curl command line tool is NOT affected – only applications embedding libcurl
Description
CVE-2026-8932 is a low-severity authentication bypass vulnerability in libcurl’s connection reuse logic, discovered by Joshua Rogers of Aisle Research .
libcurl maintains a pool of previously established connections to improve performance. When initiating a new transfer, the library checks whether any existing connection in the pool matches the required configuration. However, some mTLS-related TLS settings were omitted from this matching logic .
Specifically, the following client certificate options were not included in the connection reuse match checks:
- Private key
- Key password
- Key type
- Cert type
- Key blob
As a result, libcurl could incorrectly reuse a connection authenticated with a previous client certificate even after the application changed its mTLS configuration .
Key technical characteristics:
- CWE: CWE-305 – Authentication Bypass by Primary Weakness
- Attack vector: Network
- Authentication required: None (attacker must influence connection pooling)
- User interaction: None
- Public PoC: Yes – available on GitHub
- Severity: Low (curl project rating) / High (CVSS 7.5)
Historical Significance:
This vulnerability has the distinction of being the oldest security issue ever fixed in libcurl – the bug was introduced in curl 7.7 (released in 2001) and remained unnoticed for over 25 years .
Attack Vector
Primary Attack Vector:
Remote / Network (requires specific application behavior involving mTLS configuration changes)
Attack Scenario:
- An application uses libcurl with mutual TLS (mTLS) authentication to connect to a protected service.
- The application establishes a TLS connection using Client Certificate A and private key configuration.
- The application then changes its mTLS configuration to use Client Certificate B (or changes the private key/password) for a subsequent transfer.
- Because the connection matching logic does not compare the private key and certificate-related options, libcurl incorrectly reuses the existing connection authenticated with Certificate A .
- The second request is sent over the old connection, bypassing the expected authentication context for the new configuration .
Key Characteristics:
| Attribute | Details |
|---|---|
| Attack Vector | NETWORK |
| Attack Complexity | LOW |
| Privileges Required | NONE |
| User Interaction | NONE |
| Scope | UNCHANGED |
| Confidentiality Impact | NONE |
| Integrity Impact | HIGH |
| Availability Impact | NONE |
Conditions Affecting Risk:
- Applications that change client certificate configurations between transfers using the same libcurl handle or connection pool
- Environments with high connection throughput where connection reuse is common
- Applications performing certificate rotation or switching between different mTLS identities
Impact
Successful exploitation allows an attacker (or unintended application behavior) to:
- Reuse a connection authenticated with a different client certificate than intended
- Bypass expected mTLS authentication context – requests may be sent under a previous client identity
- Expose requests or sensitive data to an unintended authentication context
- Violate security policies requiring strict certificate-based authentication separation
- Cause authentication confusion in multi-tenant or multi-identity environments
| Impact Area | Level | Description |
|---|---|---|
| Confidentiality | NONE | No direct data disclosure |
| Integrity | HIGH | Requests may be sent with incorrect authentication context |
| Availability | NONE | No service disruption |
Important: The impact is primarily authentication integrity – requests may be sent over a connection authenticated with a different client certificate than the application intended. This can lead to security policy violations and incorrect credential isolation .
Severity & Metrics
- CVSS v3.1: High (7.5)
- Attack Vector: NETWORK
- Attack Complexity: LOW
- Privileges Required: NONE
- User Interaction: NONE
- Scope: UNCHANGED
- Confidentiality Impact: NONE
- Integrity Impact: HIGH
- Availability Impact: NONE
Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Additional Scoring:
- CVSS v4.0: 8.7 (High)
- curl Project Severity: Low
- CSH Severity: Low (CVSS v4: 5.3)
- EPSS Score: 0.40
Relevant CWE:
- CWE-305 – Authentication Bypass by Primary Weakness
- CWE-287 – Improper Authentication (alternative)
Patch & Vendor Status
- Official Patch Available: Yes – curl 8.21.0 (released June 24, 2026)
- Vendor: curl Project (Haxx)
- Introduced in: curl 7.7 (commit
a1d6ad26100bc493c7b0) - Fixed in: curl 8.21.0 (commit
7541ae569d82fb308a5e2d94916027da4fa3ba3e)
Distribution-Specific Fixed Versions:
| Distribution | Fixed Version |
|---|---|
| Debian Sid | 8.21.0-2 |
| Ubuntu | 7.58.0-2ubuntu3.24+esm12, 7.68.0-1ubuntu2.25+esm7, 7.81.0-1ubuntu1.27, 8.5.0-2ubuntu10.13 |
| Red Hat | RHSA-2026:34975 |
| SUSE/openSUSE | openSUSE-SU-2026:11230-1 |
| Microsoft Azure Linux | azl3 curl 0:8.11.1-10.azl3 or later |
| Meinberg LANTIME | LTOS 7.10.013 |
Update Methods:
| Distribution | Command |
|---|---|
| Debian/Ubuntu | sudo apt update && sudo apt upgrade curl libcurl* |
| RHEL/Fedora | sudo dnf update curl |
| SUSE | zypper update curl |
| Applications embedding libcurl | Rebuild with libcurl 8.21.0+ or apply vendor patches |
Mitigation & Remediation
Immediate Actions
| Action | Method |
|---|---|
| Update libcurl to 8.21.0 or later | Apply the official patch or upgrade |
| Rebuild applications | Applications statically linked against libcurl must be rebuilt |
| Verify version | Run curl --version and check for 8.21.0+ |
Important Note: The curl command line tool is not affected – only applications that embed libcurl are vulnerable .
Short-Term Defensive Measures
If patching cannot be applied immediately:
- Avoid reusing libcurl handles when changing client certificate or private key settings between transfers
- Isolate transfers using distinct mTLS identities into separate connection caches
- Force creation of new connections when mTLS configuration changes
- Disable connection pooling for mTLS scenarios where certificate configurations may change between transfers
Important Note: These are temporary mitigations, not complete fixes. Patching is the only complete solution.
Long-term Defensive Measures
- Implement a robust patch management policy for libcurl and its dependencies
- Audit applications that embed libcurl with mTLS authentication
- Review connection pooling configurations in security-sensitive applications
- Test mTLS implementations to ensure connection reuse logic properly accounts for all security-relevant parameters
Detection & Monitoring
Recommended Detection Sources:
| Source | Purpose |
|---|---|
| Nessus | Plugin ID 322442 detects vulnerable libcurl versions |
| Asset inventory | Track libcurl versions across applications |
| Application logs | Monitor for unexpected connection reuse patterns |
Indicators of Potential Exploitation:
- Unexpected connection reuse when mTLS configuration has changed
- Requests sent with incorrect client certificate identity
- Authentication anomalies in mTLS-protected services
- Connection pool behavior inconsistent with configuration changes
Detection Strategy:
- Inventory libcurl versions across all applications and systems
- Check versions against the patched release:
- libcurl: 8.21.0 or later – Not vulnerable
- libcurl: 7.7 through 8.20.0 – Vulnerable
- Monitor application behavior for unexpected connection reuse when mTLS configurations change
Post-Incident Response
If exploitation is suspected:
- Isolate affected system from the network immediately
- Preserve forensic evidence (application logs, network captures, TLS session logs)
- Identify which connections may have been reused incorrectly – check for authentication anomalies
- Update libcurl to version 8.21.0 or later
- Rebuild affected applications with the patched library
- Rotate client certificates and keys that may have been exposed to incorrect authentication contexts
- Audit mTLS-protected services for unauthorized access
- Document and report findings to internal security teams
For Enterprise Environments:
- Apply patches through enterprise deployment tools immediately
- Audit all applications embedding libcurl for version compliance
- Review mTLS configurations and connection pooling behavior
- Monitor for authentication anomalies in certificate-based systems
References
- https://curl.se/docs/CVE-2026-8932.html
- https://nvd.nist.gov/vuln/detail/CVE-2026-8932
- https://security-tracker.debian.org/tracker/CVE-2026-8932
- https://github.com/nimaarek/CVE-2026-8932-PoC
- https://hackerone.com/reports/3733910
- https://www.whitesourcesoftware.com/vulnerability-database/CVE-2026-8932/
- https://www.cybersecurity-help.cz/vdb/vulns/135079/
- https://cwe.mitre.org/data/definitions/305.html
بررسی آماری آسیب پذیری CVE-2026-8932 در کشور ایران
محصول آسیب پذیر: libcurl
میزان استفاده در ایران بر اساس سایت های آمار مرتبط با محصول
libcurl یکی از پرکاربردترین کتابخانه های انتقال داده در جهان است که در تعداد بسیار زیادی از برنامه ها و سرویس های مورد استفاده در ایران حضور دارد. این کتابخانه به عنوان وابستگی (dependency) در ابزارهای محبوبی مانند Git (برای ارتباط با مخازن از طریق HTTPS)، cURL (ابزار خط فرمان و کتابخانه)، PHP (برای درخواست های HTTP)، Python (کتابخانه های requests و pycurl)، Node.js، Ruby و بسیاری از برنامه های مدیریت سرور و خودکارسازی استفاده میشود.
میزان استفاده در ایران بر اساس موتورهای جستجو (بر اساس ایندکس های گوگل در بخش tools)
تعداد در زمان نگارش گزارش
|
موتور جستجو |
Dork |
تعداد |
|
|
site:.ir “libcurl” |
1,680 |
وجود نمایندگی در ایران
پروژه libcurl به عنوان یک پروژه متن باز (Open Source) توسط تیم توسعه دهندگان آن پشتیبانی میشود. هیچ دفتر رسمی یا نمایندگی در ایران ندارد. کاربران ایرانی برای دریافت وصله امنیتی باید بروزرسانی های توزیع لینوکس خود، نسخه های جدید برنامه های مبتنی بر libcurl، یا بیلدهای جدید کتابخانه از منابع رسمی را دریافت کنند. هیچ گونه پشتیبانی رسمی از طرف شرکت سازنده در کشور وجود ندارد.
میزان استفاده بر اساس گزارشات تحقیقات بازار برای این محصول در ایران
اگرچه آمار رسمی و دقیقی از تعداد سیستمهای آسیبپذیر در ایران وجود ندارد، اما شواهد زیر نشاندهنده سطح قابل توجه ریسک است.
- حضور فراگیر libcurl در زیرساخت های نرم افزاری ایران: libcurl یک کتابخانه پایه ای است که در تعداد بسیار زیادی از برنامه ها و سرویس های مورد استفاده در ایران حضور دارد.
- تخمین میزان استفاده: با توجه به اینکه libcurl یک کتابخانه بسیار رایج است که در ابزارهای پرکاربردی مانند Git، PHP، Python و بسیاری دیگر استفاده میشود، میتوان تخمین زد که حداقل چند صد هزار تا چند میلیون کاربر و سیستم در ایران به طور مستقیم یا غیرمستقیم تحت تأثیر این آسیب پذیری قرار دارند. این عدد شامل توسعه دهندگان، مدیران سیستم، وب مستران و کاربران نرم افزارهای مختلف میشود.

