یک آسیب پذیری با شدت بالا (CVE-2024-12797) در پروژه OpenSSL شناسایی شده است که نسخههای 3.2، 3.3 و 3.4 این کتابخانه را تحت تأثیر قرار میدهد. این آسیب پذیری که توسط شرکت اپل در دسامبر 2024 کشف شده است، ممکن است به هکرها این امکان را بدهد که حملات Man-in-the-Middle (MitM) را روی ارتباطات TLS و DTLS که از کلیدهای عمومی خام (RPK) برای تأیید اعتبار سرور استفاده میکنند، پیاده سازی کنند.
Raw Public Keys (RPKs) به کلیدهای عمومی اشاره دارد که به صورت خام و بدون هرگونه پردازش خاصی (مانند رمزگذاری یا تبدیل به فرمتهای خاصی مثل PEM یا DER) ذخیره و استفاده میشوند. این کلیدها معمولاً در سیستمهای امنیتی یا پروتکلهای مختلف برای احراز هویت، رمزگذاری یا امضای دیجیتال به کار میروند.
RPKها بهطور پیشفرض در کلاینتها و سرورهای TLS غیرفعال هستند و این مشکل تنها زمانی بروز میکند که کلاینتهای TLS به طور صریح استفاده از RPK را برای سرور فعال کنند و سرور نیز به نوبه خود ارسال یک RPK را به جای زنجیره گواهی X.509 فعال سازد.
بررسی آسیب پذیری OpenSSL
CVE-2024-12797 ناشی از مدیریت نادرست شکستهای احراز هویت سرور در طول تبادل handshake ها هنگام استفاده از کلیدهای عمومی خام RFC7250 است. بهطور خاص، کلاینتهایی که از حالت تأیید SSL_VERIFY_PEER استفاده میکنند، ممکن است نتوانند تشخیص دهند که یک سرور، احراز هویت نشده است زیرا تبادل handshake بهدرستی خاتمه نیافته است. این مسئله باعث میشود که اتصالات در برابر حملات MitM یا “مهاجمی در وسط”، زمانی که تأیید RPK با شکست مواجه شود، آسیب پذیر باشند.
همانطور که اشاره شد، RPKها بهطور پیشفرض در کلاینتها و سرورهای TLS غیرفعال هستند، به این معنا که این مشکل تنها سیستمهایی را تحت تأثیر قرار میدهد که در آنها قابلیت RPK بهطور صریح توسط هر دو طرف فعال شده باشد. این مشکل از زمان پیادهسازی اولیه پشتیبانی از RPK در OpenSSL 3.2 معرفی شده است.
OpenSSL طی مشاورهای اعلام کرد که؛ ” کلاینتهایی که کلیدهای عمومی خام سرور را فعال کردهاند، میتوانند متوجه شوند که تأیید کلید عمومی خام با فراخوانی SSL_get_verify_result() شکست خورده است. این تابع، وضعیت تأیید اعتبار سرور را بررسی میکند و در صورت شکست تأیید، به کلاینتها این امکان را میدهد که متوجه مشکل شوند و اقدامات لازم را برای جلوگیری از آسیب پذیریها انجام دهند. در نتیجه، کلاینتهایی که این اقدام را انجام دهند و به درستی عمل کنند، از تأثیر این آسیب پذیری مصون خواهند ماند. “
این نقص میتواند به هکرها این امکان را بدهد که ارتباطات بین کلاینتها و سرورها را در سناریوهایی که شکست در تأیید اعتبار بدون توجه باقی میماند، قطع یا دستکاری کنند. با این حال، کلاینتهایی که بهطور صریح SSL_get_verify_result() را برای بررسی وضعیت تأیید و انجام اقدامات مناسب فراخوانی میکنند، تحت تأثیر قرار نمیگیرند.
نسخههای قدیمیتر OpenSSL همچون 1.1.1، 1.0.2 و ماژولهای FIPS در نسخههای 3.0 تا 3.4 نیز تحت تأثیر این آسیب پذیری قرار ندارند.
کلاینتهای آسیب پذیر آنهایی هستند که به handshake برای شکست تبادل هنگامی که RPK سرور با یکی از کلیدهای عمومی مورد انتظار مطابقت ندارد، وابسته هستند و حالت تأیید آنها روی SSL_VERIFY_PEER تنظیم شده است.
اقدامات امنیتی
پروژه OpenSSL، پچهایی را به منظور رفع این آسیب پذیری منتشر کرده است:
- کاربران OpenSSL 3.4 باید به نسخه 3.4.1 به روزرسانی کنند.
- کاربران OpenSSL 3.3 باید به نسخه 3.3.3 به روزرسانی کنند.
- کاربران OpenSSL 3.2 باید به نسخه 3.2.4 به روزرسانی کنند.
آسیب پذیری CVE-2024-12797 در OpenSSL یک مشکل جدی است که نیاز به توجه و اقدام فوری دارد. با آگاه ماندن و به روزرسانی به موقع میتوان از خود در برابر این حملات محافظت کرد. این اولین آسیب پذیری با شدت بالا است که از فوریه 2023 در OpenSSL فاش میشود و نشان دهنده تمرکز مداوم پروژه بر بهبود امنیت پس از حوادث بزرگ مانند Heartbleed در سال 2014 است.